Mercurial > dive4elements > river
view flys-backend/src/main/java/de/intevation/flys/importer/PegelGltParser.java @ 757:c19d4c643526
River: add method to find gauge by its station position.
flys-backend/trunk@2090 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 08 Jun 2011 19:03:44 +0000 |
parents | d37ccb04ab5d |
children |
line wrap: on
line source
package de.intevation.flys.importer; import java.io.File; import java.util.List; import java.util.ArrayList; import java.io.IOException; import java.io.LineNumberReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.math.BigDecimal; import org.apache.log4j.Logger; import de.intevation.flys.utils.FileTools; public class PegelGltParser { private static Logger log = Logger.getLogger(PegelGltParser.class); public static final String ENCODING = "ISO-8859-1"; public static final String KM = "km:"; protected List<ImportGauge> gauges; public PegelGltParser() { gauges = new ArrayList<ImportGauge>(); } public List<ImportGauge> getGauges() { return gauges; } public void parse(File file) throws IOException { File parent = file.getParentFile(); log.info("parsing GLT file '" + file + "'"); LineNumberReader in = null; try { in = new LineNumberReader( new InputStreamReader( new FileInputStream(file), ENCODING)); String line = null; while ((line = in.readLine()) != null) { if ((line = line.trim()).length() == 0) { continue; } int kmPos = line.indexOf(KM); if (kmPos < 0) { log.warn("no gauge found in line " + in.getLineNumber()); continue; } String gaugeName = line.substring(0, kmPos).trim(); log.info("Found gauge '" + gaugeName + "'"); line = line.substring(kmPos + KM.length()).trim(); String [] parts = line.split("\\s+"); if (parts.length < 4) { log.warn("line " + in.getLineNumber() + " has not enough columns"); continue; } BigDecimal from = new BigDecimal(parts[0].replace(",", ".")); BigDecimal to = new BigDecimal(parts[1].replace(",", ".")); if (from.compareTo(from) > 0) { BigDecimal t = from; from = to; to = t; } ImportRange range = new ImportRange(from, to); File staFile = FileTools.repair(new File(parent, parts[2])); File atFile = FileTools.repair(new File(parent, parts[3])); if (log.isDebugEnabled()) { log.debug("\tfrom: " + from); log.debug("\tto: " + to); log.debug("\tsta: " + staFile); log.debug("\tat: " + atFile); } gauges.add(new ImportGauge(range, staFile, atFile)); } } finally { if (in != null) { in.close(); } } } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :