Mercurial > dive4elements > river
view flys-backend/src/main/java/de/intevation/flys/importer/parsers/FlowVelocityMeasurementParser.java @ 5570:91a2ddffea47
Write filename as description instead of the header meta line in flow velocity
measurements.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Fri, 05 Apr 2013 11:18:16 +0200 |
parents | b3dd14fc13a6 |
children |
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() { current.setDescription(fileName); measurements.add(current); } @Override protected void handleLine(int lineNum, String line) { if (line.startsWith(START_META_CHAR)) { handleMetaLine(stripMetaLine(line)); } else { handleDataLine(line); } } public void handleMetaLine(String 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("Unparseable flow velocity values:", pe); } } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :