annotate flys-backend/src/main/java/de/intevation/flys/importer/parsers/BundesWasserStrassenParser.java @ 5108:cf50783542a1

BundesWasserStrassenParser: Accept ',' and ';' as separator.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Wed, 27 Feb 2013 10:33:13 +0100
parents c872249ec9a9
children 3d01658d9c9c
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(",");
5108
cf50783542a1 BundesWasserStrassenParser: Accept ',' and ';' as separator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5019
diff changeset
52 // Try both "," and ";" as separator.
5019
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
53 if (vals.length != 2) {
5108
cf50783542a1 BundesWasserStrassenParser: Accept ',' and ';' as separator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5019
diff changeset
54 vals = line.split(";");
cf50783542a1 BundesWasserStrassenParser: Accept ',' and ';' as separator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5019
diff changeset
55 if (vals.length != 2) {
cf50783542a1 BundesWasserStrassenParser: Accept ',' and ';' as separator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5019
diff changeset
56 logger.warn("Invalid bwastr-id line:\n" + line);
cf50783542a1 BundesWasserStrassenParser: Accept ',' and ';' as separator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5019
diff changeset
57 return;
cf50783542a1 BundesWasserStrassenParser: Accept ',' and ';' as separator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5019
diff changeset
58 }
5019
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
59 }
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
60 try{
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
61 String name = unwrap(vals[0].toLowerCase());
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
62 String numberStr = unwrap(vals[1]);
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
63 Long number = Long.valueOf(numberStr);
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
64 numberMap.put(name, number);
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 catch (NumberFormatException e) {
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
67 logger.warn("Invalid number in bwastr-id line:\n" + line);
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
68 }
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
69 }
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
70
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 /** Get river->official number mapping. */
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
73 public HashMap<String,Long> getMap() {
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
74 return numberMap;
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
75 }
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
76
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
77
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
78 /** Remove leading and trailing quotes. */
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
79 protected String unwrap(String input) {
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
80 if (input.startsWith("\"")) {
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
81 input = input.substring(1);
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
82 }
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
83 if (input.endsWith("\"")) {
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
84 input = input.substring(0, input.length() - 1);
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
85 }
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
86 return input;
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
87 }
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
88 }
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
89 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org