what is the best way to read csv data with two headers.
try (CSVReader csvReader = new CSVReaderBuilder(new InputStreamReader(file.getInputStream()))
.withCSVParser(new CSVParserBuilder().withSeparator(',').build())
.build()) {
HeaderColumnNameMappingStrategy<TemperatureData> strategy = new HeaderColumnNameMappingStrategy<>();
strategy.setType(TemperatureData.class);
CsvToBean<TemperatureData> csvToBean = new CsvToBeanBuilder<TemperatureData>(csvReader)
.withMappingStrategy(strategy)
.withSkipLines(2)
.build();
List<TemperatureData> dataList = csvToBean.parse();
Map<String, List<TemperatureData>> groupedData = new HashMap<>();
for (TemperatureData data : dataList) {
String key = data.getOC062();
if (!groupedData.containsKey(key)) {
groupedData.put(key, new ArrayList<>());
}
groupedData.get(key).add(data);
}
for (Map.Entry<String, List<TemperatureData>> entry : groupedData.entrySet()) {
System.out.println("Key: " + entry.getKey());
for (TemperatureData data : entry.getValue()) {
System.out.println(data);
}
System.out.println("------------------------------");
}
temdata class
@CsvBindByName(column = "OC(062)")
private String OC78;
@CsvBindByName(column = "IC(012)")
private String IC;
@CsvBindByName(column = "Date")
private String date;
@CsvBindByName(column = "Time")
private String time;
@CsvBindByName(column = "Counter")
private String counter;
@CsvBindByName(column = "TH1")
private String _TH1;
@CsvBindByName(column = "TH2")
private String _TH2;
@CsvBindByName(column = "TH3")
private String _TH3;
@CsvBindByName(column = "IC S")
private String _ICS;
@Override
public String toString() {
return "CsvData{" +
", OC='" + OC62 + '\'' +
", IC='" + IC + '\'' +
", date='" + date + '\'' +
", time='" + time + '\'' +
", counter='" + counter + '\'' +
", THHS='" + _THHS + '\'' +
", TH1='" + _TH1 + '\'' +
", TH2='" + _TH2 + '\'' +
", TH3='" + _TH3 + '\'' +
", ICS='" + _ICS + '\'' +
'}';
}
but in this way i get only second header with the value
output
CsvData{, OC='THHS5', IC='IC S', date='null', time='null', counter='null', THHS='null', TH1='null', TH2='null', TH3='null', ICS='null'} CsvData{, OC=' 18.1', IC='Stop', date='null', time='null', counter='null', THHS='null', TH1='null', TH2='null', TH3='null', ICS='null'}
csv data
, , ,OC(062),OC(062),OC(062),OC(062),OC(062),OC(062),OC(062),OC(062),OC(062),OC(062),OC(062),IC(012),IC(012),IC(012),IC(012),IC(013),IC(013),IC(013),IC(013), Date,Time,Counter,63HS1,TH11,TH5,TH6,TH7,TH8,THHS,63LS,Tc,Te,THHS5,TH1,TH2,TH3,IC S,TH1,TH2,TH3,IC S, 3/7/2024,12:11:26,1, 29.8, 99.1, 0.3, 6.6, 1.9, 4.7, 30.1, 7.1, 49.3, 0.0, 18.1, 16.0, 49.1, 49.1,Stop, 16.5, 49.1, 48.5,Stop, 3/7/2024,12:12:26,2, 29.5, 99.6, 0.0, 6.6, 1.5, 4.5, 30.4, 7.1, 49.1, 0.0, 18.1, 16.0, 48.5, 49.1,Stop, 16.5, 49.1, 48.5,Stop,