Open edigonzales opened 4 years ago
Nicht reproduzierbar. Kann vom CsvReader korrekt gelesen werden:
mocheckso_errors.Topic.Class1 oid o2 {BFSNr 2545, DatasetID 9BD80A80781C6343B868B50C7B86BBCC, DatasetName 254500.itf, ErrorCategory error, ErrorCount 1, ErrorDescription LFP3 muss die gleichen Attributwerte wie der Hoheitsgrenzpunkt haben, ErrorID CH030701, ErrorX 2612264.014, ErrorY 1232538.75, ILModel DM01AVSO24LV95, ILTable LFP3, ILTopic FixpunkteKategorie3, Kt SO, RICSDate 20201002, RICSProfile all,data_forward, RICSService MOCHECKSO}
Hast du die gleichen Parameter verwendet? Delimiter, Separator, encoding? Bist du auf Windows?
CsvReader reader=new CsvReader(new File(TEST_IN,"mocheckso_errors.csv"));
reader.setFirstLineIsHeader(true);
reader.setValueSeparator('\t');
assertTrue(reader.read() instanceof StartTransferEvent);
assertTrue(reader.read() instanceof StartBasketEvent);
IoxEvent event = reader.read();
while(event instanceof ObjectEvent){
IomObject iomObj=((ObjectEvent)event).getIomObject();
System.out.println(iomObj);
event = reader.read();
}
Und ja: Windows.
Funktioniert auch unter macOS.
Funktioniert mit sogis/gretl-runtime Image. In sep
ist ein Copy/Paste-Tabulator aus Notepad++.
task debugCsvReader(dependsOn: 'downloadCsv') {
doLast {
CsvReader reader=new CsvReader(new File(pathToTempFolder.toString()+"/mocheckso_errors.csv"));
reader.setFirstLineIsHeader(true);
char sep = ' '
reader.setValueSeparator(sep);
reader.read()
reader.read()
IoxEvent event = reader.read();
while(event instanceof ObjectEvent){
IomObject iomObj=((ObjectEvent)event).getIomObject();
System.out.println(iomObj);
event = reader.read();
}
}
}
Geht auch: char sep = '\t'
Problem ist folgendes:
1) GRETL-CsvValidator-Task: valueSeparator = '\t'
2) CsvValidator-Task speichert Separator in Settings-Klasse: https://github.com/sogis/gretl/blob/master/gretl/src/main/java/ch/so/agi/gretl/tasks/CsvValidator.java#L65
3) Settings.setValue()
verwendet StringUtility.purge()
Methode: https://github.com/claeis/ehibasics/blob/master/src/ch/ehi/basics/settings/Settings.java#L59
4) StringUtility.purge()
trimmed den String mittels String.trim()
: https://github.com/claeis/ehibasics/blob/master/src/ch/ehi/basics/tools/StringUtility.java#L27 Das entfernt auch Tabulatoren.
Eventuell auch eine Konstellation von unterschiedlichen Betriebssystem und exotischen Encodings. Sollten Tabs grundsätzlich funktionieren?
Auch habe ich versucht den Tab aus Notepad++ zu kopieren, was aber auch nicht funktioniert. Anbei die CSV-Datei.
mocheckso_errors.zip