Mercurial > dive4elements > river
view flys-backend/src/main/java/de/intevation/flys/importer/parsers/FlowVelocityMeasurementParser.java @ 3797:0f99e9f1a2ca
Importer: Added flag to invert skipping behaviour by default. Makes importing single features much easier.
flys-backend/trunk@5452 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 13 Sep 2012 10:53:34 +0000 |
parents | ed13816047b3 |
children | f63b39799d2d |
line wrap: on
line source
package de.intevation.flys.importer.parsers; import de.intevation.flys.importer.ImportFlowVelocityMeasurement; import de.intevation.flys.importer.ImportFlowVelocityMeasurementValue; import java.math.BigDecimal; import java.text.DateFormat; import java.text.NumberFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; public class FlowVelocityMeasurementParser extends LineParser { private static final Logger log = Logger.getLogger(FlowVelocityMeasurementParser.class); private static final NumberFormat nf = NumberFormat.getInstance(DEFAULT_LOCALE); private static final DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); private List<ImportFlowVelocityMeasurement> measurements; private ImportFlowVelocityMeasurement current; public FlowVelocityMeasurementParser() { measurements = new ArrayList<ImportFlowVelocityMeasurement>(); } public List<ImportFlowVelocityMeasurement> getMeasurements() { return measurements; } @Override protected void reset() { current = new ImportFlowVelocityMeasurement(); } @Override protected void finish() { measurements.add(current); } @Override protected void handleLine(String line) { if (line.startsWith(START_META_CHAR)) { handleMetaLine(stripMetaLine(line)); } else { handleDataLine(line); } } public void handleMetaLine(String line) { line = line.replace(";", ""); current.setDescription(line); } public void handleDataLine(String line) { String[] cols = line.split(SEPERATOR_CHAR); if (cols.length < 8) { log.warn("skip invalid data line: '" + line + "'"); return; } try { double km = nf.parse(cols[1]).doubleValue(); double w = nf.parse(cols[5]).doubleValue(); double q = nf.parse(cols[6]).doubleValue(); double v = nf.parse(cols[7]).doubleValue(); String timestr = cols[3] + " " + cols[4]; String description = cols.length > 8 ? cols[8] : null; current.addValue(new ImportFlowVelocityMeasurementValue( df.parse(timestr), new BigDecimal(km), new BigDecimal(w), new BigDecimal(q), new BigDecimal(v), description )); } catch (ParseException pe) { log.warn("Error while parsing flow velocity values.", pe); } } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :