felix@5019: package de.intevation.flys.importer.parsers; felix@5019: felix@5019: import java.math.BigDecimal; felix@5019: felix@5019: import java.text.NumberFormat; felix@5019: import java.text.ParseException; felix@5019: felix@5019: import java.util.ArrayList; felix@5019: import java.util.HashMap; felix@5019: import java.util.List; felix@5019: import java.util.regex.Matcher; felix@5019: import java.util.regex.Pattern; felix@5019: felix@5019: import org.apache.log4j.Logger; felix@5019: felix@5019: import de.intevation.flys.importer.ImportMorphWidth; felix@5019: import de.intevation.flys.importer.ImportMorphWidthValue; felix@5019: import de.intevation.flys.importer.ImportUnit; felix@5019: felix@5019: /** Parse CSV file that contains official numbers for rivers. */ felix@5019: public class BundesWasserStrassenParser extends LineParser { felix@5019: felix@5019: /** Private logger. */ felix@5019: private static final Logger logger = felix@5019: Logger.getLogger(BundesWasserStrassenParser.class); felix@5019: felix@5019: /** Map from rivernames to Official numbers. */ felix@5019: private HashMap numberMap; felix@5019: felix@5019: felix@5019: public BundesWasserStrassenParser() { felix@5019: numberMap = new HashMap(); felix@5019: } felix@5019: felix@5019: felix@5019: /** No need to reset. */ felix@5019: @Override felix@5019: protected void reset() { felix@5019: } felix@5019: felix@5019: felix@5019: /** No action needed on eof. */ felix@5019: @Override felix@5019: protected void finish() { felix@5019: } felix@5019: felix@5019: felix@5019: /** Handle a line of the bwastr-id file. */ felix@5019: @Override felix@5019: protected void handleLine(int lineNum, String line) { felix@5019: String[] vals = line.split(","); felix@5108: // Try both "," and ";" as separator. felix@5019: if (vals.length != 2) { felix@5108: vals = line.split(";"); felix@5108: if (vals.length != 2) { felix@5108: logger.warn("Invalid bwastr-id line:\n" + line); felix@5108: return; felix@5108: } felix@5019: } felix@5019: try{ felix@5019: String name = unwrap(vals[0].toLowerCase()); felix@5019: String numberStr = unwrap(vals[1]); felix@5019: Long number = Long.valueOf(numberStr); felix@5019: numberMap.put(name, number); felix@5019: } felix@5019: catch (NumberFormatException e) { felix@5019: logger.warn("Invalid number in bwastr-id line:\n" + line); felix@5019: } felix@5019: } felix@5019: felix@5019: felix@5019: /** Get river->official number mapping. */ felix@5019: public HashMap getMap() { felix@5019: return numberMap; felix@5019: } felix@5019: felix@5019: felix@5019: /** Remove leading and trailing quotes. */ felix@5019: protected String unwrap(String input) { felix@5019: if (input.startsWith("\"")) { felix@5019: input = input.substring(1); felix@5019: } felix@5019: if (input.endsWith("\"")) { felix@5019: input = input.substring(0, input.length() - 1); felix@5019: } felix@5019: return input; felix@5019: } felix@5019: } felix@5019: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :