Mercurial > dive4elements > river
comparison flys-backend/src/main/java/de/intevation/flys/importer/parsers/BundesWasserStrassenParser.java @ 5019:c872249ec9a9
Added BundesWasserStrassenParser.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Tue, 19 Feb 2013 12:01:49 +0100 |
parents | |
children | cf50783542a1 |
comparison
equal
deleted
inserted
replaced
5018:e939098ee272 | 5019:c872249ec9a9 |
---|---|
1 package de.intevation.flys.importer.parsers; | |
2 | |
3 import java.math.BigDecimal; | |
4 | |
5 import java.text.NumberFormat; | |
6 import java.text.ParseException; | |
7 | |
8 import java.util.ArrayList; | |
9 import java.util.HashMap; | |
10 import java.util.List; | |
11 import java.util.regex.Matcher; | |
12 import java.util.regex.Pattern; | |
13 | |
14 import org.apache.log4j.Logger; | |
15 | |
16 import de.intevation.flys.importer.ImportMorphWidth; | |
17 import de.intevation.flys.importer.ImportMorphWidthValue; | |
18 import de.intevation.flys.importer.ImportUnit; | |
19 | |
20 /** Parse CSV file that contains official numbers for rivers. */ | |
21 public class BundesWasserStrassenParser extends LineParser { | |
22 | |
23 /** Private logger. */ | |
24 private static final Logger logger = | |
25 Logger.getLogger(BundesWasserStrassenParser.class); | |
26 | |
27 /** Map from rivernames to Official numbers. */ | |
28 private HashMap<String,Long> numberMap; | |
29 | |
30 | |
31 public BundesWasserStrassenParser() { | |
32 numberMap = new HashMap<String,Long>(); | |
33 } | |
34 | |
35 | |
36 /** No need to reset. */ | |
37 @Override | |
38 protected void reset() { | |
39 } | |
40 | |
41 | |
42 /** No action needed on eof. */ | |
43 @Override | |
44 protected void finish() { | |
45 } | |
46 | |
47 | |
48 /** Handle a line of the bwastr-id file. */ | |
49 @Override | |
50 protected void handleLine(int lineNum, String line) { | |
51 String[] vals = line.split(","); | |
52 if (vals.length != 2) { | |
53 logger.warn("Invalid bwastr-id line:\n" + line); | |
54 return; | |
55 } | |
56 try{ | |
57 String name = unwrap(vals[0].toLowerCase()); | |
58 String numberStr = unwrap(vals[1]); | |
59 Long number = Long.valueOf(numberStr); | |
60 numberMap.put(name, number); | |
61 } | |
62 catch (NumberFormatException e) { | |
63 logger.warn("Invalid number in bwastr-id line:\n" + line); | |
64 } | |
65 } | |
66 | |
67 | |
68 /** Get river->official number mapping. */ | |
69 public HashMap<String,Long> getMap() { | |
70 return numberMap; | |
71 } | |
72 | |
73 | |
74 /** Remove leading and trailing quotes. */ | |
75 protected String unwrap(String input) { | |
76 if (input.startsWith("\"")) { | |
77 input = input.substring(1); | |
78 } | |
79 if (input.endsWith("\"")) { | |
80 input = input.substring(0, input.length() - 1); | |
81 } | |
82 return input; | |
83 } | |
84 } | |
85 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |