Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/WstWriter.java @ 9726:0a5239a1e46e 3.2.x
Upgrade to Log4j 2
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Wed, 02 Mar 2022 10:26:50 +0100 |
parents | e4606eae8ea5 |
children |
rev | line source |
---|---|
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
2 * Software engineering by Intevation GmbH |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
3 * |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
7 */ |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
8 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3284
diff
changeset
|
9 package org.dive4elements.river.exports; |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
10 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
11 import java.io.BufferedWriter; |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
12 import java.io.OutputStream; |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
13 import java.io.OutputStreamWriter; |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
14 import java.io.PrintWriter; |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
15 |
447
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
16 import java.util.ArrayList; |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
17 import java.util.Collection; |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
18 import java.util.HashMap; |
447
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
19 import java.util.List; |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
20 import java.util.Locale; |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
21 import java.util.Map; |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
22 import java.util.TreeMap; |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
23 |
9726 | 24 import org.apache.logging.log4j.Logger; |
25 import org.apache.logging.log4j.LogManager; | |
7615
edb323a4c286
(issue1620) join column names with two empty spaces
Andre Heinecke <aheinecke@intevation.de>
parents:
7604
diff
changeset
|
26 import org.apache.commons.lang.StringUtils; |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
27 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3284
diff
changeset
|
28 import org.dive4elements.river.artifacts.model.WstLine; |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
29 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
30 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
31 /** |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
32 * A writer that creates WSTs. |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
33 * |
7656
ad5238e3e736
Cosmetics of WstWriter. Actually, a decent class now.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7654
diff
changeset
|
34 * Wst files follow this basic structure: |
ad5238e3e736
Cosmetics of WstWriter. Actually, a decent class now.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7654
diff
changeset
|
35 * |
ad5238e3e736
Cosmetics of WstWriter. Actually, a decent class now.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7654
diff
changeset
|
36 * HEADER |
ad5238e3e736
Cosmetics of WstWriter. Actually, a decent class now.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7654
diff
changeset
|
37 * Q-LINE |
ad5238e3e736
Cosmetics of WstWriter. Actually, a decent class now.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7654
diff
changeset
|
38 * W-LINES |
ad5238e3e736
Cosmetics of WstWriter. Actually, a decent class now.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7654
diff
changeset
|
39 * Q-LINE |
ad5238e3e736
Cosmetics of WstWriter. Actually, a decent class now.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7654
diff
changeset
|
40 * W-LINES |
ad5238e3e736
Cosmetics of WstWriter. Actually, a decent class now.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7654
diff
changeset
|
41 * ... |
ad5238e3e736
Cosmetics of WstWriter. Actually, a decent class now.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7654
diff
changeset
|
42 * |
ad5238e3e736
Cosmetics of WstWriter. Actually, a decent class now.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7654
diff
changeset
|
43 * where each *LINE consists of X columns that are specified in the header. |
ad5238e3e736
Cosmetics of WstWriter. Actually, a decent class now.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7654
diff
changeset
|
44 * |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
45 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
46 */ |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
47 public class WstWriter { |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
48 |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7663
diff
changeset
|
49 /** The log used in this class. */ |
9726 | 50 private static Logger log = LogManager.getLogger(WstWriter.class); |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
51 |
3147
d9fb3a178be4
Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
749
diff
changeset
|
52 /** The default unit that is written into the header of the WST. */ |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
53 public static final String DEFAULT_UNIT = "Wassserstand [NN + m]"; |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
54 |
3147
d9fb3a178be4
Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
749
diff
changeset
|
55 /** The lines that need to be included for the export. */ |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
56 protected Map<Double, WstLine> lines; |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
57 |
3147
d9fb3a178be4
Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
749
diff
changeset
|
58 /** The column names. */ |
447
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
59 protected List<String> columnNames; |
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
60 |
3147
d9fb3a178be4
Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
749
diff
changeset
|
61 /** The locale used to format the values. */ |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
62 protected Locale locale; |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
63 |
3147
d9fb3a178be4
Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
749
diff
changeset
|
64 /** The number of discharge columns. */ |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
65 protected int cols; |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
66 |
3147
d9fb3a178be4
Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
749
diff
changeset
|
67 /** The last Q values. */ |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
68 protected double[] qs; |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
69 |
7658
4fb5e89e7bd3
issue1020: WstWriter: Add flag to ignore Qs alltogether.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7656
diff
changeset
|
70 /** Workaround for one use of wrongly imported files: ignore the Qs at |
4fb5e89e7bd3
issue1020: WstWriter: Add flag to ignore Qs alltogether.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7656
diff
changeset
|
71 * all. */ |
4fb5e89e7bd3
issue1020: WstWriter: Add flag to ignore Qs alltogether.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7656
diff
changeset
|
72 protected boolean ignoreQs; |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
73 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
74 /** |
3284
d9af29a4bb85
Various cosmetic doc fixes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3147
diff
changeset
|
75 * This constructor creates a new WstWriter with a number of Q columns. |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
76 * |
7656
ad5238e3e736
Cosmetics of WstWriter. Actually, a decent class now.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7654
diff
changeset
|
77 * @param columns The number of columns of the resulting WST. |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
78 */ |
7656
ad5238e3e736
Cosmetics of WstWriter. Actually, a decent class now.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7654
diff
changeset
|
79 public WstWriter(int columns) { |
7658
4fb5e89e7bd3
issue1020: WstWriter: Add flag to ignore Qs alltogether.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7656
diff
changeset
|
80 this(columns, false); |
4fb5e89e7bd3
issue1020: WstWriter: Add flag to ignore Qs alltogether.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7656
diff
changeset
|
81 } |
4fb5e89e7bd3
issue1020: WstWriter: Add flag to ignore Qs alltogether.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7656
diff
changeset
|
82 |
4fb5e89e7bd3
issue1020: WstWriter: Add flag to ignore Qs alltogether.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7656
diff
changeset
|
83 /** |
4fb5e89e7bd3
issue1020: WstWriter: Add flag to ignore Qs alltogether.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7656
diff
changeset
|
84 * This constructor creates a new WstWriter with a number of Q columns. |
4fb5e89e7bd3
issue1020: WstWriter: Add flag to ignore Qs alltogether.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7656
diff
changeset
|
85 * |
4fb5e89e7bd3
issue1020: WstWriter: Add flag to ignore Qs alltogether.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7656
diff
changeset
|
86 * @param columns The number of columns of the resulting WST. |
4fb5e89e7bd3
issue1020: WstWriter: Add flag to ignore Qs alltogether.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7656
diff
changeset
|
87 * @param workaroundIgnoreQs do not write QLines to shadow broken data. |
4fb5e89e7bd3
issue1020: WstWriter: Add flag to ignore Qs alltogether.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7656
diff
changeset
|
88 */ |
4fb5e89e7bd3
issue1020: WstWriter: Add flag to ignore Qs alltogether.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7656
diff
changeset
|
89 public WstWriter(int columns, boolean workaroundIgnoreQs) { |
7656
ad5238e3e736
Cosmetics of WstWriter. Actually, a decent class now.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7654
diff
changeset
|
90 this.cols = columns; |
447
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
91 this.columnNames = new ArrayList<String>(cols); |
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
92 this.lines = new HashMap<Double, WstLine>(); |
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
93 this.qs = new double[cols]; |
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
94 this.locale = Locale.US; |
7658
4fb5e89e7bd3
issue1020: WstWriter: Add flag to ignore Qs alltogether.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7656
diff
changeset
|
95 this.ignoreQs = workaroundIgnoreQs; |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
96 } |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
97 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
98 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
99 /** |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
100 * This method is used to create the WST from the data that has been |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
101 * inserted using add(double[]) before. |
3284
d9af29a4bb85
Various cosmetic doc fixes.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3147
diff
changeset
|
102 * @param out Where to write to. |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
103 */ |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
104 public void write(OutputStream out) { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7663
diff
changeset
|
105 log.info("WstWriter.write"); |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
106 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
107 PrintWriter writer = new PrintWriter( |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
108 new BufferedWriter( |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
109 new OutputStreamWriter(out))); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
110 |
749
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
111 this.qs = new double[cols]; |
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
112 |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
113 writeHeader(writer); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
114 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
115 Collection<WstLine> collection = new TreeMap(lines).values(); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
116 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
117 for (WstLine line: collection) { |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
118 writeWLine(writer, line); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
119 } |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
120 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
121 writer.flush(); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
122 writer.close(); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
123 } |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
124 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
125 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
126 /** |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
127 * This method is used to add a new line to the WST. |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
128 * |
7656
ad5238e3e736
Cosmetics of WstWriter. Actually, a decent class now.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7654
diff
changeset
|
129 * @param wqkms A 3dim double array with [W, Q, KM]. |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
130 */ |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
131 public void add(double[] wqkms) { |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
132 Double km = wqkms[2]; |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
133 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
134 WstLine line = lines.get(km); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
135 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
136 if (line == null) { |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
137 line = new WstLine(km.doubleValue()); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
138 lines.put(km, line); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
139 } |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
140 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
141 line.add(wqkms[0], wqkms[1]); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
142 } |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
143 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
144 |
749
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
145 public void addCorrected(double[] wqckms) { |
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
146 Double km = wqckms[2]; |
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
147 |
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
148 WstLine line = lines.get(km); |
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
149 |
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
150 if (line == null) { |
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
151 line = new WstLine(km.doubleValue()); |
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
152 lines.put(km, line); |
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
153 } |
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
154 |
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
155 line.add(wqckms[3], wqckms[1]); |
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
156 } |
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
157 |
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
158 |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
159 /** |
447
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
160 * Adds a further column name. |
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
161 * |
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
162 * @param name The name of the new column. |
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
163 */ |
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
164 public void addColumn(String name) { |
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
165 if (name != null) { |
749
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
166 cols++; |
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
167 |
7654
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
168 int i = 0; |
749
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
169 String basename = name; |
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
170 while (columnNames.contains(name)) { |
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
171 name = basename + "_" + i++; |
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
172 } |
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
173 |
447
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
174 columnNames.add(name); |
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
175 } |
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
176 } |
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
177 |
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
178 |
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
179 /** |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
180 * This method writes the header of the WST. |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
181 * |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
182 * @param writer The PrintWriter that creates the output. |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
183 */ |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
184 protected void writeHeader(PrintWriter writer) { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7663
diff
changeset
|
185 log.debug("WstWriter.writeHeader"); |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
186 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
187 writer.println(cols); |
7654
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
188 |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
189 writer.print("*!column-bez-text "); |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
190 |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
191 List<String> quotedNames = new ArrayList<String>(columnNames.size()); |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
192 |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
193 for (String name: columnNames) { |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
194 if (name.contains(" ")) { |
7663
7c89a545617a
Use correct quotes for long names
Andre Heinecke <aheinecke@intevation.de>
parents:
7658
diff
changeset
|
195 name = '"' + name + '"'; |
7654
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
196 } |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
197 quotedNames.add(name); |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
198 } |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
199 writer.println(StringUtils.join(quotedNames, " ")); |
447
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
200 writer.print(" "); |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
201 |
7654
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
202 for (String columnName: columnNames) { |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
203 if (columnName.length() > 9) { |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
204 writer.printf(locale, "%9s", |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
205 columnName.substring(columnName.length() - 9)); |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
206 } else { |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
207 writer.printf(locale, "%9s", columnName); |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
208 // This is weird but i was to lazy to lookup |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
209 // how to do this another way. |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
210 for (int i = 9 - columnName.length(); i > 0; i--) { |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
211 writer.print(" "); |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
212 } |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
213 } |
197bd0958cba
(issue1620) Fix WstWriter Column Header format.
Andre Heinecke <aheinecke@intevation.de>
parents:
7615
diff
changeset
|
214 } |
447
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
215 |
5606ba4139e0
WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
446
diff
changeset
|
216 writer.println(); |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
217 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
218 writer.write("* KM "); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
219 writer.write(DEFAULT_UNIT); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
220 writer.println(); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
221 } |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
222 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
223 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
224 /** |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
225 * This method writes a line with W values and a certain kilometer. |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
226 * |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
227 * @param writer The PrintWriter that is used to create the output. |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
228 * @param line The WstLine that should be written to the output. |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
229 */ |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
230 protected void writeWLine(PrintWriter writer, WstLine line) { |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
231 double km = line.getKm(); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
232 double[] qs = line.getQs(); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
233 int num = line.getSize(); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
234 |
7658
4fb5e89e7bd3
issue1020: WstWriter: Add flag to ignore Qs alltogether.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7656
diff
changeset
|
235 if (!ignoreQs && dischargesChanged(qs)) { |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
236 writeQLine(writer, qs); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
237 } |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
238 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
239 writer.printf(locale, "%8.3f", km); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
240 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
241 for (int i = 0; i < num; i++) { |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
242 writer.printf(locale, "%9.2f", line.getW(i)); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
243 } |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
244 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
245 writer.println(); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
246 } |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
247 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
248 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
249 /** |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
250 * Writes a discharge line (Q values) into a WST. |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
251 * |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
252 * @param qs the Q values for the next range. |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
253 */ |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
254 protected void writeQLine(PrintWriter writer, double[] qs) { |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
255 writer.write("*\u001f "); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
256 |
749
72bcbc308501
The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
447
diff
changeset
|
257 for (int i = 0; i < qs.length; i++) { |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
258 this.qs[i] = qs[i]; |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
259 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
260 writer.printf(locale, "%9.2f", qs[i]); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
261 } |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
262 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
263 writer.println(); |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
264 } |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
265 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
266 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
267 /** |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
268 * This method determines if a Q has changed from the last line to the |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
269 * current one. |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
270 * |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
271 * @param newQs The Q values of the next line. |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
272 * |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
273 * @return true, if a Q value have changed, otherwise false. |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
274 */ |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
275 protected boolean dischargesChanged(double[] newQs) { |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
276 // XXX maybe there is a way to do this faster |
7604
05549a84ee83
(issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
277 for (int i = 0; i < cols && i < qs.length && i < newQs.length; i++) { |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
278 if (Math.abs(newQs[i] - qs[i]) >= 0.001) { |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
279 return true; |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
280 } |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
281 } |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
282 |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
283 return false; |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
284 } |
7604
05549a84ee83
(issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
285 |
05549a84ee83
(issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
286 /** |
05549a84ee83
(issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
287 * Get the lines that have alreay been added to this writer |
7656
ad5238e3e736
Cosmetics of WstWriter. Actually, a decent class now.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7654
diff
changeset
|
288 * lines are a map with km as the key and a wstline as value. |
ad5238e3e736
Cosmetics of WstWriter. Actually, a decent class now.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7654
diff
changeset
|
289 */ |
7604
05549a84ee83
(issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
290 public Map<Double, WstLine> getLines() { |
05549a84ee83
(issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
291 return lines; |
05549a84ee83
(issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
292 } |
446
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
293 } |
c0bec245f608
Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
294 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |