annotate artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelExporter.java @ 7614:3e3a4f44423a

(issue1620) Print the real official Q value instead of the first The assumption Q=Q becomes false if there are more then one waterlevels to be exported and only one of them has an official value.
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 29 Nov 2013 11:12:31 +0100
parents 05549a84ee83
children edb323a4c286
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;
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
16 import java.util.Map;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
17 import java.util.HashMap;
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
18 import java.util.Date;
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19 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
20 import java.util.Locale;
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;
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 import au.com.bytecode.opencsv.CSVWriter;
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27
7604
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
28 import gnu.trove.TDoubleArrayList;
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
29
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
30 import org.apache.commons.math.FunctionEvaluationException;
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
31 import org.apache.commons.math.analysis.UnivariateRealFunction;
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
32
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
33 import org.apache.commons.math.analysis.interpolation.LinearInterpolator;
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
34
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
35 import org.dive4elements.river.artifacts.model.ConstantWQKms;
4836
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
36
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
37 import net.sf.jasperreports.engine.JasperExportManager;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
38 import net.sf.jasperreports.engine.JasperFillManager;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
39 import net.sf.jasperreports.engine.JasperPrint;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
40 import net.sf.jasperreports.engine.JRException;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
41
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
42 import org.dive4elements.artifacts.Artifact;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
43 import org.dive4elements.artifacts.CallMeta;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
44 import org.dive4elements.artifacts.common.utils.Config;
2066
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
45
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
46 import org.dive4elements.river.model.Gauge;
706
ddd8b37d5cd3 Removed dead code.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 701
diff changeset
47
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
48 import org.dive4elements.river.artifacts.access.FixRealizingAccess;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
49 import org.dive4elements.river.artifacts.access.RangeAccess;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
50 import org.dive4elements.river.artifacts.FixationArtifact;
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
51 import org.dive4elements.river.artifacts.D4EArtifact;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
52 import org.dive4elements.river.artifacts.WINFOArtifact;
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
53 import org.dive4elements.river.artifacts.StaticWQKmsArtifact;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
54 import org.dive4elements.river.artifacts.model.CalculationResult;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
55 import org.dive4elements.river.artifacts.model.Segment;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
56 import org.dive4elements.river.artifacts.model.WQCKms;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
57 import org.dive4elements.river.artifacts.model.WQKms;
7604
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
58 import org.dive4elements.river.artifacts.model.WstLine;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
59 import org.dive4elements.river.artifacts.model.WKmsJRDataSource;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
60 import org.dive4elements.river.artifacts.model.WQKmsResult;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
61 import org.dive4elements.river.artifacts.resources.Resources;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
62
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
63 import org.dive4elements.river.utils.RiverUtils;
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
64 import org.dive4elements.river.utils.RiverUtils.WQ_MODE;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5587
diff changeset
65 import org.dive4elements.river.utils.Formatter;
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 /**
3252
62c9bcef0680 Fix issue705 (maín value names also in w/q-range mode).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2764
diff changeset
68 * 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
69 * 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
70 *
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 * @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
72 */
391
5d6988836f01 Added an exporter to export the computed data of a duration curve.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 389
diff changeset
73 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
74
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 /** The logger used in this exporter.*/
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 private static Logger logger = Logger.getLogger(WaterlevelExporter.class);
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
78 public static final String FACET_WST = "wst";
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
79
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
80 /* This should be the same as in the StaticWQKmsArtifact */
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
81 public static final String STATICWQKMSNAME = "staticwqkms";
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
82
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
83 public static final String CSV_KM_HEADER =
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
84 "export.waterlevel.csv.header.km";
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
85
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
86 public static final String CSV_W_HEADER =
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
87 "export.waterlevel.csv.header.w";
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
88
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
89 public static final String CSV_Q_HEADER =
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
90 "export.waterlevel.csv.header.q";
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
91
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
92 public static final String CSV_Q_DESC_HEADER =
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
93 "export.waterlevel.csv.header.q.desc";
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
94
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
95 public static final String CSV_W_DESC_HEADER =
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
96 "export.waterlevel.csv.header.w.desc";
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
97
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
98 public static final String CSV_LOCATION_HEADER =
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
99 "export.waterlevel.csv.header.location";
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
100
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
101 public static final String CSV_GAUGE_HEADER =
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
102 "export.waterlevel.csv.header.gauge";
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
103
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
104 public static final String CSV_META_RESULT =
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
105 "export.waterlevel.csv.meta.result";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
106
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
107 public static final String CSV_META_CREATION =
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
108 "export.waterlevel.csv.meta.creation";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
109
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
110 public static final String CSV_META_CALCULATIONBASE =
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
111 "export.waterlevel.csv.meta.calculationbase";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
112
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
113 public static final String CSV_META_RIVER =
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
114 "export.waterlevel.csv.meta.river";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
115
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
116 public static final String CSV_META_RANGE =
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
117 "export.waterlevel.csv.meta.range";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
118
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
119 public static final String CSV_META_GAUGE =
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
120 "export.waterlevel.csv.meta.gauge";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
121
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
122 public static final String CSV_META_Q =
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
123 "export.waterlevel.csv.meta.q";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
124
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
125 public static final String CSV_META_W =
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
126 "export.waterlevel.csv.meta.w";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
127
2066
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
128 public static final String CSV_NOT_IN_GAUGE_RANGE =
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
129 "export.waterlevel.csv.not.in.gauge.range";
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
130
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
131 public static final Pattern NUMBERS_PATTERN =
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
132 Pattern.compile("\\D*(\\d++.\\d*)\\D*");
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
133
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
134 public static final String DEFAULT_CSV_KM_HEADER = "Fluss-Km";
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
135 public static final String DEFAULT_CSV_W_HEADER = "W [NN + m]";
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
136 public static final String DEFAULT_CSV_Q_HEADER = "Q [m\u00b3/s]";
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
137 public static final String DEFAULT_CSV_Q_DESC_HEADER = "Bezeichnung";
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
138 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
139 public static final String DEFAULT_CSV_LOCATION_HEADER = "Lage";
97a25b54eea3 Part 1 of #125: added a description for a location to the WaterlevelExport.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2045
diff changeset
140 public static final String DEFAULT_CSV_GAUGE_HEADER = "Bezugspegel";
2066
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
141 public static final String DEFAULT_CSV_NOT_IN_GAUGE_RANGE =
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
142 "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
143
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
144 public static final String PDF_HEADER_MODE = "export.waterlevel.pdf.mode";
2284
5d1ba04d2f68 Refactored Formatter access to ease reuse.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2185
diff changeset
145 public static final String JASPER_FILE = "export.waterlevel.pdf.file";
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
146
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
147 /** The storage that contains all WQKms objects that are calculated.*/
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
148 protected List<WQKms[]> data;
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
149
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
150 /** The storage that contains official fixings if available.*/
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
151 protected 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
152
7077
0a337f0005c2 Extended init() of OutGenerator to take name of the out to serve.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6941
diff changeset
153 public WaterlevelExporter() {
6941
d322da01d862 (issue1451) Round Q's in the way it is done for AT's and localize KM
Andre Heinecke <aheinecke@intevation.de>
parents: 6634
diff changeset
154 data = new ArrayList<WQKms[]>();
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
155 }
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
156
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
157 @Override
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
158 public void generate()
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
159 throws IOException
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
160 {
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
161 logger.debug("WaterlevelExporter.generate");
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
162
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
163 /* Check for official fixings. They should also be included in the
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
164 * export but only the calculation result is added with addData */
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
165
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
166 officalFixings = new ArrayList<WQKms>();
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
167
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
168 for (Artifact art: collection.getArtifactsByName(STATICWQKMSNAME, context)) {
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
169 if (art instanceof StaticWQKmsArtifact) {
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
170 StaticWQKmsArtifact sart = (StaticWQKmsArtifact) art;
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
171 if (!sart.isOfficial()) {
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
172 continue;
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
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
175 /* Check that we add the data only once */
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
176 WQKms toAdd = sart.getWQKms();
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
177 String newName = toAdd.getName();
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
178
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
179 boolean exists = false;
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
180 for (WQKms wqkm: officalFixings) {
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
181 /* The same official fixing could be in two
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
182 artifacts/outs so let's deduplicate */
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
183 if (wqkm.getName().equals(newName)) {
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
184 exists = true;
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
185 }
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
186 }
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
187 if (!exists) {
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
188 officalFixings.add(toAdd);
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
189 logger.debug("Adding additional offical fixing: " + newName);
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
190 }
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
191 }
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
192 }
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
193
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 if (facet != null && facet.equals(AbstractExporter.FACET_CSV)) {
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
195 generateCSV();
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
196 }
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
197 else if (facet != null && facet.equals(FACET_WST)) {
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
198 generateWST();
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
199 }
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
200 else if (facet != null && facet.equals(AbstractExporter.FACET_PDF)) {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
201 generatePDF();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
202 }
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
203 else {
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
204 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
205 }
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
206 }
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
207
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
208
701
dad1a2c88f9f Base WST/CSV exports on facets. TODO: generate the facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 664
diff changeset
209 @Override
dad1a2c88f9f Base WST/CSV exports on facets. TODO: generate the facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 664
diff changeset
210 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
211 if (d instanceof CalculationResult) {
3b7e9ddf6bb1 New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
212 d = ((CalculationResult)d).getData();
3b7e9ddf6bb1 New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
213 if (d instanceof WQKms []) {
3b7e9ddf6bb1 New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
214 data.add((WQKms [])d);
3b7e9ddf6bb1 New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 707
diff changeset
215 }
4405
7e7587c905ab WaterlevelExporter: Use new WQKmsResult to avoid parallel paths for Extrem- and Fixing-Result.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3462
diff changeset
216 else if (d instanceof WQKmsResult) {
7e7587c905ab WaterlevelExporter: Use new WQKmsResult to avoid parallel paths for Extrem- and Fixing-Result.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3462
diff changeset
217 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
218 }
701
dad1a2c88f9f Base WST/CSV exports on facets. TODO: generate the facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 664
diff changeset
219 }
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
220 }
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
221
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
222
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
223 /**
6576
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6101
diff changeset
224 * 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
225 * 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
226 * 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
227 * 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
228 * 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
229 *
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 * @param winfo A WINFO Artifact.
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
231 * @param wqkms A WQKms object that should be prepared.
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 protected String getColumnTitle(WINFOArtifact winfo, WQKms wqkms) {
5131
42bae65c116b WaterlevelExporter: Fix log output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5112
diff changeset
234 logger.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
235
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
236 String name = wqkms.getName();
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
237
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 logger.debug("Name of WQKms = '" + name + "'");
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
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
240 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
241 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
242 }
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
243
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 Matcher m = NUMBERS_PATTERN.matcher(name);
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
245
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 if (m.matches()) {
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 String raw = m.group(1);
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
248
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
249 try {
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
250 double v = Double.valueOf(raw);
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
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
252 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
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 if (nmv != null && nmv.length() > 0) {
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
255 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
256 nmv += "=" + String.valueOf(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
257 logger.debug("Set named main value '" + nmv + "'");
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 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
260 }
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 catch (NumberFormatException nfe) {
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
263 // 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
264 }
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
265 }
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
266
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
267 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
268 }
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
269
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
270
2087
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
271 protected String getCSVRowTitle(WINFOArtifact winfo, WQKms wqkms) {
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
272 logger.debug("WaterlevelExporter.prepareNamedValue");
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
273
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
274 String name = wqkms.getName();
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 logger.debug("Name of WQKms = '" + name + "'");
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
277
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
278 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
279
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
280 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
281 return localizeWQKms(winfo, wqkms);
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
282 }
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 Double v = wqkms.getRawValue();
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
285
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
286 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
287
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
288 if (nmv != null && nmv.length() > 0) {
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
289 nmv = RiverUtils.stripNamedMainValue(nmv);
2087
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
290 logger.debug("Set named main value '" + nmv + "'");
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
291
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
292 return nmv;
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
293 }
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
294
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
295 return localizeWQKms(winfo, wqkms);
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
296 }
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
297
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
298
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 /**
62c9bcef0680 Fix issue705 (maín value names also in w/q-range mode).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2764
diff changeset
300 * 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
301 * format.
62c9bcef0680 Fix issue705 (maín value names also in w/q-range mode).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2764
diff changeset
302 */
2087
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
303 protected String localizeWQKms(WINFOArtifact winfo, WQKms wqkms) {
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
304 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
305 Double rawValue = wqkms.getRawValue();
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
306
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
307 if (rawValue == null) {
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
308 return wqkms.getName();
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
309 }
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 NumberFormat nf = Formatter.getRawFormatter(context);
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
312
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
313 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
314 return "W=" + 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 else {
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
317 return "Q=" + nf.format(rawValue);
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
318 }
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
319 }
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
320
bda04ae1154f #196 Localized the WQ labels in CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2068
diff changeset
321
701
dad1a2c88f9f Base WST/CSV exports on facets. TODO: generate the facets.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 664
diff changeset
322 @Override
391
5d6988836f01 Added an exporter to export the computed data of a duration curve.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 389
diff changeset
323 protected void writeCSVData(CSVWriter writer) {
5d6988836f01 Added an exporter to export the computed data of a duration curve.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 389
diff changeset
324 logger.info("WaterlevelExporter.writeData");
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
325
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
326 WQ_MODE mode = RiverUtils.getWQMode((D4EArtifact)master);
3252
62c9bcef0680 Fix issue705 (maín value names also in w/q-range mode).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2764
diff changeset
327 boolean atGauge = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.WGAUGE;
62c9bcef0680 Fix issue705 (maín value names also in w/q-range mode).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2764
diff changeset
328 boolean isQ = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.QFREE;
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
329 RiverUtils.WQ_INPUT input
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
330 = RiverUtils.getWQInputMode((D4EArtifact)master);
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
331
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
332 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
333 writeCSVHeader(writer, atGauge, isQ);
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
334
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
335 Double first = Double.NaN;
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
336 Double last = Double.NaN;
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
337
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
338 for (WQKms[] tmp: data) {
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
339 for (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
340 wQKms2CSV(writer, wqkms, atGauge, isQ);
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
341 double[] firstLast = wqkms.getFirstLastKM();
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
342 if (first.isNaN()) {
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
343 /* Initialize */
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
344 first = firstLast[0];
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
345 last = firstLast[1];
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
346 }
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
347 if (firstLast[0] > firstLast[1]) {
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
348 /* Calculating upstream we assert that it is
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
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
350 * loop */
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
351 first = Math.max(first, firstLast[0]);
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
352 last = Math.min(last, firstLast[1]);
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
353 } else if (firstLast[0] < firstLast[1]) {
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
354 first = Math.min(first, firstLast[0]);
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
355 last = Math.max(last, firstLast[1]);
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
356 } else {
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
357 first = last = firstLast[0];
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
358 }
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
359 }
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
360 }
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
361 /* Append the official fixing at the bottom */
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
362 for (WQKms wqkms: officalFixings) {
6603
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
363 wQKms2CSV(writer, filterWQKms(wqkms, first, last), atGauge, isQ);
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
364 }
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
365 }
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
366
6603
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
367
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
368 /** Filter a wqkms object to a distance.
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
369 *
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
370 * To handle upstream / downstream and to limit
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
371 * the officialFixings to the calculation distance
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
372 * 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
373 * with the relevant data.
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
374 *
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
375 * @param wqkms: The WQKms Object to filter
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
376 * @param first: The fist kilometer of the range
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
377 * @param last: The last kilometer of the range
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
378 *
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
379 * @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
380 */
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
381 private WQKms filterWQKms(WQKms wqkms, Double first, Double last) {
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
382 if (first.isNaN() || last.isNaN()) {
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
383 logger.warn("Filtering official fixing without valid first/last.");
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
384 return wqkms;
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
385 }
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
386 int firstIdx = first > last ? wqkms.size() - 1 : 0;
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
387 int lastIdx = first > last ? 0 : wqkms.size() -1;
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
388 WQKms filtered = new WQKms (wqkms.size());
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
389 filtered.setReferenceSystem(wqkms.getReferenceSystem());
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
390 filtered.setName(wqkms.getName());
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
391 double [] dp = new double [3];
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
392
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
393 if (first > last) {
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
394 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
395 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
396 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
397 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
398 }
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
399 }
6603
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
400 } 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
401 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
402 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
403 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
404 filtered.add(dp[0], dp[1], dp[2]);
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
405 }
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
406 }
6601
5ecc6d4d73f2 Add official fixings to Waterlevel CSV Export (issue1384)
Andre Heinecke <aheinecke@intevation.de>
parents: 6576
diff changeset
407 }
6603
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
408 return filtered;
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
409 }
6603
90756201c488 Factor out filtering code in WaterlevelExporter
Andre Heinecke <aheinecke@intevation.de>
parents: 6601
diff changeset
410
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
411
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
412 protected void writeCSVMeta(CSVWriter writer) {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
413 logger.info("WaterlevelExporter.writeCSVMeta");
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
414
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
415 // 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
416
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
417 CallMeta meta = context.getMeta();
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
418
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
419 D4EArtifact flys = (D4EArtifact) master;
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
420
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
421 writer.writeNext(new String[] {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
422 Resources.getMsg(
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
423 meta,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
424 CSV_META_RESULT,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
425 CSV_META_RESULT,
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
426 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
427 });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
428
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
429 Locale locale = Resources.getLocale(meta);
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
430 DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
431
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
432 writer.writeNext(new String[] {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
433 Resources.getMsg(
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
434 meta,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
435 CSV_META_CREATION,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
436 CSV_META_CREATION,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
437 new Object[] { df.format(new Date()) })
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
438 });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
439
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
440 writer.writeNext(new String[] {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
441 Resources.getMsg(
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
442 meta,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
443 CSV_META_CALCULATIONBASE,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
444 CSV_META_CALCULATIONBASE,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
445 new Object[] { "" }) // TODO what is required at this place?
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
446 });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
447
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
448 writer.writeNext(new String[] {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
449 Resources.getMsg(
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
450 meta,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
451 CSV_META_RIVER,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
452 CSV_META_RIVER,
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
453 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
454 });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
455
6101
a0078e5e3b39 Removed unused context from RangeAccess and subclasses leading to some dead code removal.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6074
diff changeset
456 RangeAccess rangeAccess = new RangeAccess(flys);
4859
e31231d0a720 WaterlevelExporter: Updated to use RangeAccess instead of FLYSUtils.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4836
diff changeset
457 double[] kms = rangeAccess.getKmRange();
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
458 writer.writeNext(new String[] {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
459 Resources.getMsg(
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
460 meta,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
461 CSV_META_RANGE,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
462 CSV_META_RANGE,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
463 new Object[] { kms[0], kms[kms.length-1] })
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
464 });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
465
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
466 writer.writeNext(new String[] {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
467 Resources.getMsg(
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
468 meta,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
469 CSV_META_GAUGE,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
470 CSV_META_GAUGE,
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
471 new Object[] { RiverUtils.getGaugename(flys) })
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
472 });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
473
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
474 RiverUtils.WQ_MODE wq = RiverUtils.getWQMode(flys);
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
475 if (wq == RiverUtils.WQ_MODE.QFREE || wq == RiverUtils.WQ_MODE.QGAUGE) {
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
476 double[] qs = RiverUtils.getQs(flys);
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
477 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
478
2423
ac528b883b47 Picked rev 4070,4074,4076,4080 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2290
diff changeset
479 String data = "";
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
480
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
481 if ((input == RiverUtils.WQ_INPUT.ADAPTED ||
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
482 input == RiverUtils.WQ_INPUT.RANGE) &&
2423
ac528b883b47 Picked rev 4070,4074,4076,4080 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2290
diff changeset
483 qs != null && qs.length > 0)
ac528b883b47 Picked rev 4070,4074,4076,4080 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2290
diff changeset
484 {
ac528b883b47 Picked rev 4070,4074,4076,4080 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2290
diff changeset
485 data = String.valueOf(qs[0]);
ac528b883b47 Picked rev 4070,4074,4076,4080 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2290
diff changeset
486 data += " - " + String.valueOf(qs[qs.length-1]);
ac528b883b47 Picked rev 4070,4074,4076,4080 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2290
diff changeset
487 }
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
488 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
489 data = String.valueOf(qs[0]);
ac528b883b47 Picked rev 4070,4074,4076,4080 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2290
diff changeset
490 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
491 data += ", " + String.valueOf(qs[i]);
ac528b883b47 Picked rev 4070,4074,4076,4080 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2290
diff changeset
492 }
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
493 }
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
494 else {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
495 logger.warn("Could not determine Q range!");
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
496 }
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
497
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
498 writer.writeNext(new String[] {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
499 Resources.getMsg(
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
500 meta,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
501 CSV_META_Q,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
502 CSV_META_Q,
2423
ac528b883b47 Picked rev 4070,4074,4076,4080 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2290
diff changeset
503 new Object[] {data})
2045
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
504 });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
505 }
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
506 else {
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
507 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
508
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
509 String lower = "";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
510 String upper = "";
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
511
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
512 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
513 lower = String.valueOf(ws[0]);
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
514 upper = String.valueOf(ws[ws.length-1]);
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
515 }
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
516 else {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
517 logger.warn("Could not determine W range!");
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
518 }
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
519
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
520 writer.writeNext(new String[] {
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
521 Resources.getMsg(
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
522 meta,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
523 CSV_META_W,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
524 CSV_META_W,
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
525 new Object[] { lower, upper })
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
526 });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
527 }
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
528
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
529 writer.writeNext(new String[] { "" });
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
530 }
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
531
d13be39cfd1d #242 Added header with meta information into CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2038
diff changeset
532
4979
4c76c5f69eaf WaterlevelExporter: Doc and issue-TODO.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4859
diff changeset
533 /**
4c76c5f69eaf WaterlevelExporter: Doc and issue-TODO.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4859
diff changeset
534 * 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
535 * gauge or at a location.
4c76c5f69eaf WaterlevelExporter: Doc and issue-TODO.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4859
diff changeset
536 */
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
537 protected void writeCSVHeader(
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
538 CSVWriter writer,
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
539 boolean atGauge,
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
540 boolean isQ
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
541 ) {
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
542 logger.info("WaterlevelExporter.writeCSVHeader");
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
543
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
544 String unit = RiverUtils.getRiver((D4EArtifact) master).getWstUnit().getName();
5133
8e52b4829cd1 Fix flys/issue1228: Units in tabular calculation output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5131
diff changeset
545
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
546 if (atGauge) {
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
547 writer.writeNext(new String[] {
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
548 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
549 msg(CSV_W_HEADER, DEFAULT_CSV_W_HEADER, new Object[] { unit }),
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
550 msg(CSV_Q_HEADER, DEFAULT_CSV_Q_HEADER),
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
551 (isQ
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
552 ? msg(CSV_Q_DESC_HEADER, DEFAULT_CSV_Q_DESC_HEADER)
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
553 : msg(CSV_W_DESC_HEADER, DEFAULT_CSV_W_DESC_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
554 msg(CSV_LOCATION_HEADER, DEFAULT_CSV_LOCATION_HEADER),
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
555 msg(CSV_GAUGE_HEADER, DEFAULT_CSV_GAUGE_HEADER)
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
556 });
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
557 }
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
558 else {
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
559 writer.writeNext(new String[] {
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
560 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
561 // TODO flys/issue1128 (unit per river)
8e52b4829cd1 Fix flys/issue1228: Units in tabular calculation output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5131
diff changeset
562 msg(CSV_W_HEADER, DEFAULT_CSV_W_HEADER, new Object[] { unit }),
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
563 msg(CSV_Q_HEADER, DEFAULT_CSV_Q_HEADER),
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
564 msg(CSV_LOCATION_HEADER, DEFAULT_CSV_LOCATION_HEADER)
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
565 });
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
566 }
416
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
567 }
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
568
340dc41a7ea3 The CSV exports will now have headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 391
diff changeset
569
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
570 /** Linearly search for gauge which is valid at km. */
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
571 private static Gauge findGauge(double km, List<Gauge> gauges) {
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
572 for (Gauge gauge: gauges) {
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
573 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
574 return gauge;
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
575 }
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
576 }
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
577 return null;
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
578 }
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
579
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
580 private static Segment findSegment(double km, List<Segment> segments) {
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
581 for (Segment segment: segments) {
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
582 if (segment.inside(km)) {
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
583 return segment;
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
584 }
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
585 }
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
586 return null;
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
587 }
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
588
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
589
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
590 private void writeRow4(CSVWriter writer, double wqkm[], D4EArtifact flys) {
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
591 NumberFormat kmf = getKmFormatter();
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
592 NumberFormat wf = getWFormatter();
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
593 NumberFormat qf = getQFormatter();
6607
85ff19b94ec5 Indentation fix
Andre Heinecke <aheinecke@intevation.de>
parents: 6606
diff changeset
594 writer.writeNext(new String[] {
85ff19b94ec5 Indentation fix
Andre Heinecke <aheinecke@intevation.de>
parents: 6606
diff changeset
595 kmf.format(wqkm[2]),
85ff19b94ec5 Indentation fix
Andre Heinecke <aheinecke@intevation.de>
parents: 6606
diff changeset
596 wf.format(wqkm[0]),
6941
d322da01d862 (issue1451) Round Q's in the way it is done for AT's and localize KM
Andre Heinecke <aheinecke@intevation.de>
parents: 6634
diff changeset
597 qf.format(RiverUtils.roundQ(wqkm[1])),
6607
85ff19b94ec5 Indentation fix
Andre Heinecke <aheinecke@intevation.de>
parents: 6606
diff changeset
598 RiverUtils.getLocationDescription(flys, wqkm[2])
85ff19b94ec5 Indentation fix
Andre Heinecke <aheinecke@intevation.de>
parents: 6606
diff changeset
599 });
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
600 }
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
601
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
602 /** Write an csv-row at gauge location. */
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
603 private void writeRow6(CSVWriter writer, double wqkm[], String wOrQDesc,
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
604 D4EArtifact flys, String gaugeName) {
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
605 NumberFormat kmf = getKmFormatter();
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
606 NumberFormat wf = getWFormatter();
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
607 NumberFormat qf = getQFormatter();
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
608
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
609 writer.writeNext(new String[] {
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
610 kmf.format(wqkm[2]),
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
611 wf.format(wqkm[0]),
6941
d322da01d862 (issue1451) Round Q's in the way it is done for AT's and localize KM
Andre Heinecke <aheinecke@intevation.de>
parents: 6634
diff changeset
612 qf.format(RiverUtils.roundQ(wqkm[1])),
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
613 wOrQDesc,
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
614 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
615 gaugeName
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
616 });
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
617 }
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
618
6606
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
619 private String getDesc(WQKms wqkms, boolean isQ)
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
620 {
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
621 D4EArtifact flys = (D4EArtifact) master;
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
622 String colDesc = "";
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
623
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
624 if (flys instanceof WINFOArtifact && isQ) {
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
625 colDesc = getCSVRowTitle((WINFOArtifact)flys, wqkms);
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
626 }
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
627 else if (!isQ) {
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
628 Double value = RiverUtils.getValueFromWQ(wqkms);
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
629 colDesc = (value != null) ?
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
630 Formatter.getWaterlevelW(context).format(value) : null;
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
631 }
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
632
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
633 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
634 if (wqkms != null && wqkms.getRawValue() != null) {
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
635 WINFOArtifact winfo = (WINFOArtifact) flys;
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
636 colDesc = RiverUtils.getNamedMainValue(winfo, wqkms.getRawValue());
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
637 // 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
638 if (colDesc == null) {
6634
b1e66ea7fc2b Fix Waterlevel description for issue1404
Andre Heinecke <aheinecke@intevation.de>
parents: 6610
diff changeset
639 Double value = RiverUtils.getValueFromWQ(wqkms);
b1e66ea7fc2b Fix Waterlevel description for issue1404
Andre Heinecke <aheinecke@intevation.de>
parents: 6610
diff changeset
640 colDesc = (value != null) ?
b1e66ea7fc2b Fix Waterlevel description for issue1404
Andre Heinecke <aheinecke@intevation.de>
parents: 6610
diff changeset
641 Formatter.getWaterlevelW(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
642 }
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
643 }
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
644 }
6610
8d88db1f5d36 Add quick hack to fix the exported name of Amtl.Fixierungen
Andre Heinecke <aheinecke@intevation.de>
parents: 6608
diff changeset
645 if (colDesc != null) {
8d88db1f5d36 Add quick hack to fix the exported name of Amtl.Fixierungen
Andre Heinecke <aheinecke@intevation.de>
parents: 6608
diff changeset
646 /* Quick hack. Can be removed when database strings are
8d88db1f5d36 Add quick hack to fix the exported name of Amtl.Fixierungen
Andre Heinecke <aheinecke@intevation.de>
parents: 6608
diff changeset
647 * adapted or left in here as it should never be harmful. */
8d88db1f5d36 Add quick hack to fix the exported name of Amtl.Fixierungen
Andre Heinecke <aheinecke@intevation.de>
parents: 6608
diff changeset
648 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
649 }
8d88db1f5d36 Add quick hack to fix the exported name of Amtl.Fixierungen
Andre Heinecke <aheinecke@intevation.de>
parents: 6608
diff changeset
650
6606
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
651 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
652 }
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
653
3252
62c9bcef0680 Fix issue705 (maín value names also in w/q-range mode).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2764
diff changeset
654 /**
62c9bcef0680 Fix issue705 (maín value names also in w/q-range mode).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2764
diff changeset
655 * 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
656 */
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
657 protected void wQKms2CSV(
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
658 CSVWriter writer,
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
659 WQKms wqkms,
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
660 boolean atGauge,
3252
62c9bcef0680 Fix issue705 (maín value names also in w/q-range mode).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2764
diff changeset
661 boolean isQ
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
662 ) {
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
663 logger.debug("WaterlevelExporter.wQKms2CSV");
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
664
4836
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
665 // Skip constant data.
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
666 if (wqkms instanceof ConstantWQKms) {
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
667 return;
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
668 }
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
669
418
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
670 NumberFormat kmf = getKmFormatter();
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
671 NumberFormat wf = getWFormatter();
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
672 NumberFormat qf = getQFormatter();
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
673
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
674 int size = wqkms.size();
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
675 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
676
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
677 D4EArtifact flys = (D4EArtifact) master;
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
678 List<Gauge> gauges = RiverUtils.getGauges(flys);
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
679 Gauge gauge = RiverUtils.getGauge(flys);
2066
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
680 String gaugeName = gauge.getName();
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
681 String desc = "";
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
682 String notinrange = msg(
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
683 CSV_NOT_IN_GAUGE_RANGE,
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
684 DEFAULT_CSV_NOT_IN_GAUGE_RANGE);
6606
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
685 List<Segment> segments = null;
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
686 boolean isFixRealize = false;
2066
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
687
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
688 double a = gauge.getRange().getA().doubleValue();
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
689 double b = gauge.getRange().getB().doubleValue();
2144
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
690 long startTime = System.currentTimeMillis();
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
691
6606
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
692 desc = getDesc(wqkms, isQ);
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
693
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
694 if (flys instanceof FixationArtifact) {
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
695 // Get W/Q input per gauge for this case.
6101
a0078e5e3b39 Removed unused context from RangeAccess and subclasses leading to some dead code removal.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6074
diff changeset
696 FixRealizingAccess fixAccess = new FixRealizingAccess(flys);
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
697 segments = fixAccess.getSegments();
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
698 if (segments != null && !segments.isEmpty()) {
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
699 isFixRealize = true;
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
700 }
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
701 }
2612
49cfa5c66651 Squashed performance bug introduced in rev4070. Now CSV export is about 245 times faster.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2596
diff changeset
702
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
703 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
704
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
705 // 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
706 // is a good time saving heuristic.
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
707 Segment lastSegment = null;
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
708 Gauge lastGauge = null;
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
709
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
710 NumberFormat nf =
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
711 Formatter.getFormatter(context.getMeta(), 0, 0);
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
712
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
713 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
714 result = wqkms.get(i, result);
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
715 double km = result[2];
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
716
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
717 if (segments != null) {
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
718 Segment found = lastSegment != null
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
719 && lastSegment.inside(km)
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
720 ? lastSegment
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
721 : findSegment(km, segments);
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
722
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
723 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
724 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
725 }
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
726 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
727 }
15e856a64cdd Partly fix flys/issue1142: Include specified W values at gauge for fix.real.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4979
diff changeset
728
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
729 String gaugeN;
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
730 if (isFixRealize) {
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
731 Gauge found = lastGauge != null
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
732 && lastGauge.getRange().contains(km)
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
733 ? lastGauge
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
734 : findGauge(km, gauges);
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
735
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
736 gaugeN = found != null ? found.getName() : notinrange;
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
737 lastGauge = found;
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
738 }
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
739 else {
4979
4c76c5f69eaf WaterlevelExporter: Doc and issue-TODO.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4859
diff changeset
740 // TODO issue1114: Take correct gauge
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
741 gaugeN = km >= a && km <= b
2066
2b6a0de47379 Improved the WaterlevelExporter: added range check for W/Q at gauge.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2065
diff changeset
742 ? gaugeName
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
743 : notinrange;
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
744 }
6606
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
745 writeRow6(writer, result, desc, flys, gaugeN);
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
746 }
5587
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
747 }
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
748 else { // Not at gauge.
7b1c5fe4ebf3 Simplified inner loop of water level exporter.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5425
diff changeset
749 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
750 result = wqkms.get(i, result);
5112
ae25e23a1546 WaterlevelExporter: Unpolished fix for flys/issue1131: gaugename in csv.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 5107
diff changeset
751 writeRow4(writer, result, flys);
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
752 }
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
753 }
2144
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
754
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
755 long stopTime = System.currentTimeMillis();
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
756
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
757 if (logger.isDebugEnabled()) {
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
758 logger.debug("Writing CSV took " +
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
759 (float)(stopTime-startTime)/1000f + " secs.");
a4bdf7d8527e Use FastAnnotations for LocationProvider.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2087
diff changeset
760 }
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
761 }
418
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
762
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
763
e0fec407a280 ISSUE-53 Formatted number values of CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 416
diff changeset
764 /**
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
765 * 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
766 */
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
767 protected void generateWST()
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
768 throws IOException
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
769 {
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
770 logger.info("WaterlevelExporter.generateWST");
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
771
7604
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
772 int cols = data.get(0).length + officalFixings.size();
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
773 WstWriter writer = new WstWriter(cols);
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
774
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
775 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
776
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
777 writer.write(out);
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
778 }
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
779
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
780
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
781 protected void writeWSTData(WstWriter writer) {
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
782 logger.debug("WaterlevelExporter.writeWSTData");
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
783
749
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
784 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
785
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
786 for (WQKms[] tmp: data) {
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
787 for (WQKms wqkms: tmp) {
5105
34baad34987f Skip ConstantWQKms (Umhuellende) in exports.
Raimund Renkert <rrenkert@intevation.de>
parents: 5103
diff changeset
788 if (wqkms instanceof ConstantWQKms) {
34baad34987f Skip ConstantWQKms (Umhuellende) in exports.
Raimund Renkert <rrenkert@intevation.de>
parents: 5103
diff changeset
789 continue;
34baad34987f Skip ConstantWQKms (Umhuellende) in exports.
Raimund Renkert <rrenkert@intevation.de>
parents: 5103
diff changeset
790 }
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
791 int size = wqkms != null ? wqkms.size() : 0;
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
792
450
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 447
diff changeset
793 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
794
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
795 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
796 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
797
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
798 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
799 }
749
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
800
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
801 if (wqkms instanceof WQCKms) {
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
802 addWSTColumn(writer, wqkms);
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
803
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
804 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
805 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
806
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
807 writer.addCorrected(result);
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
808 }
72bcbc308501 The WST export contains the corrected W values now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 709
diff changeset
809 }
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
810 }
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
811 }
7604
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
812
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
813 // 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
814 //
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
815 // 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
816 // for details.
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
817 for (WQKms wqkms: officalFixings) {
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
818 // To add some spaces here or to add them in the writer,..
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
819 writer.addColumn(" " + getDesc(wqkms, true));
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
820
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
821 // Get all lines from the calculation
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
822 Map <Double, WstLine> calcLines = writer.getLines();
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
823
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
824 // All KM values where we have a point for
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
825 TDoubleArrayList officialKms = wqkms.allKms();
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
826
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
827 for (Map.Entry<Double, WstLine> entry : calcLines.entrySet()) {
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
828 // 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
829 // so lets not spend time optimizing too much,.. *hides*
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
830 double km = entry.getKey().doubleValue();
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
831 int idx = officialKms.indexOf(km);
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
832 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
833 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
834 }
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
835 }
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
836
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
837 /* Variant: Interpolate the values
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
838 // Now get the lines for the of the calculation
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
839 Map <Double, WstLine> calcLines = writer.getLines();
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
840
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
841 // Create an interpolater for the official KM -> W relation
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
842 UnivariateRealFunction wFunc = new LinearInterpolator(
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
843 ).interpolate(wqkms.allKms().toNativeArray(),
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
844 wqkms.allWs().toNativeArray());
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
845
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
846 // Now for each calculated point add the interpolated official
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
847 for (Map.Entry<Double, WstLine> entry : calcLines.entrySet()) {
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
848 try {
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
849 double wVal = wFunc.value(entry.getKey().doubleValue());
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
850 // Matching Q's are guranteed otherwise we would
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
851 // not have an official line
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
852 entry.getValue().add(wVal, entry.getValue().getQ(0));
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
853 }
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
854 catch (FunctionEvaluationException aode) {
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
855 // should not happen
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
856 logger.error("spline interpolation failed", aode);
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
857 // entry.getValue().add(Double.NaN, entry.getValue().getQ(0));
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
858 }
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
859 }*/
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
860
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
861 /* Variant: Add all official fixings
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
862 // Warning the WSTWriter does not handle this properly
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
863 // as it writes the points for which only a calculation
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
864 // exists in the first column
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
865 int size = wqkms.size();
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
866 result = new double[4];
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
867 for (int i = 0; i < size; i++) {
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
868 result = wqkms.get(i, result);
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
869 writer.add(result);
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
870 }
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
871 */
05549a84ee83 (issue1620) Add export of official lines in WST as specified
Andre Heinecke <aheinecke@intevation.de>
parents: 7254
diff changeset
872 }
446
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
873 }
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
874
c0bec245f608 Implemented writer that creates WSTs and enabled the WaterlevelExporter to create those.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 445
diff changeset
875
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
876 /**
6576
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6101
diff changeset
877 * 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
878 * 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
879 * 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
880 * 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
881 * <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
882 *
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
883 * @param writer The WstWriter.
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
884 * @param wqkms The new WST column.
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
885 */
450
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 447
diff changeset
886 protected void addWSTColumn(WstWriter writer, WQKms wqkms) {
4836
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
887 if (wqkms instanceof ConstantWQKms) {
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
888 return;
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
889 }
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
890 if (master instanceof WINFOArtifact) {
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
891 writer.addColumn(getColumnTitle((WINFOArtifact) master, wqkms));
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
892 }
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
893 else {
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
894 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
895 }
450
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 447
diff changeset
896 }
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 447
diff changeset
897
c8bb38115290 Enabled the discharge longitudinal section to be exported as WST.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 447
diff changeset
898
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
899 @Override
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
900 protected void writePDF(OutputStream out) {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
901 logger.debug("write PDF");
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
902 WKmsJRDataSource source = createJRData();
2185
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2182
diff changeset
903
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2182
diff changeset
904 String jasperFile = Resources.getMsg(
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2182
diff changeset
905 context.getMeta(),
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2182
diff changeset
906 JASPER_FILE,
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2182
diff changeset
907 "/jasper/waterlevel_en.jasper");
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2182
diff changeset
908 String confPath = Config.getConfigDirectory().toString();
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2182
diff changeset
909
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2182
diff changeset
910
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
911 Map parameters = new HashMap();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
912 parameters.put("ReportTitle", "Exported Data");
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
913 try {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
914 JasperPrint print = JasperFillManager.fillReport(
2185
a9a8df1473fd Added i18n support to PDF report export.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2182
diff changeset
915 confPath + jasperFile,
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
916 parameters,
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
917 source);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
918 JasperExportManager.exportReportToPdfStream(print, out);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
919 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
920 catch(JRException je) {
4836
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
921 logger.warn("Error generating PDF Report!", je);
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
922 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
923 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
924
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
925 protected WKmsJRDataSource createJRData() {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
926 WKmsJRDataSource source = new WKmsJRDataSource();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
927
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
928 WQ_MODE mode = RiverUtils.getWQMode((D4EArtifact)master);
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
929 boolean atGauge = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.WGAUGE;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
930 boolean isQ = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.QFREE;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
931
6608
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
932 Double first = Double.NaN;
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
933 Double last = Double.NaN;
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
934
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
935 addMetaData(source);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
936 for (WQKms[] tmp: data) {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
937 for (WQKms wqkms: tmp) {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
938 addWKmsData(wqkms, atGauge, isQ, source);
6608
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
939 double[] firstLast = wqkms.getFirstLastKM();
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
940 if (first.isNaN()) {
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
941 /* Initialize */
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
942 first = firstLast[0];
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
943 last = firstLast[1];
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
944 }
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
945 if (firstLast[0] > firstLast[1]) {
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
946 /* Calculating upstream we assert that it is
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
947 * impossible that the direction changes during this
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
948 * loop */
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
949 first = Math.max(first, firstLast[0]);
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
950 last = Math.min(last, firstLast[1]);
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
951 } else if (firstLast[0] < firstLast[1]) {
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
952 first = Math.min(first, firstLast[0]);
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
953 last = Math.max(last, firstLast[1]);
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
954 } else {
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
955 first = last = firstLast[0];
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
956 }
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
957 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
958 }
6608
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
959
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
960 /* Append the official fixing at the bottom */
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
961 for (WQKms wqkms: officalFixings) {
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
962 addWKmsData(filterWQKms(wqkms, first, last), atGauge, isQ, source);
3d23f606512f Add official Fixings to PDF Export
Andre Heinecke <aheinecke@intevation.de>
parents: 6607
diff changeset
963 }
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
964 return source;
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
965 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
966
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
967 protected void addMetaData(WKmsJRDataSource source) {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
968 CallMeta meta = context.getMeta();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
969
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
970 D4EArtifact flys = (D4EArtifact) master;
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
971
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
972 source.addMetaData ("river", RiverUtils.getRivername(flys));
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
973
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
974 Locale locale = Resources.getLocale(meta);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
975 DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
6941
d322da01d862 (issue1451) Round Q's in the way it is done for AT's and localize KM
Andre Heinecke <aheinecke@intevation.de>
parents: 6634
diff changeset
976 NumberFormat kmf = getKmFormatter();
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
977
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
978 source.addMetaData("date", df.format(new Date()));
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
979
6101
a0078e5e3b39 Removed unused context from RangeAccess and subclasses leading to some dead code removal.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6074
diff changeset
980 RangeAccess rangeAccess = new RangeAccess(flys);
4859
e31231d0a720 WaterlevelExporter: Updated to use RangeAccess instead of FLYSUtils.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4836
diff changeset
981 double[] kms = rangeAccess.getKmRange();
6941
d322da01d862 (issue1451) Round Q's in the way it is done for AT's and localize KM
Andre Heinecke <aheinecke@intevation.de>
parents: 6634
diff changeset
982 source.addMetaData("range",
d322da01d862 (issue1451) Round Q's in the way it is done for AT's and localize KM
Andre Heinecke <aheinecke@intevation.de>
parents: 6634
diff changeset
983 kmf.format(kms[0]) + " - " + kmf.format(kms[kms.length-1]));
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
984
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
985 source.addMetaData("gauge", RiverUtils.getGaugename(flys));
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
986
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
987 source.addMetaData("calculation", Resources.getMsg(
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
988 locale,
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
989 PDF_HEADER_MODE,
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
990 "Waterlevel"));
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
991 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
992
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
993 protected void addWKmsData(
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
994 WQKms wqkms,
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
995 boolean atGauge,
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
996 boolean isQ,
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
997 WKmsJRDataSource source)
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
998 {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
999 logger.debug("WaterlevelExporter.addWKmsData");
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1000
4836
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
1001 // Skip constant data.
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
1002 if (wqkms instanceof ConstantWQKms) {
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
1003 return;
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
1004 }
01e82da3f919 Ignore constant WQKms in CSV and PDF output.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4433
diff changeset
1005
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1006 NumberFormat kmf = getKmFormatter();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1007 NumberFormat wf = getWFormatter();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1008 NumberFormat qf = getQFormatter();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1009
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1010 int size = wqkms.size();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1011 double[] result = new double[3];
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1012
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5865
diff changeset
1013 D4EArtifact flys = (D4EArtifact) master;
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
1014 Gauge gauge = RiverUtils.getGauge(flys);
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1015 String gaugeName = gauge.getName();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1016 String desc = "";
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1017 String notinrange = msg(
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1018 CSV_NOT_IN_GAUGE_RANGE,
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1019 DEFAULT_CSV_NOT_IN_GAUGE_RANGE);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1020
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1021 double a = gauge.getRange().getA().doubleValue();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1022 double b = gauge.getRange().getB().doubleValue();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1023
6606
b4fcc9308d00 Factor out description getting code from csv export and reuse for pdf
Andre Heinecke <aheinecke@intevation.de>
parents: 6605
diff changeset
1024 desc = getDesc(wqkms, isQ);
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1025 long startTime = System.currentTimeMillis();
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1026
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1027 for (int i = 0; i < size; i ++) {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1028 result = wqkms.get(i, result);
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1029
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1030 if (atGauge) {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1031 source.addData(new String[] {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1032 kmf.format(result[2]),
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1033 wf.format(result[0]),
6941
d322da01d862 (issue1451) Round Q's in the way it is done for AT's and localize KM
Andre Heinecke <aheinecke@intevation.de>
parents: 6634
diff changeset
1034 qf.format(RiverUtils.roundQ(result[1])),
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1035 desc,
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
1036 RiverUtils.getLocationDescription(flys, result[2]),
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1037 result[2] >= a && result[2] <= b
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1038 ? gaugeName
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1039 : notinrange
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1040 });
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1041 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1042 else {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1043 source.addData(new String[] {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1044 kmf.format(result[2]),
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1045 wf.format(result[0]),
6941
d322da01d862 (issue1451) Round Q's in the way it is done for AT's and localize KM
Andre Heinecke <aheinecke@intevation.de>
parents: 6634
diff changeset
1046 qf.format(RiverUtils.roundQ(result[1])),
2764
f8a1a8af338e Issue 667.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2612
diff changeset
1047 desc,
5865
73da40528cf2 River artifacts: Renamed FLYSUtils to RiverUtils.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
1048 RiverUtils.getLocationDescription(flys, result[2]),
2764
f8a1a8af338e Issue 667.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2612
diff changeset
1049 result[2] >= a && result[2] <= b
f8a1a8af338e Issue 667.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2612
diff changeset
1050 ? gaugeName
f8a1a8af338e Issue 667.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2612
diff changeset
1051 : notinrange
2176
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1052 });
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1053 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1054 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1055
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1056 long stopTime = System.currentTimeMillis();
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 if (logger.isDebugEnabled()) {
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1059 logger.debug("Writing PDF data took " +
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1060 (float)(stopTime-startTime)/1000f + " secs.");
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1061 }
65dac9cf6ff5 Issue 138.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 2144
diff changeset
1062 }
389
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1063 }
69d05357c177 Added an exporter (OutGenerator) for waterlevels which currently supports CSV exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
1064 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org