Mercurial > dive4elements > river
annotate flys-backend/src/main/java/de/intevation/flys/importer/WstParser.java @ 763:8076f6a689d0
First part of flys/issue18
flys-backend/trunk@2124 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 15 Jun 2011 09:22:00 +0000 |
parents | 677a6fceea6e |
children | 6dc847194625 |
rev | line source |
---|---|
197
c0dcc2357106
Added stub for WST parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.flys.importer; |
c0dcc2357106
Added stub for WST parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
2 |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
3 import java.util.ArrayList; |
489
e960098b1398
Importer: Ignore lines that contain km positions which were found before in the same WST file.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
481
diff
changeset
|
4 import java.util.HashSet; |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
5 |
197
c0dcc2357106
Added stub for WST parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
6 import java.io.File; |
c0dcc2357106
Added stub for WST parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
7 import java.io.IOException; |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
8 import java.io.LineNumberReader; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
9 import java.io.InputStreamReader; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
10 import java.io.FileInputStream; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
11 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
12 import java.text.NumberFormat; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
13 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
14 import org.apache.log4j.Logger; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
15 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
16 import de.intevation.flys.utils.StringUtil; |
197
c0dcc2357106
Added stub for WST parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
17 |
200
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
18 import java.util.regex.Pattern; |
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
19 import java.util.regex.Matcher; |
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
20 |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
21 import java.math.BigDecimal; |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
22 |
197
c0dcc2357106
Added stub for WST parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
23 public class WstParser |
c0dcc2357106
Added stub for WST parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
24 { |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
25 private static Logger log = Logger.getLogger(WstParser.class); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
26 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
27 public static final String COLUMN_BEZ_TEXT = "column-bez-text"; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
28 public static final String COLUMN_BEZ_BREITE = "column-bez-breite"; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
29 public static final String COLUMN_QUELLE = "column-quelle"; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
30 public static final String COLUMN_DATUM = "column-datum"; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
31 |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
32 public static final BigDecimal UNDEFINED_ZERO = |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
33 new BigDecimal(0.0); |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
34 public static final BigDecimal MIN_RANGE = |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
35 new BigDecimal(-Double.MAX_VALUE); |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
36 public static final BigDecimal MAX_RANGE = |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
37 new BigDecimal(Double.MAX_VALUE); |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
38 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
39 public static final String ENCODING = "ISO-8859-1"; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
40 |
200
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
41 public static final Pattern UNIT_COMMENT = |
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
42 Pattern.compile("\\*\\s*[kK][mM]\\s+(.+)"); |
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
43 |
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
44 public static final Pattern UNIT = |
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
45 Pattern.compile("[^\\[]*\\[([^]]+)\\].*"); |
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
46 |
753
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
47 public static final BigDecimal INTERVAL_GAP = |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
48 new BigDecimal(0.00001); |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
49 |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
50 protected ImportWst wst; |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
51 |
753
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
52 protected ImportRange lastRange; |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
53 |
197
c0dcc2357106
Added stub for WST parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
54 public WstParser() { |
c0dcc2357106
Added stub for WST parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
55 } |
c0dcc2357106
Added stub for WST parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
56 |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
57 public ImportWst getWst() { |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
58 return wst; |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
59 } |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
60 |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
61 public void setWst(ImportWst wst) { |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
62 this.wst = wst; |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
63 } |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
64 |
197
c0dcc2357106
Added stub for WST parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
65 public void parse(File file) throws IOException { |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
66 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
67 log.info("Parsing WST file '" + file + "'"); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
68 |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
69 wst = new ImportWst(file.getName()); |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
70 |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
71 LineNumberReader in = null; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
72 try { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
73 in = |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
74 new LineNumberReader( |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
75 new InputStreamReader( |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
76 new FileInputStream(file), ENCODING)); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
77 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
78 String input; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
79 boolean first = true; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
80 int columnCount = 0; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
81 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
82 String [] lsBezeichner = null; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
83 String [] langBezeichner = null; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
84 int [] colNaWidths = null; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
85 String [] quellen = null; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
86 String [] daten = null; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
87 |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
88 BigDecimal [] aktAbfluesse = null; |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
89 BigDecimal [] firstAbfluesse = null; |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
90 |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
91 BigDecimal minKm = MAX_RANGE; |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
92 BigDecimal maxKm = MIN_RANGE; |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
93 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
94 boolean columnHeaderChecked = false; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
95 |
200
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
96 String einheit = "Wasserstand [NN + m]"; |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
97 |
489
e960098b1398
Importer: Ignore lines that contain km positions which were found before in the same WST file.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
481
diff
changeset
|
98 HashSet<BigDecimal> kms = new HashSet<BigDecimal>(); |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
99 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
100 while ((input = in.readLine()) != null) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
101 String line = input; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
102 if (first) { // fetch number of columns |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
103 if ((line = line.trim()).length() == 0) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
104 continue; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
105 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
106 try { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
107 columnCount = Integer.parseInt(line); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
108 if (columnCount <= 0) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
109 throw new NumberFormatException( |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
110 "number columns <= 0"); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
111 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
112 log.debug("Number of columns: " + columnCount); |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
113 wst.setNumberColumns(columnCount); |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
114 lsBezeichner = new String[columnCount]; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
115 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
116 catch (NumberFormatException nfe) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
117 log.warn(nfe); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
118 continue; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
119 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
120 first = false; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
121 continue; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
122 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
123 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
124 line = line.replace(',', '.'); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
125 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
126 if (line.startsWith("*\u001f")) { |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
127 BigDecimal [] data = |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
128 parseLineAsDouble(line, columnCount, false, true); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
129 |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
130 if (aktAbfluesse != null) { |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
131 addInterval(minKm, maxKm, aktAbfluesse); |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
132 minKm = MAX_RANGE; |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
133 maxKm = MIN_RANGE; |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
134 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
135 |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
136 aktAbfluesse = new BigDecimal[columnCount]; |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
137 log.debug("new q range: " + columnCount); |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
138 for (int i = 0; i < Math.min(columnCount, data.length); ++i) { |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
139 if (data[i] != null) { |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
140 log.debug(" column: " + data[i]); |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
141 aktAbfluesse[i] = data[i]; |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
142 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
143 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
144 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
145 if (firstAbfluesse == null) { |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
146 firstAbfluesse = (BigDecimal [])aktAbfluesse.clone(); |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
147 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
148 continue; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
149 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
150 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
151 if (line.startsWith("*!")) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
152 String spezial = line.substring(2).trim(); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
153 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
154 if (spezial.length() == 0) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
155 continue; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
156 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
157 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
158 if (spezial.startsWith(COLUMN_BEZ_TEXT)) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
159 spezial = spezial.substring(COLUMN_BEZ_TEXT.length()).trim(); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
160 if (spezial.length() == 0) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
161 continue; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
162 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
163 langBezeichner = StringUtil.splitQuoted(spezial, '"'); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
164 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
165 else if (spezial.startsWith(COLUMN_BEZ_BREITE)) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
166 spezial = spezial.substring(COLUMN_BEZ_BREITE.length()).trim(); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
167 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
168 if (spezial.length() == 0) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
169 continue; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
170 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
171 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
172 String[] split = spezial.split("\\s+"); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
173 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
174 colNaWidths = new int[split.length]; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
175 for (int i=0; i < split.length; i++) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
176 colNaWidths[i] = Integer.parseInt(split[i]); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
177 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
178 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
179 else if (spezial.startsWith(COLUMN_QUELLE)) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
180 if (spezial.length() == 0) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
181 continue; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
182 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
183 quellen = StringUtil.splitQuoted(spezial, '"'); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
184 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
185 else if (spezial.startsWith(COLUMN_DATUM)) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
186 spezial = spezial.substring(COLUMN_DATUM.length()).trim(); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
187 if (spezial.length() == 0) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
188 continue; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
189 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
190 daten = StringUtil.splitQuoted(spezial, '"'); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
191 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
192 continue; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
193 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
194 |
200
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
195 if (line.length() < 11) { |
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
196 continue; |
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
197 } |
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
198 |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
199 if (line.startsWith("*")) { |
200
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
200 Matcher m = UNIT_COMMENT.matcher(line); |
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
201 if (m.matches()) { |
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
202 log.debug("unit comment found"); |
464
d37ccb04ab5d
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
202
diff
changeset
|
203 // XXX: This hack is needed because desktop |
200
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
204 // FLYS is broken figuring out the unit |
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
205 String [] units = m.group(1).split("\\s{2,}"); |
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
206 m = UNIT.matcher(units[0]); |
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
207 einheit = m.matches() ? m.group(1) : units[0]; |
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
208 log.debug("unit: " + einheit); |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
209 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
210 continue; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
211 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
212 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
213 if (firstAbfluesse != null) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
214 if (!columnHeaderChecked) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
215 int unknownCount = 0; |
495
a92da0b3e8e7
Importer: make column names in WST files unique by appending (1), (2) and so on in case of collision
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
490
diff
changeset
|
216 HashSet<String> uniqueColumnNames = |
a92da0b3e8e7
Importer: make column names in WST files unique by appending (1), (2) and so on in case of collision
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
490
diff
changeset
|
217 new HashSet<String>(); |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
218 for (int i = 0; i < lsBezeichner.length; ++i) { |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
219 if (lsBezeichner[i] == null |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
220 || lsBezeichner[i].length() == 0) { |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
221 double q = firstAbfluesse[i].doubleValue(); |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
222 if (q < 0.001) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
223 lsBezeichner[i] = |
200
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
224 "<unbekannt #" + unknownCount + ">"; |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
225 ++unknownCount; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
226 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
227 else { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
228 lsBezeichner[i] = "Q="+format(q); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
229 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
230 } |
495
a92da0b3e8e7
Importer: make column names in WST files unique by appending (1), (2) and so on in case of collision
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
490
diff
changeset
|
231 String candidate = lsBezeichner[i]; |
a92da0b3e8e7
Importer: make column names in WST files unique by appending (1), (2) and so on in case of collision
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
490
diff
changeset
|
232 int collision = 1; |
a92da0b3e8e7
Importer: make column names in WST files unique by appending (1), (2) and so on in case of collision
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
490
diff
changeset
|
233 while (!uniqueColumnNames.add(candidate)) { |
a92da0b3e8e7
Importer: make column names in WST files unique by appending (1), (2) and so on in case of collision
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
490
diff
changeset
|
234 candidate = lsBezeichner[i] + |
a92da0b3e8e7
Importer: make column names in WST files unique by appending (1), (2) and so on in case of collision
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
490
diff
changeset
|
235 " (" + collision + ")"; |
a92da0b3e8e7
Importer: make column names in WST files unique by appending (1), (2) and so on in case of collision
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
490
diff
changeset
|
236 ++collision; |
a92da0b3e8e7
Importer: make column names in WST files unique by appending (1), (2) and so on in case of collision
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
490
diff
changeset
|
237 } |
a92da0b3e8e7
Importer: make column names in WST files unique by appending (1), (2) and so on in case of collision
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
490
diff
changeset
|
238 wst.getColumn(i).setName(candidate); |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
239 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
240 columnHeaderChecked = true; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
241 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
242 |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
243 BigDecimal [] data = |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
244 parseLineAsDouble(line, columnCount, true, false); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
245 |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
246 BigDecimal kaem = data[0]; |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
247 |
489
e960098b1398
Importer: Ignore lines that contain km positions which were found before in the same WST file.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
481
diff
changeset
|
248 if (!kms.add(kaem)) { |
e960098b1398
Importer: Ignore lines that contain km positions which were found before in the same WST file.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
481
diff
changeset
|
249 log.warn( |
e960098b1398
Importer: Ignore lines that contain km positions which were found before in the same WST file.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
481
diff
changeset
|
250 "km " + kaem + |
e960098b1398
Importer: Ignore lines that contain km positions which were found before in the same WST file.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
481
diff
changeset
|
251 " (line " + in.getLineNumber() + |
e960098b1398
Importer: Ignore lines that contain km positions which were found before in the same WST file.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
481
diff
changeset
|
252 ") found more than once. -> ignored"); |
e960098b1398
Importer: Ignore lines that contain km positions which were found before in the same WST file.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
481
diff
changeset
|
253 continue; |
e960098b1398
Importer: Ignore lines that contain km positions which were found before in the same WST file.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
481
diff
changeset
|
254 } |
e960098b1398
Importer: Ignore lines that contain km positions which were found before in the same WST file.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
481
diff
changeset
|
255 |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
256 if (kaem.compareTo(minKm) < 0) { |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
257 minKm = kaem; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
258 } |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
259 if (kaem.compareTo(maxKm) > 0) { |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
260 maxKm = kaem; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
261 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
262 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
263 // extract values |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
264 for (int i = 0; i < columnCount; ++i) { |
481
73052199f9f6
Fixed flys/issue19
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
479
diff
changeset
|
265 addValue(kaem, data[i+1], i); |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
266 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
267 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
268 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
269 else { // firstAbfluesse == null |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
270 if (langBezeichner != null) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
271 lsBezeichner = StringUtil.fitArray( |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
272 langBezeichner, lsBezeichner); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
273 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
274 else if (colNaWidths != null) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
275 for (int j = 0, i = 0, N = input.length(); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
276 j < colNaWidths.length && i < N; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
277 i += colNaWidths[j++] |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
278 ) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
279 lsBezeichner[j] = input.substring( |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
280 i, i+colNaWidths[j]).trim(); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
281 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
282 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
283 else { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
284 // first column begins at position 8 in line |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
285 for (int i = 8, col = 0; i < input.length(); i += 9) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
286 if ((i + 9) > input.length()) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
287 i = input.length() - 10; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
288 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
289 // one column header is 9 chars wide |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
290 lsBezeichner[col++] = |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
291 input.substring(i, i + 9).trim(); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
292 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
293 if (col == lsBezeichner.length) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
294 break; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
295 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
296 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
297 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
298 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
299 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
300 } |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
301 addInterval(minKm, maxKm, aktAbfluesse); |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
302 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
303 finally { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
304 if (in != null) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
305 in.close(); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
306 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
307 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
308 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
309 |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
310 protected void addValue(BigDecimal km, BigDecimal w, int index) { |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
311 if (w != null) { |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
312 ImportWstColumn column = wst.getColumn(index); |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
313 column.addColumnValue(km, w); |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
314 } |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
315 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
316 |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
317 private static final NumberFormat NF = getNumberFormat(); |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
318 |
202
29a408f80a89
Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
201
diff
changeset
|
319 private static final NumberFormat getNumberFormat() { |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
320 NumberFormat nf = NumberFormat.getInstance(); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
321 nf.setMinimumFractionDigits(2); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
322 nf.setMaximumFractionDigits(2); |
202
29a408f80a89
Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
201
diff
changeset
|
323 return nf; |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
324 } |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
325 |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
326 protected static String format(double value) { |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
327 return NF.format(value); |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
328 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
329 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
330 protected void addInterval( |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
331 BigDecimal from, |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
332 BigDecimal to, |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
333 BigDecimal [] values |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
334 ) { |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
335 log.debug("addInterval: " + from + " " + to); |
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
336 |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
337 if (values == null || from == MAX_RANGE) { |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
338 return; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
339 } |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
340 |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
341 if (to.compareTo(from) < 0) { |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
342 BigDecimal t = from; from = to; to = t; |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
343 } |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
344 |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
345 ImportRange range = new ImportRange(from, to); |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
346 |
753
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
347 // little workaround to make the q ranges tightly fit. |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
348 // Leave a very small gap to ensure that the range queries |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
349 // still work. |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
350 |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
351 if (lastRange != null) { |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
352 double d1 = Math.abs( |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
353 lastRange.getB().doubleValue() - range.getA().doubleValue()); |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
354 double d2 = Math.abs( |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
355 range.getB().doubleValue() - lastRange.getA().doubleValue()); |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
356 |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
357 if (d1 < d2) { |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
358 lastRange.setB(range.getA().subtract(INTERVAL_GAP)); |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
359 } |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
360 else { |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
361 range.setA(lastRange.getB().subtract(INTERVAL_GAP)); |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
362 } |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
363 } |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
364 |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
365 for (int i = 0; i < values.length; ++i) { |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
366 ImportWstColumn column = wst.getColumn(i); |
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
367 ImportWstQRange wstQRange = new ImportWstQRange(range, values[i]); |
201
3169b559ca3c
Build models for wsts, wst columns and q ranges and store them in the backend.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
200
diff
changeset
|
368 column.addColumnQRange(wstQRange); |
200
88048d4f6e4d
Add a hack to repair the units in WST files extraction.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
199
diff
changeset
|
369 } |
753
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
370 |
677a6fceea6e
flys/issue76: Close gaps between q ranges
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
495
diff
changeset
|
371 lastRange = range; |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
372 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
373 |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
374 private static final BigDecimal [] parseLineAsDouble( |
464
d37ccb04ab5d
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
202
diff
changeset
|
375 String line, |
d37ccb04ab5d
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
202
diff
changeset
|
376 int count, |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
377 boolean bStation, |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
378 boolean bParseEmptyAsZero |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
379 ) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
380 String [] tokens = parseLine(line, count, bStation); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
381 |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
382 BigDecimal [] doubles = new BigDecimal[tokens.length]; |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
383 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
384 for (int i = 0; i < doubles.length; ++i) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
385 String token = tokens[i].trim(); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
386 if (token.length() != 0) { |
474
5d920695a7f0
Import of q ranges of wst files was totally broken.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
464
diff
changeset
|
387 doubles[i] = new BigDecimal(token); |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
388 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
389 else if (bParseEmptyAsZero) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
390 doubles[i] = UNDEFINED_ZERO; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
391 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
392 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
393 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
394 return doubles; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
395 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
396 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
397 private static String [] parseLine( |
464
d37ccb04ab5d
Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
202
diff
changeset
|
398 String line, |
199
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
399 int tokenCount, |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
400 boolean bParseStation |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
401 ) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
402 ArrayList<String> strings = new ArrayList<String>(); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
403 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
404 if (bParseStation) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
405 if (line.length() < 8) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
406 throw new IllegalArgumentException("station too short"); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
407 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
408 strings.add(line.substring(0, 8)); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
409 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
410 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
411 int pos = 9; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
412 for (int i = 0; i < tokenCount; ++i) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
413 if (line.length() >= pos + 8) { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
414 strings.add(line.substring(pos, pos + 8)); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
415 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
416 else { |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
417 strings.add(""); |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
418 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
419 pos += 9; |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
420 } |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
421 |
ed38839a6b08
Ported over some WST parsing stuff from desktop flys
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
197
diff
changeset
|
422 return strings.toArray(new String[strings.size()]); |
197
c0dcc2357106
Added stub for WST parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
423 } |
c0dcc2357106
Added stub for WST parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
424 } |
c0dcc2357106
Added stub for WST parser.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
425 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |