comparison backend/src/main/java/org/dive4elements/river/importer/parsers/PegelGltParser.java @ 5838:5aa05a7a34b7

Rename modules to more fitting names.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 15:23:37 +0200
parents flys-backend/src/main/java/org/dive4elements/river/importer/parsers/PegelGltParser.java@18619c1e7c2a
children 4dd33b86dc61
comparison
equal deleted inserted replaced
5837:d9901a08d0a6 5838:5aa05a7a34b7
1 package org.dive4elements.river.importer.parsers;
2
3 import java.io.File;
4
5 import java.util.List;
6 import java.util.ArrayList;
7
8 import java.io.IOException;
9 import java.io.LineNumberReader;
10 import java.io.FileInputStream;
11 import java.io.InputStreamReader;
12
13 import java.math.BigDecimal;
14
15 import org.apache.log4j.Logger;
16
17 import org.dive4elements.artifacts.common.utils.FileTools;
18
19 import org.dive4elements.river.importer.ImportGauge;
20 import org.dive4elements.river.importer.ImportRange;
21
22 public class PegelGltParser
23 {
24 private static Logger log = Logger.getLogger(PegelGltParser.class);
25
26 public static final String ENCODING = "ISO-8859-1";
27
28 public static final String KM = "km:";
29
30 protected List<ImportGauge> gauges;
31
32 public PegelGltParser() {
33 gauges = new ArrayList<ImportGauge>();
34 }
35
36 public List<ImportGauge> getGauges() {
37 return gauges;
38 }
39
40 public void parse(File file) throws IOException {
41
42 File parent = file.getParentFile();
43
44 log.info("parsing GLT file '" + file + "'");
45 LineNumberReader in = null;
46 try {
47 in =
48 new LineNumberReader(
49 new InputStreamReader(
50 new FileInputStream(file), ENCODING));
51
52 String line = null;
53 while ((line = in.readLine()) != null) {
54 if ((line = line.trim()).length() == 0) {
55 continue;
56 }
57
58 int kmPos = line.indexOf(KM);
59 if (kmPos < 0) {
60 log.warn("GLT: no gauge found in line " + in.getLineNumber());
61 continue;
62 }
63
64 String gaugeName = line.substring(0, kmPos).trim();
65 log.info("Found gauge '" + gaugeName + "'");
66
67 line = line.substring(kmPos + KM.length()).trim();
68
69 String [] parts = line.split("\\s+");
70 if (parts.length < 4) {
71 log.warn("GLT: line " + in.getLineNumber()
72 + " has not enough columns.");
73 continue;
74 }
75
76 BigDecimal from = new BigDecimal(parts[0].replace(",", "."));
77 BigDecimal to = new BigDecimal(parts[1].replace(",", "."));
78 if (from.compareTo(from) > 0) {
79 BigDecimal t = from; from = to; to = t;
80 }
81 ImportRange range = new ImportRange(from, to);
82 File staFile = FileTools.repair(new File(parent, parts[2]));
83 File atFile = FileTools.repair(new File(parent, parts[3]));
84
85 if (log.isDebugEnabled()) {
86 log.debug("\tfrom: " + from);
87 log.debug("\tto: " + to);
88 log.debug("\tsta: " + staFile);
89 log.debug("\tat: " + atFile);
90 }
91
92 gauges.add(new ImportGauge(range, staFile, atFile));
93 }
94 }
95 finally {
96 if (in != null) {
97 in.close();
98 }
99 }
100 }
101 }
102 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org