Mercurial > dive4elements > river
view flys-backend/src/main/java/de/intevation/flys/importer/parsers/BedHeightSingleParser.java @ 4768:99f9e371371b
Move distance calculation to Coordinate class. Use inheritance instead of composition in Anchor class. Made Anchor class static. Use epsilon equal comparision when checking for same station: Boy, do you ever learn that sharp equal comparison of doubles is not a clever idea!?
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Fri, 04 Jan 2013 15:35:51 +0100 |
parents | 323063c0f7a0 |
children | 84beabb3897c |
line wrap: on
line source
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; import de.intevation.flys.importer.ImportBedHeightSingle; import de.intevation.flys.importer.ImportBedHeightSingleValue; public class BedHeightSingleParser extends BedHeightParser { private static final Logger log = Logger.getLogger(BedHeightSingleParser.class); @Override protected ImportBedHeight newImportBedHeight(String description) { return new ImportBedHeightSingle(description); } /** * 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 != 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); 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, km, new BigDecimal(nf.parse(values[1]).doubleValue()), new BigDecimal(nf.parse(values[2]).doubleValue()), new BigDecimal(nf.parse(values[3]).doubleValue()), new BigDecimal(nf.parse(values[4]).doubleValue()), new BigDecimal(nf.parse(values[5]).doubleValue()) ); obj.addValue(value); } catch (ParseException e) { log.warn("BSP: Error while parsing data row.", e); } } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :