annotate artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelExporter.java @ 9562:2b1626fa4a95

W a. P. (aktuell)
author gernotbelger
date Thu, 25 Oct 2018 17:11:59 +0200
parents 33ce8eba9806
children 6c1ebf2220f5
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: 5867
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: 5867
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: 5587
diff changeset
9 package org.dive4elements.river.exports;
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
11 import java.io.IOException;
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12 import java.io.OutputStream;
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
13 import java.text.DateFormat;
418
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
14 import java.text.NumberFormat;
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15 import java.util.ArrayList;
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
16 import java.util.Date;
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
17 import java.util.HashMap;
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 import java.util.List;
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
19 import java.util.Locale;
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
20 import java.util.Map;
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
21 import java.util.regex.Matcher;
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
22 import java.util.regex.Pattern;
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 import org.apache.log4j.Logger;
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
25 import org.dive4elements.artifacts.Artifact;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
26 import org.dive4elements.artifacts.CallMeta;
9460
8d6e56e57c4a log-Ausgaben crossSection isStart
gernotbelger
parents: 9459
diff changeset
27 import org.dive4elements.river.artifacts.AbstractFixBunduArtifact;
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
28 import org.dive4elements.river.artifacts.D4EArtifact;
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
29 import org.dive4elements.river.artifacts.StaticWQKmsArtifact;
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
30 import org.dive4elements.river.artifacts.WINFOArtifact;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
31 import org.dive4elements.river.artifacts.access.FixRealizingAccess;
7620
22b9d2dfb4d2 Use IsOfficialAccess instead of direct property in WaterlevelExporter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7615
diff changeset
32 import org.dive4elements.river.artifacts.access.IsOfficialAccess;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
33 import org.dive4elements.river.artifacts.access.RangeAccess;
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
34 import org.dive4elements.river.artifacts.common.DefaultCalculationResults;
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
35 import org.dive4elements.river.artifacts.common.ExportContextPDF;
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
36 import org.dive4elements.river.artifacts.common.GeneralResultType;
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
37 import org.dive4elements.river.artifacts.common.JasperDesigner;
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
38 import org.dive4elements.river.artifacts.common.JasperReporter;
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
39 import org.dive4elements.river.artifacts.common.MetaAndTableJRDataSource;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
40 import org.dive4elements.river.artifacts.model.CalculationResult;
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
41 import org.dive4elements.river.artifacts.model.ConstantWQKms;
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
42 import org.dive4elements.river.artifacts.model.DischargeTables;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
43 import org.dive4elements.river.artifacts.model.Segment;
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
44 import org.dive4elements.river.artifacts.model.WKmsJRDataSource;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
45 import org.dive4elements.river.artifacts.model.WQCKms;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
46 import org.dive4elements.river.artifacts.model.WQKms;
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
47 import org.dive4elements.river.artifacts.model.WQKmsResult;
7604
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
48 import org.dive4elements.river.artifacts.model.WstLine;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
49 import org.dive4elements.river.artifacts.resources.Resources;
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
50 import org.dive4elements.river.artifacts.sinfo.util.CalculationUtils;
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
51 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
52 import org.dive4elements.river.model.DischargeTable;
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
53 import org.dive4elements.river.model.Gauge;
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
54 import org.dive4elements.river.utils.Formatter;
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
55 import org.dive4elements.river.utils.RiverUtils;
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
56 import org.dive4elements.river.utils.RiverUtils.WQ_MODE;
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
57
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
58 import au.com.bytecode.opencsv.CSVWriter;
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
59 import gnu.trove.TDoubleArrayList;
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
60 import net.sf.jasperreports.engine.JRException;
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62 /**
3252
62c9bcef0680 Fix issue705 (maín value names also in w/q-range mode).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2764
diff changeset
63 * Generates different output formats (wst, csv, pdf) of data that resulted from
62c9bcef0680 Fix issue705 (maín value names also in w/q-range mode).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2764
diff changeset
64 * a waterlevel computation.
62c9bcef0680 Fix issue705 (maín value names also in w/q-range mode).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2764
diff changeset
65 *
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 */
391
5d6988836f01 Added an exporter to export the computed data of a duration curve.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 389
diff changeset
68 public class WaterlevelExporter extends AbstractExporter {
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
70 /** The log used in this exporter. */
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
71 private static Logger log = Logger.getLogger(WaterlevelExporter.class);
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
73 private static final String FACET_WST = "wst";
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
74
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
75 /* This should be the same as in the StaticWQKmsArtifact */
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
76 private static final String STATICWQKMSNAME = "staticwqkms";
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
77
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
78 public static final String CSV_KM_HEADER = "export.waterlevel.csv.header.km";
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
79
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
80 public static final String CSV_W_HEADER = "export.waterlevel.csv.header.w";
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
81
9312
740d65e4aa14 Q [m³/s] one message
gernotbelger
parents: 9082
diff changeset
82 public static final String CSV_Q_HEADER = "common.export.csv.header.q";
2063
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
83
8932
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
84 /**
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
85 * @deprecated Use {@link WaterlevelDescriptionBuilder} instead.
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
86 */
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
87 @Deprecated
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
88 public static final String CSV_Q_DESC_HEADER = "export.waterlevel.csv.header.q.desc";
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
89
8932
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
90 /**
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
91 * @deprecated Use {@link WaterlevelDescriptionBuilder} instead.
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
92 */
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
93 @Deprecated
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
94 public static final String CSV_W_DESC_HEADER = "export.waterlevel.csv.header.w.desc";
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
95
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
96 public static final String CSV_LOCATION_HEADER = "export.waterlevel.csv.header.location";
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
97
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
98 public static final String CSV_GAUGE_HEADER = "export.waterlevel.csv.header.gauge";
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
99
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
100 private static final String CSV_META_RESULT = "export.waterlevel.csv.meta.result";
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
101
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
102 private static final String CSV_META_CREATION = "export.waterlevel.csv.meta.creation";
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
103
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
104 private static final String CSV_META_CALCULATIONBASE = "export.waterlevel.csv.meta.calculationbase";
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
105
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
106 private static final String CSV_META_RIVER = "export.waterlevel.csv.meta.river";
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
107
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
108 private static final String CSV_META_RANGE = "export.waterlevel.csv.meta.range";
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
109
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
110 private static final String CSV_META_GAUGE = "export.waterlevel.csv.meta.gauge";
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
111
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
112 private static final String CSV_META_Q = "common.export.waterlevel.csv.meta.q";
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
113
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
114 private static final String CSV_META_W = "export.waterlevel.csv.meta.w";
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
115
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
116 public static final String CSV_NOT_IN_GAUGE_RANGE = "export.waterlevel.csv.not.in.gauge.range";
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
117
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
118 private static final Pattern NUMBERS_PATTERN = Pattern.compile("\\D*(\\d++.\\d*)\\D*");
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
119
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
120 public static final String DEFAULT_CSV_KM_HEADER = "Fluss-Km";
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
121 public static final String DEFAULT_CSV_W_HEADER = "W [NN + m]";
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
122 public static final String DEFAULT_CSV_Q_HEADER = "Q [m\u00b3/s]";
8932
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
123 /**
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
124 * @deprecated Use {@link WaterlevelDescriptionBuilder} instead.
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
125 */
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
126 @Deprecated
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
127 public static final String DEFAULT_CSV_Q_DESC_HEADER = "Bezeichnung";
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
128 /**
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
129 * @deprecated Use {@link WaterlevelDescriptionBuilder} instead.
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
130 */
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
131 @Deprecated
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
132 public static final String DEFAULT_CSV_W_DESC_HEADER = "W/Pegel [cm]";
2063
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
133 public static final String DEFAULT_CSV_LOCATION_HEADER = "Lage";
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
134 public static final String DEFAULT_CSV_GAUGE_HEADER = "Bezugspegel";
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
135 public static final String DEFAULT_CSV_NOT_IN_GAUGE_RANGE = "außerhalb des gewählten Bezugspegels";
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
136
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
137 protected static final String PDF_HEADER_MODE = "export.waterlevel.pdf.mode";
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
138
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
139 /** The storage that contains all WQKms objects that are calculated. */
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
140 public List<WQKms[]> data;
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
141
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
142 /** The storage that contains official fixings if available. */
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
143 public List<WQKms> officalFixings;
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
144
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
145 private final Map<String, Double> gaugeQ_W_Map = new HashMap<>();
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
146
7077
0a337f0005c2 Extended init() of OutGenerator to take name of the out to serve.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6941
diff changeset
147 public WaterlevelExporter() {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
148 this.data = new ArrayList<>();
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
149 }
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
150
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
151 @Override
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
152 public void generate() throws IOException {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
153 log.debug("WaterlevelExporter.generate");
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
154
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
155 /*
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
156 * Check for official fixings. They should also be included in the
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
157 * export but only the calculation result is added with addData
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
158 */
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
159
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
160 this.officalFixings = new ArrayList<>();
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
161
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
162 for (final Artifact art : this.collection.getArtifactsByName(STATICWQKMSNAME, this.context)) {
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
163 if (art instanceof StaticWQKmsArtifact) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
164 final IsOfficialAccess access = new IsOfficialAccess((D4EArtifact) art);
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
165 final StaticWQKmsArtifact sart = (StaticWQKmsArtifact) art;
7620
22b9d2dfb4d2 Use IsOfficialAccess instead of direct property in WaterlevelExporter.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7615
diff changeset
166 if (!access.isOfficial()) {
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
167 continue;
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
168 }
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
169
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
170 /* Check that we add the data only once */
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
171 final WQKms toAdd = sart.getWQKms();
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
172 final String newName = toAdd.getName();
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
173
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
174 boolean exists = false;
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
175 for (final WQKms wqkm : this.officalFixings) {
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
176 /*
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
177 * The same official fixing could be in two
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
178 * artifacts/outs so let's deduplicate
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
179 */
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
180 if (wqkm.getName().equals(newName)) {
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
181 exists = true;
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
182 }
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
183 }
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
184 if (!exists) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
185 this.officalFixings.add(toAdd);
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
186 log.debug("Adding additional offical fixing: " + newName);
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
187 }
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
188 }
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
189 }
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
190
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
191 if (this.facet != null && this.facet.equals(AbstractExporter.FACET_CSV)) {
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
192 generateCSV();
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
193 } else if (this.facet != null && this.facet.equals(FACET_WST)) {
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
194 generateWST();
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
195 } else if (this.facet != null && this.facet.equals(AbstractExporter.FACET_PDF)) {
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
196 generatePDF();
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
197 } else {
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
198 throw new IOException("invalid facet for exporter");
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
199 }
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
200 }
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
201
701
dad1a2c88f9f Base WST/CSV exports on facets. TODO: generate the facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 664
diff changeset
202 @Override
dad1a2c88f9f Base WST/CSV exports on facets. TODO: generate the facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 664
diff changeset
203 protected void addData(Object d) {
709
3b7e9ddf6bb1 New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
204 if (d instanceof CalculationResult) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
205 d = ((CalculationResult) d).getData();
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
206 if (d instanceof WQKms[]) {
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
207 this.data.add((WQKms[]) d);
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
208 } else if (d instanceof WQKmsResult) {
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
209 this.data.add(((WQKmsResult) d).getWQKms());
3462
13855a555d3b Added new Output WaterlevelExport (CSV, WST and PDF) to FixRealizingCompute State.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3313
diff changeset
210 }
701
dad1a2c88f9f Base WST/CSV exports on facets. TODO: generate the facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 664
diff changeset
211 }
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
212 }
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
213
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
214 /**
6576
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6101
diff changeset
215 * Prepare the column titles of waterlevel exports.
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
216 * Titles in this export include the Q value. If a Q value matches a named
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
217 * main value (as HQ100 or MNQ) this named main value should be used as
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
218 * title. This method resets the name of the <i>wqkms</i> object if such
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
219 * named main value fits to the chosen Q.
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
220 *
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
221 * @param winfo
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
222 * A WINFO Artifact.
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
223 * @param wqkms
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
224 * A WQKms object that should be prepared.
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
225 */
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
226 public String getColumnTitle(final WINFOArtifact winfo, final WQKms wqkms) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
227 log.debug("WaterlevelExporter.getColumnTitle");
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
228
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
229 final String name = wqkms.getName();
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
230
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
231 log.debug("Name of WQKms = '" + name + "'");
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
232
2038
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
233 if (name.indexOf("W=") >= 0) {
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
234 return name;
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
235 }
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
236
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
237 final Matcher m = NUMBERS_PATTERN.matcher(name);
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
238
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
239 if (m.matches()) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
240 final String raw = m.group(1);
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
241
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
242 try {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
243 final double v = Double.valueOf(raw);
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
244
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
245 String nmv = RiverUtils.getNamedMainValue(winfo, v);
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
246
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
247 if (nmv != null && nmv.length() > 0) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
248 nmv = RiverUtils.stripNamedMainValue(nmv);
2596
00cf69edfcc0 #252 Added numeric value of a named main value into the WST export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2423
diff changeset
249 nmv += "=" + String.valueOf(v);
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
250 log.debug("Set named main value '" + nmv + "'");
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
251
2038
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
252 return nmv;
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
253 }
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
254 }
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
255 catch (final NumberFormatException nfe) {
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
256 // do nothing here
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
257 }
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
258 }
2038
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
259
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
260 return name;
2035
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
261 }
3ebbe497d7f7 #252 Set titles in waterlevel exports to named main values if those are existing for given Q values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 749
diff changeset
262
8932
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
263 /**
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
264 * @deprecated Use {@link WaterlevelDescriptionBuilder} instead.
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
265 */
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
266 @Deprecated
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
267 public String getCSVRowTitle(final WINFOArtifact winfo, final WQKms wqkms) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
268 log.debug("WaterlevelExporter.prepareNamedValue");
2087
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
269
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
270 final String name = wqkms.getName();
2087
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
271
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
272 log.debug("Name of WQKms = '" + name + "'");
2087
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
273
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
274 final WQ_MODE wqmode = RiverUtils.getWQMode(winfo);
2087
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
275
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
276 if (wqmode == WQ_MODE.WFREE || wqmode == WQ_MODE.QGAUGE) {
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
277 return localizeWQKms(winfo, wqkms);
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
278 }
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
279
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
280 final Double v = wqkms.getRawValue();
2087
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
281
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
282 String nmv = RiverUtils.getNamedMainValue(winfo, v);
2087
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
283
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
284 if (nmv != null && nmv.length() > 0) {
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
285 nmv = RiverUtils.stripNamedMainValue(nmv);
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
286 log.debug("Set named main value '" + nmv + "'");
2087
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
287
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
288 return nmv;
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
289 }
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
290
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
291 return localizeWQKms(winfo, wqkms);
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
292 }
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
293
3252
62c9bcef0680 Fix issue705 (maín value names also in w/q-range mode).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2764
diff changeset
294 /**
62c9bcef0680 Fix issue705 (maín value names also in w/q-range mode).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2764
diff changeset
295 * Get a string like 'W=' or 'Q=' with a number following in localized
62c9bcef0680 Fix issue705 (maín value names also in w/q-range mode).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2764
diff changeset
296 * format.
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
297 *
8932
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
298 * @deprecated Use {@link WaterlevelDescriptionBuilder} instead.
3252
62c9bcef0680 Fix issue705 (maín value names also in w/q-range mode).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2764
diff changeset
299 */
8932
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
300 @Deprecated
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
301 public String localizeWQKms(final WINFOArtifact winfo, final WQKms wqkms) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
302 final WQ_MODE wqmode = RiverUtils.getWQMode(winfo);
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
303 final Double rawValue = wqkms.getRawValue();
2087
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
304
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
305 if (rawValue == null) {
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
306 return wqkms.getName();
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
307 }
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
308
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
309 final NumberFormat nf = Formatter.getRawFormatter(this.context);
2087
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
310
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
311 if (wqmode == WQ_MODE.WFREE || wqmode == WQ_MODE.WGAUGE) {
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
312 return "W=" + nf.format(rawValue);
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
313 } else {
2087
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
314 return "Q=" + nf.format(rawValue);
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
315 }
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
316 }
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
317
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
318 private final boolean isQ() {
9485
dd05a5eef210 Bezugspegel Winfo.Wspl + Fix.Awspl fix
gernotbelger
parents: 9460
diff changeset
319 final WQ_MODE mode = RiverUtils.getWQMode((D4EArtifact) this.master);
dd05a5eef210 Bezugspegel Winfo.Wspl + Fix.Awspl fix
gernotbelger
parents: 9460
diff changeset
320 return mode == WQ_MODE.QGAUGE || mode == WQ_MODE.QFREE;
9459
f06e3766997f fallunterscheidung isQ - fixWaterlevelExporter
gernotbelger
parents: 9457
diff changeset
321 }
f06e3766997f fallunterscheidung isQ - fixWaterlevelExporter
gernotbelger
parents: 9457
diff changeset
322
701
dad1a2c88f9f Base WST/CSV exports on facets. TODO: generate the facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 664
diff changeset
323 @Override
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
324 public void writeCSVData(final CSVWriter writer) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
325 log.info("WaterlevelExporter.writeData");
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
326 final WQ_MODE mode = RiverUtils.getWQMode((D4EArtifact) this.master);
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
327 final boolean atGauge = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.WGAUGE;
9485
dd05a5eef210 Bezugspegel Winfo.Wspl + Fix.Awspl fix
gernotbelger
parents: 9460
diff changeset
328 final boolean isQ = isQ();
9459
f06e3766997f fallunterscheidung isQ - fixWaterlevelExporter
gernotbelger
parents: 9457
diff changeset
329
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
330 final RiverUtils.WQ_INPUT input = RiverUtils.getWQInputMode((D4EArtifact) this.master);
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
331 writeCSVMeta(writer);
2068
0cf60d64895c #370 Added a 'W at gauge' column to CSV exports if 'W at gauge' mode has been selected.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2066
diff changeset
332 writeCSVHeader(writer, atGauge, isQ);
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
333
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
334 Double first = Double.NaN;
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
335 Double last = Double.NaN;
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
336
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
337 for (final WQKms[] tmp : this.data) {
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
338 for (final WQKms wqkms : tmp) {
3252
62c9bcef0680 Fix issue705 (maín value names also in w/q-range mode).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2764
diff changeset
339 wQKms2CSV(writer, wqkms, atGauge, isQ);
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
340 final double[] firstLast = wqkms.getFirstLastKM();
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
341 if (first.isNaN()) {
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
342 /* Initialize */
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
343 first = firstLast[0];
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
344 last = firstLast[1];
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
345 }
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
346 if (firstLast[0] > firstLast[1]) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
347 /*
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
348 * Calculating upstream we assert that it is
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
349 * impossible that the direction changes during this
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
350 * loop
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
351 */
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
352 first = Math.max(first, firstLast[0]);
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
353 last = Math.min(last, firstLast[1]);
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
354 } else if (firstLast[0] < firstLast[1]) {
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
355 first = Math.min(first, firstLast[0]);
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
356 last = Math.max(last, firstLast[1]);
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
357 } else {
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
358 first = last = firstLast[0];
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
359 }
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
360 }
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
361 }
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
362 /* Append the official fixing at the bottom */
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
363 for (final WQKms wqkms : this.officalFixings) {
6603
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
364 wQKms2CSV(writer, filterWQKms(wqkms, first, last), atGauge, isQ);
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
365 }
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
366 }
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
367
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
368 /**
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
369 * Filter a wqkms object to a distance.
6603
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
370 *
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
371 * To handle upstream / downstream and to limit
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
372 * the officialFixings to the calculation distance
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
373 * we create a new wqkms object here and fill it only
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
374 * with the relevant data.
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
375 *
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
376 * @param wqkms:
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
377 * The WQKms Object to filter
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
378 * @param first:
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
379 * The fist kilometer of the range
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
380 * @param last:
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
381 * The last kilometer of the range
6603
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
382 *
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
383 * @return A new WQKms with the relevant data sorted by direction
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
384 */
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
385 public final WQKms filterWQKms(final WQKms wqkms, final Double first, final Double last) {
6603
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
386 if (first.isNaN() || last.isNaN()) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
387 log.warn("Filtering official fixing without valid first/last.");
6603
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
388 return wqkms;
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
389 }
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
390 final int firstIdx = first > last ? wqkms.size() - 1 : 0;
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
391 final int lastIdx = first > last ? 0 : wqkms.size() - 1;
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
392 final WQKms filtered = new WQKms(wqkms.size());
6603
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
393 filtered.setName(wqkms.getName());
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
394 double[] dp = new double[3];
6603
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
395
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
396 if (first > last) {
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
397 for (int i = wqkms.size() - 1; i >= 0; i--) {
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
398 dp = wqkms.get(i, dp);
6605
ddef735db96a Include the calculation borders in the official line export.
Andre Heinecke <aheinecke@intevation.de>
parents: 6603
diff changeset
399 if (dp[2] <= first + 1E-5 && dp[2] > last - 1E-5) {
6603
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
400 filtered.add(dp[0], dp[1], dp[2]);
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
401 }
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
402 }
6603
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
403 } else {
7254
fe32a7f9655e Reduce usage of careless 'for (int i = 0; i < x.size(); i++)' pattern.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7088
diff changeset
404 for (int i = 0, N = wqkms.size(); i < N; i++) {
6603
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
405 dp = wqkms.get(i, dp);
6605
ddef735db96a Include the calculation borders in the official line export.
Andre Heinecke <aheinecke@intevation.de>
parents: 6603
diff changeset
406 if (dp[2] < last + 1E-5 && dp[2] > first - 1E-5) {
6603
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
407 filtered.add(dp[0], dp[1], dp[2]);
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
408 }
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
409 }
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
410 }
6603
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
411 return filtered;
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
412 }
6603
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
413
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
414 public void writeCSVMeta(final CSVWriter writer) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
415 log.info("WaterlevelExporter.writeCSVMeta");
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
416
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
417 // TODO use Access instead of RiverUtils
4859
e31231d0a720 WaterlevelExporter: Updated to use RangeAccess instead of FLYSUtils.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4836
diff changeset
418
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
419 final CallMeta meta = this.context.getMeta();
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
420
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
421 final D4EArtifact flys = (D4EArtifact) this.master;
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
422
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
423 writer.writeNext(new String[] { Resources.getMsg(meta, CSV_META_RESULT, CSV_META_RESULT, new Object[] { RiverUtils.getRivername(flys) }) });
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
424
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
425 final Locale locale = Resources.getLocale(meta);
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
426 final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
427
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
428 writer.writeNext(new String[] { Resources.getMsg(meta, CSV_META_CREATION, CSV_META_CREATION, new Object[] { df.format(new Date()) }) });
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
429
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
430 writer.writeNext(new String[] { Resources.getMsg(meta, CSV_META_CALCULATIONBASE, CSV_META_CALCULATIONBASE, new Object[] { "" }) // TODO what is required
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
431 // at this place?
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
432 });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
433
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
434 writer.writeNext(new String[] { Resources.getMsg(meta, CSV_META_RIVER, CSV_META_RIVER, new Object[] { RiverUtils.getRivername(flys) }) });
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
435
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
436 final RangeAccess rangeAccess = new RangeAccess(flys);
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
437 final double[] kms = rangeAccess.getKmRange();
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
438 writer.writeNext(new String[] { Resources.getMsg(meta, CSV_META_RANGE, CSV_META_RANGE, new Object[] { kms[0], kms[kms.length - 1] }) });
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
439
9538
fb80fc7ec610 "Kein Bezugspegel" AWSPL PDF-Export-Fix
gernotbelger
parents: 9536
diff changeset
440 final String gaugeName = RiverUtils.getGaugename(flys);
fb80fc7ec610 "Kein Bezugspegel" AWSPL PDF-Export-Fix
gernotbelger
parents: 9536
diff changeset
441 writer.writeNext(new String[] {
fb80fc7ec610 "Kein Bezugspegel" AWSPL PDF-Export-Fix
gernotbelger
parents: 9536
diff changeset
442 Resources.getMsg(meta, CSV_META_GAUGE, CSV_META_GAUGE, new Object[] { gaugeName != null ? gaugeName : Resources.getMsg(meta, "-") }) });
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
443
9040
5294114b1df4 Fixed/changed some FIXMEs/TODOs
gernotbelger
parents: 8932
diff changeset
444 // TODO: code extracted into WaterlevelDescriptionBuilder, should be used instead.
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
445 final RiverUtils.WQ_MODE wq = RiverUtils.getWQMode(flys);
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
446 if (wq == RiverUtils.WQ_MODE.QFREE || wq == RiverUtils.WQ_MODE.QGAUGE) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
447 final double[] qs = RiverUtils.getQs(flys);
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
448 final RiverUtils.WQ_INPUT input = RiverUtils.getWQInputMode(flys);
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
449
2423
ac528b883b47 Picked rev 4070,4074,4076,4080 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2290
diff changeset
450 String data = "";
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
451
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
452 if ((input == RiverUtils.WQ_INPUT.ADAPTED || input == RiverUtils.WQ_INPUT.RANGE) && qs != null && qs.length > 0) {
2423
ac528b883b47 Picked rev 4070,4074,4076,4080 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2290
diff changeset
453 data = String.valueOf(qs[0]);
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
454 data += " - " + String.valueOf(qs[qs.length - 1]);
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
455 } else if (input == RiverUtils.WQ_INPUT.SINGLE && qs != null) {
2423
ac528b883b47 Picked rev 4070,4074,4076,4080 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2290
diff changeset
456 data = String.valueOf(qs[0]);
ac528b883b47 Picked rev 4070,4074,4076,4080 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2290
diff changeset
457 for (int i = 1; i < qs.length; i++) {
ac528b883b47 Picked rev 4070,4074,4076,4080 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2290
diff changeset
458 data += ", " + String.valueOf(qs[i]);
ac528b883b47 Picked rev 4070,4074,4076,4080 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2290
diff changeset
459 }
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
460 } else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
461 log.warn("Could not determine Q range!");
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
462 }
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
463
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
464 writer.writeNext(new String[] { Resources.getMsg(meta, CSV_META_Q, CSV_META_Q, new Object[] { data }) });
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
465 } else {
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
466 final double[] ws = RiverUtils.getWs(flys);
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
467
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
468 String lower = "";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
469 String upper = "";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
470
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
471 if (ws != null && ws.length > 0) {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
472 lower = String.valueOf(ws[0]);
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
473 upper = String.valueOf(ws[ws.length - 1]);
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
474 } else {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
475 log.warn("Could not determine W range!");
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
476 }
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
477
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
478 writer.writeNext(new String[] { Resources.getMsg(meta, CSV_META_W, CSV_META_W, new Object[] { lower, upper }) });
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
479 }
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
480
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
481 writer.writeNext(new String[] { "" });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
482 }
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
483
4979
4c76c5f69eaf WaterlevelExporter: Doc and issue-TODO.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4859
diff changeset
484 /**
4c76c5f69eaf WaterlevelExporter: Doc and issue-TODO.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4859
diff changeset
485 * Write the header, with different headings depending on whether at a
4c76c5f69eaf WaterlevelExporter: Doc and issue-TODO.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4859
diff changeset
486 * gauge or at a location.
4c76c5f69eaf WaterlevelExporter: Doc and issue-TODO.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4859
diff changeset
487 */
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
488 protected void writeCSVHeader(final CSVWriter writer, final boolean atGauge, final boolean isQ) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
489 log.info("WaterlevelExporter.writeCSVHeader");
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
490
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
491 final String unit = RiverUtils.getRiver((D4EArtifact) this.master).getWstUnit().getName();
5133
8e52b4829cd1 Fix flys/issue1228: Units in tabular calculation output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5131
diff changeset
492
2065
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
493 if (atGauge) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
494 writer.writeNext(new String[] { msg(CSV_KM_HEADER, DEFAULT_CSV_KM_HEADER), msg(CSV_W_HEADER, DEFAULT_CSV_W_HEADER, new Object[] { unit }),
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
495 msg(CSV_Q_HEADER, DEFAULT_CSV_Q_HEADER),
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
496
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
497 // FIXME: use WaterlevelDescriptionBuilder instead and also remove all this duplicate code.
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
498 (isQ ? msg(CSV_Q_DESC_HEADER, DEFAULT_CSV_Q_DESC_HEADER) : msg(CSV_W_DESC_HEADER, DEFAULT_CSV_W_DESC_HEADER)),
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
499 msg(CSV_LOCATION_HEADER, DEFAULT_CSV_LOCATION_HEADER), msg(CSV_GAUGE_HEADER, DEFAULT_CSV_GAUGE_HEADER) });
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
500 } else {
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
501 writer.writeNext(new String[] { msg(CSV_KM_HEADER, DEFAULT_CSV_KM_HEADER),
5133
8e52b4829cd1 Fix flys/issue1228: Units in tabular calculation output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5131
diff changeset
502 // TODO flys/issue1128 (unit per river)
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
503 msg(CSV_W_HEADER, DEFAULT_CSV_W_HEADER, new Object[] { unit }), msg(CSV_Q_HEADER, DEFAULT_CSV_Q_HEADER),
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
504 msg(CSV_LOCATION_HEADER, DEFAULT_CSV_LOCATION_HEADER) });
2065
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
505 }
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
506 }
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
507
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
508 /** Linearly search for gauge which is valid at km. */
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
509 private static Gauge findGauge(final double km, final List<Gauge> gauges) {
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
510 for (final Gauge gauge : gauges) {
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
511 if (gauge.getRange().contains(km)) {
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
512 return gauge;
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
513 }
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
514 }
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
515 return null;
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
516 }
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
517
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
518 private static Segment findSegment(final double km, final List<Segment> segments) {
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
519 for (final Segment segment : segments) {
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
520 if (segment.inside(km)) {
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
521 return segment;
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
522 }
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
523 }
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
524 return null;
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
525 }
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
526
9485
dd05a5eef210 Bezugspegel Winfo.Wspl + Fix.Awspl fix
gernotbelger
parents: 9460
diff changeset
527 protected void writeRow4(final CSVWriter writer, final double wqkm[], final D4EArtifact flys, final Gauge gauge, final boolean isQ) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
528 final NumberFormat kmf = getKmFormatter();
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
529 final NumberFormat wf = getWFormatter();
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
530 final NumberFormat qf = getQFormatter();
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
531 writer.writeNext(new String[] { kmf.format(wqkm[2]), wf.format(wqkm[0]), qf.format(RiverUtils.roundQ(wqkm[1])),
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
532 RiverUtils.getLocationDescription(flys, wqkm[2]) });
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
533 }
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
534
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
535 /** Write an csv-row at gauge location. */
9485
dd05a5eef210 Bezugspegel Winfo.Wspl + Fix.Awspl fix
gernotbelger
parents: 9460
diff changeset
536 protected void writeRow6(final CSVWriter writer, final double wqkm[], final String wOrQDesc, final D4EArtifact flys, final String gaugeName,
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
537 final String wAtGauge, final boolean isQ) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
538 final NumberFormat kmf = getKmFormatter();
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
539 final NumberFormat wf = getWFormatter();
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
540 final NumberFormat qf = getQFormatter();
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
541
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
542 writer.writeNext(new String[] { kmf.format(wqkm[2]), wf.format(wqkm[0]), qf.format(RiverUtils.roundQ(wqkm[1])), wOrQDesc,
9485
dd05a5eef210 Bezugspegel Winfo.Wspl + Fix.Awspl fix
gernotbelger
parents: 9460
diff changeset
543 RiverUtils.getLocationDescription(flys, wqkm[2]), gaugeName });
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
544 }
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
545
8932
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
546 /**
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
547 * @deprecated Use {@link WaterlevelDescriptionBuilder} instead.
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
548 */
8731c3dabb56 Extracting some winfo logic without breaking old code
gernotbelger
parents: 8856
diff changeset
549 @Deprecated
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
550 public final String getDesc(final WQKms wqkms, final boolean isQ) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
551 final D4EArtifact flys = (D4EArtifact) this.master;
6606
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
552 String colDesc = "";
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
553
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
554 if (flys instanceof WINFOArtifact && isQ) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
555 colDesc = getCSVRowTitle((WINFOArtifact) flys, wqkms);
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
556 } else if (!isQ) {
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
557 final Double value = RiverUtils.getValueFromWQ(wqkms);
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
558 colDesc = (value != null) ? Formatter.getWaterlevelW(this.context).format(value) : null;
6606
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
559 }
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
560
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
561 if (flys instanceof WINFOArtifact) {
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
562 if (wqkms != null && wqkms.getRawValue() != null) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
563 final WINFOArtifact winfo = (WINFOArtifact) flys;
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
564 colDesc = RiverUtils.getNamedMainValue(winfo, wqkms.getRawValue());
6606
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
565 // For 'W am Pegel' s
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
566 if (colDesc == null) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
567 final Double value = RiverUtils.getValueFromWQ(wqkms);
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
568 colDesc = (value != null) ? Formatter.getWaterlevelW(this.context).format(value) : null;
6606
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
569 }
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
570 }
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
571 }
6610
8d88db1f5d36 Add quick hack to fix the exported name of Amtl.Fixierungen
Andre Heinecke <aheinecke@intevation.de>
parents: 6608
diff changeset
572 if (colDesc != null) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
573 /*
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
574 * Quick hack. Can be removed when database strings are
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
575 * adapted or left in here as it should never be harmful.
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
576 */
6610
8d88db1f5d36 Add quick hack to fix the exported name of Amtl.Fixierungen
Andre Heinecke <aheinecke@intevation.de>
parents: 6608
diff changeset
577 colDesc = colDesc.replace("Amtl.Festlegung_", "Amtl. ");
8d88db1f5d36 Add quick hack to fix the exported name of Amtl.Fixierungen
Andre Heinecke <aheinecke@intevation.de>
parents: 6608
diff changeset
578 }
8d88db1f5d36 Add quick hack to fix the exported name of Amtl.Fixierungen
Andre Heinecke <aheinecke@intevation.de>
parents: 6608
diff changeset
579
6606
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
580 return colDesc == null ? "" : colDesc;
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
581 }
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
582
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
583 private List<Segment> getSegments(final D4EArtifact flys) {
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
584 if (flys instanceof AbstractFixBunduArtifact) {
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
585 // Get W/Q input per gauge for this case.
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
586 final FixRealizingAccess fixAccess = new FixRealizingAccess(flys);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
587 return fixAccess.getSegments();
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
588
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
589 }
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
590 return null;
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
591 }
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
592
3252
62c9bcef0680 Fix issue705 (maín value names also in w/q-range mode).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2764
diff changeset
593 /**
62c9bcef0680 Fix issue705 (maín value names also in w/q-range mode).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2764
diff changeset
594 * Write "rows" of csv data from wqkms with writer.
62c9bcef0680 Fix issue705 (maín value names also in w/q-range mode).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2764
diff changeset
595 */
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
596 protected void wQKms2CSV(final CSVWriter writer, final WQKms wqkms, final boolean atGauge, final boolean isQ) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
597 log.debug("WaterlevelExporter.wQKms2CSV");
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
598
4836
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
599 // Skip constant data.
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
600 if (wqkms instanceof ConstantWQKms) {
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
601 return;
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
602 }
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
603
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
604 final int size = wqkms.size();
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
605 double[] result = new double[3];
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
606
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
607 final D4EArtifact flys = (D4EArtifact) this.master;
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
608 final RangeAccess rangeAccess = new RangeAccess(flys);
8759
2faf6cef6f5f (issue1801) Remove indirection via RiverUtils for obtaining reference gauge.
Tom Gottfried <tom@intevation.de>
parents: 8362
diff changeset
609
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
610 final List<Gauge> gauges = RiverUtils.getGauges(flys);
8759
2faf6cef6f5f (issue1801) Remove indirection via RiverUtils for obtaining reference gauge.
Tom Gottfried <tom@intevation.de>
parents: 8362
diff changeset
611
9536
aa23225fd85f Fixed exception in wq csv export (raising error_no_export_found) in cases when the calc range starts outside any gauge range
mschaefer
parents: 9486
diff changeset
612 Gauge gauge = rangeAccess.getRiver().determineRefGauge(rangeAccess.getKmRange(), rangeAccess.isRange());
aa23225fd85f Fixed exception in wq csv export (raising error_no_export_found) in cases when the calc range starts outside any gauge range
mschaefer
parents: 9486
diff changeset
613
aa23225fd85f Fixed exception in wq csv export (raising error_no_export_found) in cases when the calc range starts outside any gauge range
mschaefer
parents: 9486
diff changeset
614 // REMARK gauge may be null when rangeAccess starts outside any gauge range
aa23225fd85f Fixed exception in wq csv export (raising error_no_export_found) in cases when the calc range starts outside any gauge range
mschaefer
parents: 9486
diff changeset
615 if (gauge == null)
aa23225fd85f Fixed exception in wq csv export (raising error_no_export_found) in cases when the calc range starts outside any gauge range
mschaefer
parents: 9486
diff changeset
616 gauge = rangeAccess.getRiver().determineRefGauge(wqkms.getKms(), rangeAccess.isRange());
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
617
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
618 final String notinrange = msg(CSV_NOT_IN_GAUGE_RANGE, DEFAULT_CSV_NOT_IN_GAUGE_RANGE);
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
619 final String gaugeName = gauge != null ? gauge.getName() : notinrange;
9536
aa23225fd85f Fixed exception in wq csv export (raising error_no_export_found) in cases when the calc range starts outside any gauge range
mschaefer
parents: 9486
diff changeset
620
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
621 final double a = gauge != null ? gauge.getRange().getA().doubleValue() : Double.NaN;
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
622 final double b = gauge != null ? gauge.getRange().getB().doubleValue() : Double.NaN;
2066
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
623
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
624 final long startTime = System.currentTimeMillis();
2144
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
625
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
626 String desc = getDesc(wqkms, isQ);
6606
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
627
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
628 final List<Segment> segments = getSegments(flys);
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
629 final boolean isFixRealize = isFixrealize(segments);
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
630 if (atGauge) { // "At gauge" needs more output.
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
631
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
632 // Kms tend to be close together so caching the last sector
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
633 // is a good time saving heuristic.
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
634 Segment lastSegment = null;
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
635 Gauge lastGauge = null;
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
636
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
637 final NumberFormat nf = Formatter.getFormatter(this.context.getMeta(), 0, 0);
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
638
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
639 for (int i = 0; i < size; ++i) {
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
640 result = wqkms.get(i, result);
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
641
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
642 final double station = result[2];
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
643 final double q = result[1];
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
644
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
645 if (segments != null) {
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
646 final Segment found = lastSegment != null && lastSegment.inside(station) ? lastSegment : findSegment(station, segments);
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
647
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
648 if (found != null) {
6606
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
649 desc = nf.format(found.getValues()[0]);
5103
15e856a64cdd Partly fix flys/issue1142: Include specified W values at gauge for fix.real.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4979
diff changeset
650 }
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
651 lastSegment = found;
5103
15e856a64cdd Partly fix flys/issue1142: Include specified W values at gauge for fix.real.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4979
diff changeset
652 }
15e856a64cdd Partly fix flys/issue1142: Include specified W values at gauge for fix.real.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4979
diff changeset
653
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
654 String gaugeN;
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
655 final String wAtGauge;
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
656 if (isFixRealize) {
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
657 final Gauge found = lastGauge != null && lastGauge.getRange().contains(station) ? lastGauge : findGauge(station, gauges);
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
658
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
659 gaugeN = found != null ? found.getName() : notinrange;
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
660 lastGauge = found;
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
661
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
662 wAtGauge = this.getWaterlevel(q, found); // THIS IS NEW (and makes common super method difficult)
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
663 } else {
4979
4c76c5f69eaf WaterlevelExporter: Doc and issue-TODO.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4859
diff changeset
664 // TODO issue1114: Take correct gauge
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
665 gaugeN = station >= a && station <= b ? gaugeName : notinrange;
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
666
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
667 wAtGauge = "";
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
668 }
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
669
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
670 writeRow6(writer, result, desc, flys, gaugeN, wAtGauge, isQ);
2065
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
671 }
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
672 } else { // Not at gauge.
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
673 for (int i = 0; i < size; ++i) {
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
674 result = wqkms.get(i, result);
9485
dd05a5eef210 Bezugspegel Winfo.Wspl + Fix.Awspl fix
gernotbelger
parents: 9460
diff changeset
675 writeRow4(writer, result, flys, gauge, isQ);
2065
2f5628f0de0e Part 2 of #125: add gaugename and Q description based on the selected WQ mode.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2063
diff changeset
676 }
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
677 }
2144
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
678
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
679 final long stopTime = System.currentTimeMillis();
2144
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
680
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
681 if (log.isDebugEnabled()) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
682 log.debug("Writing CSV took " + (stopTime - startTime) / 1000f + " secs.");
2144
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
683 }
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
684 }
418
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
685
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
686 private boolean isFixrealize(final List<Segment> segments) {
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
687 boolean isFixRealize = false;
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
688 if (segments != null && !segments.isEmpty()) {
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
689 isFixRealize = true;
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
690 }
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
691 return isFixRealize;
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
692 }
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
693
418
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
694 /**
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
695 * Generates the output in WST format.
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
696 */
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
697 public void generateWST() throws IOException {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
698 log.info("WaterlevelExporter.generateWST");
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
699
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
700 final int cols = this.data.get(0).length + this.officalFixings.size();
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
701 final WstWriter writer = new WstWriter(cols);
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
702
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
703 writeWSTData(writer);
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
704
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
705 writer.write(this.out);
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
706 }
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
707
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
708 public void writeWSTData(final WstWriter writer) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
709 log.debug("WaterlevelExporter.writeWSTData");
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
710
749
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
711 double[] result = new double[4];
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
712
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
713 for (final WQKms[] tmp : this.data) {
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
714 for (final WQKms wqkms : tmp) {
5105
34baad34987f Skip ConstantWQKms (Umhuellende) in exports.
Raimund Renkert <rrenkert@intevation.de>
parents: 5103
diff changeset
715 if (wqkms instanceof ConstantWQKms) {
34baad34987f Skip ConstantWQKms (Umhuellende) in exports.
Raimund Renkert <rrenkert@intevation.de>
parents: 5103
diff changeset
716 continue;
34baad34987f Skip ConstantWQKms (Umhuellende) in exports.
Raimund Renkert <rrenkert@intevation.de>
parents: 5103
diff changeset
717 }
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
718 final int size = wqkms != null ? wqkms.size() : 0;
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
719
450
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 447
diff changeset
720 addWSTColumn(writer, wqkms);
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
721
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
722 for (int i = 0; i < size; i++) {
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
723 result = wqkms.get(i, result);
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
724
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
725 writer.add(result);
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
726 }
749
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
727
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
728 if (wqkms instanceof WQCKms) {
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
729 addWSTColumn(writer, wqkms);
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
730
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
731 for (int c = 0; c < size; c++) {
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
732 result = wqkms.get(c, result);
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
733
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
734 writer.addCorrected(result);
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
735 }
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
736 }
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
737 }
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
738 }
7604
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
739
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
740 // Append the official fixing interpolated to the calculation steps
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
741 //
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
742 // There was some confusion how to implement this. see flys/issue1620
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
743 // for details.
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
744 for (final WQKms wqkms : this.officalFixings) {
7604
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
745 // To add some spaces here or to add them in the writer,..
7615
edb323a4c286 (issue1620) join column names with two empty spaces
Andre Heinecke <aheinecke@intevation.de>
parents: 7614
diff changeset
746 writer.addColumn(getDesc(wqkms, true));
7604
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
747
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
748 // Get all lines from the calculation
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
749 final Map<Double, WstLine> calcLines = writer.getLines();
7604
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
750
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
751 // All KM values where we have a point for
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
752 final TDoubleArrayList officialKms = wqkms.allKms();
7604
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
753
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
754 for (final Map.Entry<Double, WstLine> entry : calcLines.entrySet()) {
7604
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
755 // Bad for perfomance but the user can wait a bit for WST
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
756 // so lets not spend time optimizing too much,.. *hides*
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
757 final double km = entry.getKey().doubleValue();
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
758 final int idx = officialKms.indexOf(km);
7604
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
759 if (idx != -1) {
7614
3e3a4f44423a (issue1620) Print the real official Q value instead of the first
Andre Heinecke <aheinecke@intevation.de>
parents: 7604
diff changeset
760 entry.getValue().add(wqkms.getW(idx), wqkms.getQ(idx));
7604
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
761 }
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
762 }
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
763 }
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
764 }
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
765
2038
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
766 /**
6576
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6101
diff changeset
767 * Register a new column at <i>writer</i>. The name /
2038
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
768 * title of the column depends on the Q or W value of <i>wqkms</i>. If a Q
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
769 * was selected and the Q fits to a named main value, the title is set to
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
770 * the named main value. Otherwise, the name returned by
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
771 * <i>WQKms.getName()</i> is set.
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
772 *
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
773 * @param writer
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
774 * The WstWriter.
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
775 * @param wqkms
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
776 * The new WST column.
2038
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
777 */
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
778 protected void addWSTColumn(final WstWriter writer, final WQKms wqkms) {
4836
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
779 if (wqkms instanceof ConstantWQKms) {
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
780 return;
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
781 }
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
782 if (this.master instanceof WINFOArtifact) {
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
783 writer.addColumn(getColumnTitle((WINFOArtifact) this.master, wqkms));
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
784 } else {
2038
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
785 writer.addColumn(wqkms.getName());
f73036b991e2 Bugfix: repaired broken named values in exports - the last solution had bad side effects.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2035
diff changeset
786 }
450
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 447
diff changeset
787 }
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 447
diff changeset
788
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
789 @Override
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
790 protected void writePDF(final OutputStream out) {
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
791 log.debug("write PDF");
2185
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2182
diff changeset
792
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
793 final boolean isQ = isQ();
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
794 final MetaAndTableJRDataSource source = new MetaAndTableJRDataSource();
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
795
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
796 final boolean isFixationAnalysis = this.master instanceof AbstractFixBunduArtifact;
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
797 final boolean doWaterlevelAtGaugeOutput = isQ && isFixationAnalysis;
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
798
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
799 final String jasperFile = doWaterlevelAtGaugeOutput ? "/jasper/templates/fix_waterlevel.jrxml" : "/jasper/templates/waterlevel.jrxml";
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
800
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
801 ((D4EArtifact) this.master).getData("calculation.mode");
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
802 if ((this.master instanceof WINFOArtifact)) {
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
803 addMetaData(source, "calc.surface.curve", isQ); // Wasserspiegellage
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
804 } else if (this.master instanceof AbstractFixBunduArtifact) {
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
805 addMetaData(source, ((AbstractFixBunduArtifact) this.master).getCalculationModeString(), isQ);
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
806 }
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
807
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
808 try {
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
809 final List<String[]> sorted = getRows(); // Custom Result could be nice, too...
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
810 for (final String[] list : sorted) {
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
811 source.addData(list);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
812 }
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
813
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
814 final JasperReporter reporter = new JasperReporter();
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
815
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
816 final JasperDesigner d = reporter.addReport(jasperFile, source);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
817 d.removeColumn("delete"); // I don't want to mess with getRows(), so I prefer deleting the unwanted row directly in the report.
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
818
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
819 reporter.exportPDF(this.out);
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
820 }
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
821 catch (final JRException je) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
822 log.warn("Error generating PDF Report!", je);
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
823 }
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
824
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
825 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
826
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
827 private List<String[]> getRows() {
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
828 final List<String[]> list = new ArrayList<>();
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
829 final WQ_MODE mode = RiverUtils.getWQMode((D4EArtifact) this.master);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
830 final boolean atGauge = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.WGAUGE;
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
831 final boolean isQ = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.QFREE;
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
832
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
833 Double first = Double.NaN;
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
834 Double last = Double.NaN;
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
835
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
836 for (final WQKms[] tmp : this.data) {
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
837 for (final WQKms wqkms : tmp) {
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
838 list.addAll(getRows2(wqkms, atGauge, isQ));
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
839 final double[] firstLast = wqkms.getFirstLastKM();
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
840 if (first.isNaN()) {
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
841 /* Initialize */
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
842 first = firstLast[0];
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
843 last = firstLast[1];
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
844 }
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
845 if (firstLast[0] > firstLast[1]) {
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
846 /*
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
847 * Calculating upstream we assert that it is
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
848 * impossible that the direction changes during this
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
849 * loop
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
850 */
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
851 first = Math.max(first, firstLast[0]);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
852 last = Math.min(last, firstLast[1]);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
853 } else if (firstLast[0] < firstLast[1]) {
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
854 first = Math.min(first, firstLast[0]);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
855 last = Math.max(last, firstLast[1]);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
856 } else {
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
857 first = last = firstLast[0];
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
858 }
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
859 }
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
860 }
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
861
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
862 /* Append the official fixing at the bottom */
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
863 for (final WQKms wqkms : this.officalFixings) {
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
864 list.addAll(getRows2(filterWQKms(wqkms, first, last), atGauge, isQ));
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
865 }
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
866 return list;
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
867 }
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
868
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
869 private List<String[]> getRows2(final WQKms wqkms, final boolean atGauge, final boolean isQ) {
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
870 log.debug("WaterlevelExporter.addWKmsData"); // OLD CODE :-/
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
871
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
872 final List<String[]> list = new ArrayList<>();
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
873 // Skip constant data.
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
874 if (wqkms instanceof ConstantWQKms) {
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
875 return null;
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
876 }
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
877
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
878 final NumberFormat kmf = getKmFormatter();
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
879 final NumberFormat wf = getWFormatter();
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
880 final NumberFormat qf = getQFormatter();
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
881
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
882 final int size = wqkms.size();
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
883 double[] result = new double[3];
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
884
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
885 final D4EArtifact flys = (D4EArtifact) this.master;
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
886 final RangeAccess rangeAccess = new RangeAccess(flys);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
887
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
888 final List<Gauge> gauges = RiverUtils.getGauges(flys);
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
889
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
890 Gauge gauge = rangeAccess.getRiver().determineRefGauge(rangeAccess.getKmRange(), rangeAccess.isRange());
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
891 // REMARK gauge may be null when rangeAccess starts outside any gauge range
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
892 if (gauge == null)
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
893 gauge = rangeAccess.getRiver().determineRefGauge(wqkms.getKms(), rangeAccess.isRange());
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
894
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
895 final String notinrange = msg(CSV_NOT_IN_GAUGE_RANGE, DEFAULT_CSV_NOT_IN_GAUGE_RANGE);
9538
fb80fc7ec610 "Kein Bezugspegel" AWSPL PDF-Export-Fix
gernotbelger
parents: 9536
diff changeset
896 final String gaugeName = gauge != null ? gauge.getName() : notinrange;
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
897
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
898 final double a = gauge != null ? gauge.getRange().getA().doubleValue() : Double.NaN;
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
899 final double b = gauge != null ? gauge.getRange().getB().doubleValue() : Double.NaN;
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
900
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
901 final WaterlevelDescriptionBuilder wldb = new WaterlevelDescriptionBuilder(flys, this.context);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
902
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
903 String desc = wldb.getDesc(wqkms);// class getDesc(wqkms, isQ);
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
904
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
905 Segment lastSegment = null;
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
906
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
907 final List<Segment> segments = getSegments(flys);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
908
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
909 final boolean isFixRealize = isFixrealize(segments);
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
910
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
911 final NumberFormat nf = Formatter.getFormatter(this.context.getMeta(), 0, 0);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
912
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
913 Gauge lastGauge = null;
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
914
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
915 for (int i = 0; i < size; ++i) {
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
916 result = wqkms.get(i, result);
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
917
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
918 final double station = result[2];
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
919 final double q = result[1];
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
920 final double w = result[0];
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
921
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
922 if (segments != null) {
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
923 final Segment found = lastSegment != null && lastSegment.inside(station) ? lastSegment : findSegment(station, segments);
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
924
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
925 if (found != null) {
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
926 desc = nf.format(found.getValues()[0]);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
927 }
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
928 lastSegment = found;
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
929 }
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
930
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
931 String gaugeN;
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
932 final String wAtGauge;
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
933 if (isFixRealize) {
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
934 final Gauge found = lastGauge != null && lastGauge.getRange().contains(station) ? lastGauge : findGauge(station, gauges);
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
935
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
936 gaugeN = found != null ? found.getName() : notinrange;
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
937 lastGauge = found;
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
938
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
939 wAtGauge = this.getWaterlevel(q, found); // THIS IS NEW (and makes common super method difficult)
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
940 } else {
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
941 // TODO issue1114: Take correct gauge
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
942 gaugeN = station >= a && station <= b ? gaugeName : notinrange;
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
943 wAtGauge = "";
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
944 }
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
945
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
946 if (atGauge) {
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
947 list.add(new String[] { kmf.format(station), wf.format(w), wAtGauge, qf.format(RiverUtils.roundQ(q)), desc,
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
948 RiverUtils.getLocationDescription(flys, station), gaugeN });
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
949 } else {
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
950 list.add(new String[] { kmf.format(station), wf.format(w), wAtGauge, qf.format(RiverUtils.roundQ(q)), desc,
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
951 RiverUtils.getLocationDescription(flys, station), gaugeN });
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
952 }
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
953 }
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
954
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
955 return list;
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
956 }
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
957
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
958 protected final void addMetaData(final MetaAndTableJRDataSource source, final String calculation, final boolean isQ) {
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
959 final D4EArtifact flys = (D4EArtifact) this.master;
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
960 final String user = CalculationUtils.findArtifactUser(this.context, flys);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
961 final RangeAccess ra = new RangeAccess(flys);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
962 final RiverInfo ri = new RiverInfo(ra.getRiver());
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
963
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
964 final DefaultCalculationResults results = new DefaultCalculationResults(msg(calculation), user, ri, ra.getRange());
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
965 final ExportContextPDF contextPdf = new ExportContextPDF(this.context, results);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
966 contextPdf.addJRMetaDataDefaults(source);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
967 contextPdf.addJRMetaDataForModules(source);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
968
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
969 /* column headings */
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
970 contextPdf.addJRMetadata(source, "station_header", GeneralResultType.station);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
971 contextPdf.addJRMetadata(source, "fix_w", msg(CSV_W_HEADER, DEFAULT_CSV_W_HEADER, new Object[] { ri.getWstUnit() }));
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
972 contextPdf.addJRMetadata(source, "w_at_gauge_header", msg("fix.export.csv.w_at_gauge"));
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
973 contextPdf.addJRMetadata(source, "fix_q", msg(CSV_Q_HEADER));
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
974
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
975 contextPdf.addJRMetadata(source, "waterlevel_name_header", msg("common.export.csv.header.mainvalue_label"));
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
976 contextPdf.addJRMetadata(source, "location_header", msg("common.export.csv.header.location"));
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
977
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
978 // FIXME: use WaterlevelDescriptionBuilder instead and also remove all this duplicate code.
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
979 final String waterlevelOrBezeichnung = (isQ ? msg(CSV_Q_DESC_HEADER, DEFAULT_CSV_Q_DESC_HEADER) : msg(CSV_W_DESC_HEADER, DEFAULT_CSV_W_DESC_HEADER));
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
980 contextPdf.addJRMetadata(source, "w_at_gauge_header_2", waterlevelOrBezeichnung);
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
981
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
982 // msg("export.waterlevel.csv.header.w.desc")); (old. delete)
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
983
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
984 contextPdf.addJRMetadata(source, "location_header", msg("common.export.csv.header.location"));
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
985 contextPdf.addJRMetadata(source, "gauge_header", msg("common.export.csv.header.gauge"));
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
986
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
987 }
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
988
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
989 private WKmsJRDataSource createJRData() {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
990 final WKmsJRDataSource source = new WKmsJRDataSource();
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
991
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
992 final WQ_MODE mode = RiverUtils.getWQMode((D4EArtifact) this.master);
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
993 final boolean atGauge = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.WGAUGE;
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
994 final boolean isQ = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.QFREE;
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
995
6608
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
996 Double first = Double.NaN;
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
997 Double last = Double.NaN;
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
998
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
999 addMetaData(source);
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1000 for (final WQKms[] tmp : this.data) {
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1001 for (final WQKms wqkms : tmp) {
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1002 addWKmsData(wqkms, atGauge, isQ, source);
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1003 final double[] firstLast = wqkms.getFirstLastKM();
6608
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
1004 if (first.isNaN()) {
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
1005 /* Initialize */
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
1006 first = firstLast[0];
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
1007 last = firstLast[1];
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
1008 }
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
1009 if (firstLast[0] > firstLast[1]) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1010 /*
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1011 * Calculating upstream we assert that it is
6608
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
1012 * impossible that the direction changes during this
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1013 * loop
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1014 */
6608
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
1015 first = Math.max(first, firstLast[0]);
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
1016 last = Math.min(last, firstLast[1]);
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
1017 } else if (firstLast[0] < firstLast[1]) {
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
1018 first = Math.min(first, firstLast[0]);
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
1019 last = Math.max(last, firstLast[1]);
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
1020 } else {
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
1021 first = last = firstLast[0];
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
1022 }
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1023 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1024 }
6608
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
1025
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
1026 /* Append the official fixing at the bottom */
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1027 for (final WQKms wqkms : this.officalFixings) {
6608
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
1028 addWKmsData(filterWQKms(wqkms, first, last), atGauge, isQ, source);
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
1029 }
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1030 return source;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1031 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1032
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
1033 public void addMetaData(final WKmsJRDataSource source) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1034 final CallMeta meta = this.context.getMeta();
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1035
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1036 final D4EArtifact flys = (D4EArtifact) this.master;
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1037
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1038 source.addMetaData("river", RiverUtils.getRivername(flys));
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1039
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1040 final Locale locale = Resources.getLocale(meta);
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1041 final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1042 final NumberFormat kmf = getKmFormatter();
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1043
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1044 source.addMetaData("date", df.format(new Date()));
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1045
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1046 final RangeAccess rangeAccess = new RangeAccess(flys);
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1047 final double[] kms = rangeAccess.getKmRange();
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1048 source.addMetaData("range", kmf.format(kms[0]) + " - " + kmf.format(kms[kms.length - 1]));
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1049
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
1050 source.addMetaData("w_at_gauge_header", Resources.getMsg(meta, "fix.export.csv.w_at_gauge")); // dürfte kein Problem sein für Vorlagen, die kein
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
1051 // "w_at_gauge"
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
1052 // haben
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
1053
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
1054 source.addMetaData("gauge", RiverUtils.getGaugename(flys));
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1055
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1056 source.addMetaData("calculation", Resources.getMsg(locale, PDF_HEADER_MODE, "Waterlevel"));
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1057 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1058
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1059 protected void addWKmsData(final WQKms wqkms, final boolean atGauge, final boolean isQ, final WKmsJRDataSource source) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
1060 log.debug("WaterlevelExporter.addWKmsData");
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1061
4836
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
1062 // Skip constant data.
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
1063 if (wqkms instanceof ConstantWQKms) {
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
1064 return;
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
1065 }
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
1066
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1067 final NumberFormat kmf = getKmFormatter();
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1068 final NumberFormat wf = getWFormatter();
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1069 final NumberFormat qf = getQFormatter();
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1070
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1071 final int size = wqkms.size();
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1072 double[] result = new double[3];
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1073
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1074 final D4EArtifact flys = (D4EArtifact) this.master;
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1075 final RangeAccess rangeAccess = new RangeAccess(flys);
8759
2faf6cef6f5f (issue1801) Remove indirection via RiverUtils for obtaining reference gauge.
Tom Gottfried <tom@intevation.de>
parents: 8362
diff changeset
1076
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1077 final Gauge gauge = rangeAccess.getRiver().determineRefGauge(rangeAccess.getKmRange(), rangeAccess.isRange());
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1078
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1079 final String gaugeName = gauge.getName();
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1080 String desc = "";
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1081 final String notinrange = msg(CSV_NOT_IN_GAUGE_RANGE, DEFAULT_CSV_NOT_IN_GAUGE_RANGE);
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1083 final double a = gauge.getRange().getA().doubleValue();
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1084 final double b = gauge.getRange().getB().doubleValue();
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1085
6606
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
1086 desc = getDesc(wqkms, isQ);
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1087 final long startTime = System.currentTimeMillis();
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1088
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1089 for (int i = 0; i < size; i++) {
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1090 result = wqkms.get(i, result);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1091
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1092 if (atGauge) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1093 source.addData(new String[] { kmf.format(result[2]), wf.format(result[0]), qf.format(RiverUtils.roundQ(result[1])), desc,
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1094 RiverUtils.getLocationDescription(flys, result[2]), result[2] >= a && result[2] <= b ? gaugeName : notinrange });
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1095 } else {
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1096 source.addData(new String[] { kmf.format(result[2]), wf.format(result[0]), qf.format(RiverUtils.roundQ(result[1])), desc,
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1097 RiverUtils.getLocationDescription(flys, result[2]), result[2] >= a && result[2] <= b ? gaugeName : notinrange });
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1098 }
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
1099
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1100 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1101
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1102 final long stopTime = System.currentTimeMillis();
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1103
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7639
diff changeset
1104 if (log.isDebugEnabled()) {
9082
42c15e2f95fb 2.3.4.1.4 Wasserstand falsche Einheit
gernotbelger
parents: 9040
diff changeset
1105 log.debug("Writing PDF data took " + (stopTime - startTime) / 1000f + " secs.");
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1106 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1107 }
9457
65f28328c9a3 ausgelagerte Wasserspiegellage AWSPL neue Spalte
gernotbelger
parents: 9323
diff changeset
1108
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1109 protected final String getWaterlevel(final double discharge, final Gauge gauge) {
9562
2b1626fa4a95 W a. P. (aktuell)
gernotbelger
parents: 9554
diff changeset
1110 final NumberFormat formatter = Formatter.getIntegerFormatter(this.context);
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1111 final Double waterlevel = this.getWforGaugeAndQ(gauge, discharge);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1112 if (waterlevel != null)
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1113 return formatter.format(waterlevel);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1114 return "";
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1115 }
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1116
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1117 private Double getWforGaugeAndQ(final Gauge gauge, final double q) {
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1118
9538
fb80fc7ec610 "Kein Bezugspegel" AWSPL PDF-Export-Fix
gernotbelger
parents: 9536
diff changeset
1119 final String key = gauge != null ? gauge.getName() + String.valueOf(q) : null;
fb80fc7ec610 "Kein Bezugspegel" AWSPL PDF-Export-Fix
gernotbelger
parents: 9536
diff changeset
1120 if (!this.gaugeQ_W_Map.containsKey(key) && key != null) {
9486
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1121
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1122 final DischargeTable dt = gauge.fetchMasterDischargeTable();
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1123 final double[][] table = DischargeTables.loadDischargeTableValues(dt);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1124
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1125 final double[] qs = DischargeTables.getWsForQ(table, q);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1126
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1127 // final DischargeTables dct = new DischargeTables(gauge.getRiver().getName(), gauge.getName());
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1128 // final double[] qs = DischargeTables.getWsForQ(dct.getFirstTable(), q); // TODO: KLÄREN, welche Abflusstabelle
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1129 // genommen werden soll!
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1130 if (qs != null && qs.length > 0) {
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1131 this.gaugeQ_W_Map.put(key, qs[0]);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1132 }
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1133 }
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1134 return this.gaugeQ_W_Map.get(key);
ce13a2f07290 pdf exports added for fixation+bundu (waterlevel)
gernotbelger
parents: 9485
diff changeset
1135 }
9554
33ce8eba9806 waterlevel export W/am Pegel / "Bezeichnung" fixes
gernotbelger
parents: 9538
diff changeset
1136 }

http://dive4elements.wald.intevation.org