# HG changeset patch # User Tom Gottfried # Date 1383252964 -3600 # Node ID 1890bd524d270434df3534c544909ff21c0f208a # Parent e327492ba9d00f0ce72bcfa19c8d133fd34e2a48 WST-Parser: revert the assumption of only complete columns. diff -r e327492ba9d0 -r 1890bd524d27 backend/doc/documentation/de/importer-hydr-morph.tex --- a/backend/doc/documentation/de/importer-hydr-morph.tex Thu Oct 31 19:16:42 2013 +0100 +++ b/backend/doc/documentation/de/importer-hydr-morph.tex Thu Oct 31 21:56:04 2013 +0100 @@ -403,10 +403,6 @@ \\Die Stationen in einer WST-Datei sind nicht konsequent auf- oder absteigend geordnet. Die Datei wird verworfen. -\textbf{WST: number of columns is less than expected. File rejected.} -\\Die Anzahl der Spalten in einer Zeile einer WST-Datei stimmt nicht -mit der Angabe im Datei-Kopf überein. Die Datei wird verworfen. - \textbf{File 'XYZ' is broken!} \\Die Datei XYZ ist inkonsistent und führt zu Fehlern. diff -r e327492ba9d0 -r 1890bd524d27 backend/src/main/java/org/dive4elements/river/importer/parsers/WstParser.java --- a/backend/src/main/java/org/dive4elements/river/importer/parsers/WstParser.java Thu Oct 31 19:16:42 2013 +0100 +++ b/backend/src/main/java/org/dive4elements/river/importer/parsers/WstParser.java Thu Oct 31 21:56:04 2013 +0100 @@ -188,8 +188,7 @@ // handle Q-lines if (line.startsWith("*\u001f")) { - BigDecimal [] data = null; - data = parseLineAsDouble(line, columnCount, false, true); + BigDecimal [] data = parseLineAsDouble(line, columnCount, false, true); if (aktAbfluesse != null) { // add Q-ranges obtained from previous lines if (kmHist1 != null && kmHist2 != null @@ -202,15 +201,16 @@ } // obtain Q-values from current line - aktAbfluesse = new BigDecimal[columnCount]; + aktAbfluesse = new BigDecimal[data.length]; log.debug("new q range: " + columnCount); - for (int i = 0; i < Math.min(columnCount, data.length); ++i) { + for (int i = 0; i < data.length; ++i) { if (data[i] != null) { log.debug(" column: " + data[i]); aktAbfluesse[i] = data[i]; } } + // remember Q-values from first Q-line for header generation if (firstAbfluesse == null) { firstAbfluesse = (BigDecimal [])aktAbfluesse.clone(); } @@ -299,7 +299,8 @@ if (lsBezeichner[i] == null || lsBezeichner[i].length() == 0) { // generate alternative column names - double q = firstAbfluesse[i].doubleValue(); + double q = firstAbfluesse.length > i ? + firstAbfluesse[i].doubleValue() : 0d; if (q < 0.001) { lsBezeichner[i] = ""; @@ -329,8 +330,7 @@ columnHeaderChecked = true; } - BigDecimal [] data = null; - data = parseLineAsDouble(line, columnCount, true, false); + BigDecimal [] data = parseLineAsDouble(line, columnCount, true, false); BigDecimal kaem = data[0]; @@ -363,7 +363,7 @@ } // extract values - for (int i = 0; i < columnCount; ++i) { + for (int i = 0; i < data.length - 1; ++i) { addValue(kaem, data[i+1], i); } @@ -533,8 +533,7 @@ for (int i = 0; i < tokenCount; ++i) { pos += 9; if (pos >= line.length()) { - throw new ParseException( - "WST: number of columns is less than expected. File rejected."); + break; } strings.add(line.substring(pos, Math.min(pos + 8, line.length())));