annotate backend/src/main/java/org/dive4elements/river/importer/parsers/BundesWasserStrassenParser.java @ 6328:53d08f33d094

Backend: Moved guessing of main values and there time intervals out of the STA parser. Same come will be useful to extend the WST parser to better handle official lines.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 13 Jun 2013 17:15:34 +0200
parents 4c3ccf2b0304
children 9d2e69f971f5
rev   line source
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5844
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5992
4c3ccf2b0304 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5844
diff changeset
6 * documentation coming with Dive4Elements River for details.
5844
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4dd33b86dc61 Added header to river backend.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5829
18619c1e7c2a Repaired internal references.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5828
diff changeset
9 package org.dive4elements.river.importer.parsers;
5019
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
10
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
11 import java.util.HashMap;
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
12
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
13 import org.apache.log4j.Logger;
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
14
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
15 /** Parse CSV file that contains official numbers for rivers. */
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
16 public class BundesWasserStrassenParser extends LineParser {
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
17
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
18 /** Private logger. */
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
19 private static final Logger logger =
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
20 Logger.getLogger(BundesWasserStrassenParser.class);
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
21
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
22 /** Map from rivernames to Official numbers. */
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
23 private HashMap<String,Long> numberMap;
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
24
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
25
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
26 public BundesWasserStrassenParser() {
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
27 numberMap = new HashMap<String,Long>();
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
28 }
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 /** No need to reset. */
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
32 @Override
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
33 protected void reset() {
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
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
37 /** No action needed on eof. */
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
38 @Override
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
39 protected void finish() {
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
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
43 /** Handle a line of the bwastr-id file. */
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
44 @Override
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
45 protected void handleLine(int lineNum, String line) {
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
46 String[] vals = line.split(",");
5108
cf50783542a1 BundesWasserStrassenParser: Accept ',' and ';' as separator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5019
diff changeset
47 // Try both "," and ";" as separator.
5019
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
48 if (vals.length != 2) {
5108
cf50783542a1 BundesWasserStrassenParser: Accept ',' and ';' as separator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5019
diff changeset
49 vals = line.split(";");
cf50783542a1 BundesWasserStrassenParser: Accept ',' and ';' as separator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5019
diff changeset
50 if (vals.length != 2) {
cf50783542a1 BundesWasserStrassenParser: Accept ',' and ';' as separator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5019
diff changeset
51 logger.warn("Invalid bwastr-id line:\n" + line);
cf50783542a1 BundesWasserStrassenParser: Accept ',' and ';' as separator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5019
diff changeset
52 return;
cf50783542a1 BundesWasserStrassenParser: Accept ',' and ';' as separator.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5019
diff changeset
53 }
5019
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
54 }
5148
3d01658d9c9c Removed obsolete imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5108
diff changeset
55 try {
5019
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
56 String name = unwrap(vals[0].toLowerCase());
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
57 String numberStr = unwrap(vals[1]);
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
58 Long number = Long.valueOf(numberStr);
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
59 numberMap.put(name, number);
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
60 }
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
61 catch (NumberFormatException e) {
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
62 logger.warn("Invalid number in bwastr-id line:\n" + line);
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
63 }
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
5148
3d01658d9c9c Removed obsolete imports.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5108
diff changeset
67 /** Get river -&gt; official number mapping. */
5019
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
68 public HashMap<String,Long> getMap() {
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
69 return numberMap;
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
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
73 /** Remove leading and trailing quotes. */
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
74 protected String unwrap(String input) {
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
75 if (input.startsWith("\"")) {
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
76 input = input.substring(1);
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 if (input.endsWith("\"")) {
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
79 input = input.substring(0, input.length() - 1);
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
80 }
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
81 return input;
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 }
c872249ec9a9 Added BundesWasserStrassenParser.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
84 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org