Mercurial > dive4elements > river
comparison backend/src/main/java/org/dive4elements/river/importer/parsers/BundesWasserStrassenParser.java @ 7730:e1b831fe435a slt-simplify-cross-sections
Merged default into slt-simplify-cross-sections branch and updated package and class names.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Mon, 20 Jan 2014 14:04:20 +0100 |
parents | 4c3ccf2b0304 |
children | 9d2e69f971f5 |
comparison
equal
deleted
inserted
replaced
5084:ca45dd039b54 | 7730:e1b831fe435a |
---|---|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde | |
2 * Software engineering by Intevation GmbH | |
3 * | |
4 * This file is Free Software under the GNU AGPL (>=v3) | |
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the | |
6 * documentation coming with Dive4Elements River for details. | |
7 */ | |
8 | |
9 package org.dive4elements.river.importer.parsers; | |
10 | |
11 import java.util.HashMap; | |
12 | |
13 import org.apache.log4j.Logger; | |
14 | |
15 /** Parse CSV file that contains official numbers for rivers. */ | |
16 public class BundesWasserStrassenParser extends LineParser { | |
17 | |
18 /** Private logger. */ | |
19 private static final Logger logger = | |
20 Logger.getLogger(BundesWasserStrassenParser.class); | |
21 | |
22 /** Map from rivernames to Official numbers. */ | |
23 private HashMap<String,Long> numberMap; | |
24 | |
25 | |
26 public BundesWasserStrassenParser() { | |
27 numberMap = new HashMap<String,Long>(); | |
28 } | |
29 | |
30 | |
31 /** No need to reset. */ | |
32 @Override | |
33 protected void reset() { | |
34 } | |
35 | |
36 | |
37 /** No action needed on eof. */ | |
38 @Override | |
39 protected void finish() { | |
40 } | |
41 | |
42 | |
43 /** Handle a line of the bwastr-id file. */ | |
44 @Override | |
45 protected void handleLine(int lineNum, String line) { | |
46 String[] vals = line.split(","); | |
47 // Try both "," and ";" as separator. | |
48 if (vals.length != 2) { | |
49 vals = line.split(";"); | |
50 if (vals.length != 2) { | |
51 logger.warn("Invalid bwastr-id line:\n" + line); | |
52 return; | |
53 } | |
54 } | |
55 try { | |
56 String name = unwrap(vals[0].toLowerCase()); | |
57 String numberStr = unwrap(vals[1]); | |
58 Long number = Long.valueOf(numberStr); | |
59 numberMap.put(name, number); | |
60 } | |
61 catch (NumberFormatException e) { | |
62 logger.warn("Invalid number in bwastr-id line:\n" + line); | |
63 } | |
64 } | |
65 | |
66 | |
67 /** Get river -> official number mapping. */ | |
68 public HashMap<String,Long> getMap() { | |
69 return numberMap; | |
70 } | |
71 | |
72 | |
73 /** Remove leading and trailing quotes. */ | |
74 protected String unwrap(String input) { | |
75 if (input.startsWith("\"")) { | |
76 input = input.substring(1); | |
77 } | |
78 if (input.endsWith("\"")) { | |
79 input = input.substring(0, input.length() - 1); | |
80 } | |
81 return input; | |
82 } | |
83 } | |
84 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |