Mercurial > dive4elements > river
changeset 3955:26685b846a29
Let importer handle gappy single bed height values.
flys-backend/trunk@5612 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Thu, 27 Sep 2012 10:23:23 +0000 (2012-09-27) |
parents | ffb2aac9a5b6 |
children | 323063c0f7a0 |
files | flys-backend/ChangeLog flys-backend/src/main/java/de/intevation/flys/importer/parsers/BedHeightEpochParser.java flys-backend/src/main/java/de/intevation/flys/importer/parsers/BedHeightSingleParser.java |
diffstat | 3 files changed, 46 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/flys-backend/ChangeLog Thu Sep 27 10:16:49 2012 +0000 +++ b/flys-backend/ChangeLog Thu Sep 27 10:23:23 2012 +0000 @@ -1,3 +1,11 @@ +2012-09-27 Felix Wolfsteller <felix.wolfsteller@intevation.de> + + * src/main/java/de/intevation/flys/importer/parsers/BedHeightSingleParser.java: + Handle csv lines with just the km set ("gaps"). + + * src/main/java/de/intevation/flys/importer/parsers/BedHeightEpochParser.java: + Added TODO, as more changes towards fix for issue863 are necessary. + 2012-09-27 Felix Wolfsteller <felix.wolfsteller@intevation.de> * src/main/java/de/intevation/flys/importer/parsers/BedHeightParser.java,
--- a/flys-backend/src/main/java/de/intevation/flys/importer/parsers/BedHeightEpochParser.java Thu Sep 27 10:16:49 2012 +0000 +++ b/flys-backend/src/main/java/de/intevation/flys/importer/parsers/BedHeightEpochParser.java Thu Sep 27 10:23:23 2012 +0000 @@ -29,6 +29,7 @@ @Override protected void handleDataLine(ImportBedHeight obj, String line) { + // TODO issue863: find gaps in data, analogous to 'single' case. String[] values = line.split(SEPERATOR_CHAR); if (values == null || values.length < 2 || values[0].length() == 0 || values[1].length() == 0) {
--- a/flys-backend/src/main/java/de/intevation/flys/importer/parsers/BedHeightSingleParser.java Thu Sep 27 10:16:49 2012 +0000 +++ b/flys-backend/src/main/java/de/intevation/flys/importer/parsers/BedHeightSingleParser.java Thu Sep 27 10:23:23 2012 +0000 @@ -1,13 +1,9 @@ package de.intevation.flys.importer.parsers; - import java.math.BigDecimal; import java.text.ParseException; - - - import org.apache.log4j.Logger; import de.intevation.flys.importer.ImportBedHeight; @@ -29,19 +25,54 @@ + /** + * Create ImportBedHeightSingleValue from a line of csv file, add + * it to the ImportBedHeight. + */ @Override protected void handleDataLine(ImportBedHeight obj, String line) { String[] values = line.split(SEPERATOR_CHAR); - if (values == null || values.length < 6) { + if (values == null || (values.length != 1 && values.length < 6)) { //log.warn("BSP: Error while parsing data line: '" + line + "'"); return; } + BigDecimal km; + + try { + km = new BigDecimal(nf.parse(values[0]).doubleValue()); + } + catch (ParseException e) { + // We expect a lot of ";;;;;;" lines. + //log.warn("BSP: Error while parsing km of data row.", e); + return; + } + + // Handle gaps like "10,0;;;;;". + if (values.length == 1) { + ImportBedHeightSingleValue value = new ImportBedHeightSingleValue( + (ImportBedHeightSingle) obj, + km, + null, null, null, null, null); + log.debug("Added a gap/null row"); + obj.addValue(value); + return; + } + + // Because we cannot enforce consistency of values with complete data + // via null constraints in the database (as there are "gap" values), + // do this checks manually. + if (values[3].length() == 0 || values[4].length() == 0 + || values[5].length() == 0) { + //log.warn("BSP: Error while parsing data row (manual null constraint violated)."); + return; + } + try { ImportBedHeightSingleValue value = new ImportBedHeightSingleValue( (ImportBedHeightSingle) obj, - new BigDecimal(nf.parse(values[0]).doubleValue()), + km, new BigDecimal(nf.parse(values[1]).doubleValue()), new BigDecimal(nf.parse(values[2]).doubleValue()), new BigDecimal(nf.parse(values[3]).doubleValue()),