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

http://dive4elements.wald.intevation.org