teichmann@5829: package org.dive4elements.river.importer.parsers; felix@5019: felix@5019: import java.util.HashMap; felix@5019: felix@5019: import org.apache.log4j.Logger; 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: } teichmann@5148: 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: teichmann@5148: /** 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 :