Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/sq/SQRelationExporter.java @ 9312:740d65e4aa14
Q [m³/s] one message
author | gernotbelger |
---|---|
date | Thu, 26 Jul 2018 15:54:20 +0200 |
parents | 5e38e2924c07 |
children |
rev | line source |
---|---|
8578
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013, 2015 by Bundesanstalt für Gewässerkunde |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
2 * Software engineering by Intevation GmbH |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
3 * |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
7 */ |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
8 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3552
diff
changeset
|
9 package org.dive4elements.river.exports.sq; |
3077
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
10 |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
11 import java.io.OutputStream; |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
12 import java.text.DateFormat; |
6828
708416bb560c
(issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents:
6322
diff
changeset
|
13 import java.text.NumberFormat; |
9312 | 14 import java.util.ArrayList; |
15 import java.util.Date; | |
16 import java.util.HashMap; | |
17 import java.util.List; | |
18 import java.util.Locale; | |
19 import java.util.Map; | |
3077
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
20 |
9312 | 21 import org.apache.log4j.Logger; |
22 import org.dive4elements.artifacts.CallMeta; | |
23 import org.dive4elements.artifacts.common.utils.Config; | |
24 import org.dive4elements.river.artifacts.D4EArtifact; | |
25 import org.dive4elements.river.artifacts.access.SQRelationAccess; | |
26 import org.dive4elements.river.artifacts.model.CalculationResult; | |
27 import org.dive4elements.river.artifacts.model.DateRange; | |
28 import org.dive4elements.river.artifacts.model.Parameters; | |
29 import org.dive4elements.river.artifacts.model.sq.SQ; | |
30 import org.dive4elements.river.artifacts.model.sq.SQFractionResult; | |
31 import org.dive4elements.river.artifacts.model.sq.SQMeasurementsJRDataSource; | |
32 import org.dive4elements.river.artifacts.model.sq.SQRelationJRDataSource; | |
33 import org.dive4elements.river.artifacts.model.sq.SQResult; | |
34 import org.dive4elements.river.artifacts.resources.Resources; | |
35 import org.dive4elements.river.exports.AbstractExporter; | |
36 import org.dive4elements.river.utils.Formatter; | |
37 import org.dive4elements.river.utils.RiverUtils; | |
38 | |
39 import au.com.bytecode.opencsv.CSVWriter; | |
40 import net.sf.jasperreports.engine.JRException; | |
41 import net.sf.jasperreports.engine.JRPrintPage; | |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
42 import net.sf.jasperreports.engine.JasperExportManager; |
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
43 import net.sf.jasperreports.engine.JasperFillManager; |
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
44 import net.sf.jasperreports.engine.JasperPrint; |
3077
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
45 |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
46 /** |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
47 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
48 */ |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
49 public class SQRelationExporter extends AbstractExporter { |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
50 |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7965
diff
changeset
|
51 /** Private log. */ |
9312 | 52 private static final Logger log = Logger.getLogger(SQRelationExporter.class); |
3077
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
53 |
9312 | 54 public static final String INFO_COEFF_A = "export.sqrelation.csv.info.coeff.a"; |
3077
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
55 |
9312 | 56 public static final String INFO_COEFF_B = "export.sqrelation.csv.info.coeff.b"; |
8541
c0334399625b
(issue1753) Add measurements to CSV export
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
57 |
9312 | 58 public static final String INFO_QMAX = "export.sqrelation.csv.info.qmax"; |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
59 |
9312 | 60 public static final String INFO_STDERR = "export.sqrelation.csv.info.stderr"; |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
61 |
9312 | 62 public static final String INFO_R2 = "export.sqrelation.csv.info.r2"; |
3077
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
63 |
9312 | 64 public static final String INFO_NTOT = "export.sqrelation.csv.info.ntot"; |
8578
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
65 |
9312 | 66 public static final String INFO_NOUTL = "export.sqrelation.csv.info.noutl"; |
67 | |
68 public static final String INFO_CFERGUSON = "export.sqrelation.csv.info.cferguson"; | |
69 | |
70 public static final String INFO_CDUAN = "export.sqrelation.csv.info.cduan"; | |
71 | |
72 public static final String INFO_PARAM_A = "export.sqrelation.csv.info.param.a"; | |
73 | |
74 public static final String INFO_PARAM_B = "export.sqrelation.csv.info.param.b"; | |
75 | |
76 public static final String INFO_PARAM_C = "export.sqrelation.csv.info.param.c"; | |
77 | |
78 public static final String INFO_PARAM_D = "export.sqrelation.csv.info.param.d"; | |
79 | |
80 public static final String INFO_PARAM_E = "export.sqrelation.csv.info.param.e"; | |
81 | |
82 public static final String INFO_PARAM_F = "export.sqrelation.csv.info.param.f"; | |
83 | |
84 public static final String INFO_Q = "export.sqrelation.csv.info.q"; | |
85 | |
86 public static final String INFO_S_KG = "export.sqrelation.csv.info.s_kg"; | |
87 | |
88 public static final String INFO_DATE = "export.sqrelation.csv.info.date"; | |
89 | |
90 public static final String CSV_PARAMETER = "export.sqrelation.csv.header.parameter"; | |
91 | |
92 public static final String CSV_STATION = "export.sqrelation.csv.header.station"; | |
93 | |
94 public static final String CSV_KM = "export.sqrelation.csv.header.km"; | |
95 | |
96 public static final String CSV_FUNCTION = "export.sqrelation.csv.header.function"; | |
97 | |
98 public static final String CSV_GAUGE = "export.sqrelation.csv.header.gauge"; | |
99 | |
100 public static final String CSV_COEFF_A = "export.sqrelation.csv.header.coeff.a"; | |
101 | |
102 public static final String CSV_COEFF_B = "export.sqrelation.csv.header.coeff.b"; | |
103 | |
104 public static final String CSV_COEFF_Q = "export.sqrelation.csv.header.coeff.q"; | |
105 | |
106 public static final String CSV_COEFF_R = "export.sqrelation.csv.header.coeff.r"; | |
107 | |
108 public static final String CSV_N_TOTAL = "export.sqrelation.csv.header.n.total"; | |
109 | |
110 public static final String CSV_N_OUTLIERS = "export.sqrelation.csv.header.n.outliers"; | |
111 | |
112 public static final String CSV_C_DUAN = "export.sqrelation.csv.header.c.duan"; | |
113 | |
114 public static final String CSV_C_FERGUSON = "export.sqrelation.csv.header.c.ferguson"; | |
115 | |
116 public static final String CSV_QMAX = "export.sqrelation.csv.header.qmax"; | |
117 | |
118 public static final String CSV_SD = "export.sqrelation.csv.header.sd"; | |
119 | |
120 public static final String CSV_S_KG = "export.sqrelation.csv.header.s_kg"; | |
121 | |
122 public static final String CSV_Q = "common.export.csv.header.q"; | |
123 | |
124 public static final String CSV_DATE = "export.sqrelation.csv.header.date"; | |
125 | |
126 public static final String PDF_TITLE = "export.sqrelation.pdf.title"; | |
127 | |
128 public static final String PDF_HEADER_MODE = "export.sqrelation.pdf.mode"; | |
129 | |
130 public static final String JASPER_FILE = "export.sqrelation.pdf.file"; | |
131 | |
132 public static final String JASPER_MEASUREMENTS_FILE = "export.sqrelation.measurements.pdf.file"; | |
133 | |
134 protected List<SQResult[]> data; | |
3077
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
135 |
7077
0a337f0005c2
Extended init() of OutGenerator to take name of the out to serve.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6859
diff
changeset
|
136 public SQRelationExporter() { |
9312 | 137 this.data = new ArrayList<>(); |
3077
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
138 } |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
139 |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
140 @Override |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
141 protected void addData(Object d) { |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
142 if (d instanceof CalculationResult) { |
9312 | 143 d = ((CalculationResult) d).getData(); |
144 if (d instanceof SQResult[]) { | |
145 this.data.add((SQResult[]) d); | |
3077
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
146 } |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
147 } |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
148 } |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
149 |
9312 | 150 protected void writeCSVHeader(final CSVWriter writer) { |
151 writer.writeNext(new String[] { msg(CSV_KM), msg(CSV_PARAMETER), msg(CSV_COEFF_A), msg(CSV_COEFF_B), msg(CSV_SD), msg(CSV_QMAX), msg(CSV_COEFF_R), | |
152 msg(CSV_N_TOTAL), msg(CSV_N_OUTLIERS), msg(CSV_C_DUAN), msg(CSV_C_FERGUSON), msg(CSV_S_KG), msg(CSV_Q), msg(CSV_DATE) }); | |
3392
56f62b5209f5
S/Q relation: Write parameters as export result.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3227
diff
changeset
|
153 } |
3077
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
154 |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
155 @Override |
9312 | 156 protected void writeCSVData(final CSVWriter writer) { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7965
diff
changeset
|
157 log.debug("writeCSVData"); |
3077
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
158 |
9312 | 159 writeCSVInfo(writer, |
160 new String[] { msg(INFO_PARAM_A), msg(INFO_PARAM_B), msg(INFO_PARAM_C), msg(INFO_PARAM_D), msg(INFO_PARAM_E), msg(INFO_PARAM_F), | |
161 msg(INFO_COEFF_A), msg(INFO_COEFF_B), msg(INFO_QMAX), msg(INFO_STDERR), msg(INFO_R2), msg(INFO_NTOT), msg(INFO_NOUTL), | |
162 msg(INFO_CFERGUSON), msg(INFO_CDUAN), msg(INFO_S_KG), msg(INFO_Q), msg(INFO_DATE) }); | |
7937
a310b1f85ce0
issue1633: Add info lines in SQ-relation CSV export.
Tom Gottfried <tom@intevation.de>
parents:
7936
diff
changeset
|
163 |
3077
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
164 writeCSVHeader(writer); |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
165 |
9312 | 166 for (final SQResult[] results : this.data) { |
167 for (final SQResult result : results) { | |
8578
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
168 writer.writeAll(data2StringArrays(result, true)); |
3392
56f62b5209f5
S/Q relation: Write parameters as export result.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3227
diff
changeset
|
169 } |
3077
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
170 } |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
171 } |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
172 |
9312 | 173 protected List<String[]> data2StringArrays(final SQResult result, final boolean includeMeasurements) { |
174 final String km = Formatter.getSQRelationKM(this.context).format(result.getKm()); | |
175 final List<String[]> retval = new ArrayList<>(); | |
3077
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
176 |
9312 | 177 final NumberFormat sqAFormatter = Formatter.getSQRelationA(this.context); |
178 final NumberFormat sqBFormatter = Formatter.getSQRelationB(this.context); | |
179 final NumberFormat fThreeFormatter = Formatter.getFormatter(this.context, 3, 3); | |
180 final NumberFormat fTwoFormatter = Formatter.getFormatter(this.context, 2, 2); | |
181 final NumberFormat fZeroFormatter = Formatter.getFormatter(this.context, 0, 0); | |
182 final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Resources.getLocale(this.context.getMeta())); | |
6828
708416bb560c
(issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents:
6322
diff
changeset
|
183 |
3392
56f62b5209f5
S/Q relation: Write parameters as export result.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3227
diff
changeset
|
184 for (int i = 0; i < SQResult.NUMBER_FRACTIONS; ++i) { |
9312 | 185 final SQFractionResult fraction = result.getFraction(i); |
3552
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3392
diff
changeset
|
186 |
9312 | 187 final String name = result.getFractionName(i); |
3552
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3392
diff
changeset
|
188 |
9312 | 189 final Parameters parameters = fraction.getParameters(); |
3552
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3392
diff
changeset
|
190 |
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3392
diff
changeset
|
191 if (parameters == null) { |
3392
56f62b5209f5
S/Q relation: Write parameters as export result.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3227
diff
changeset
|
192 continue; |
56f62b5209f5
S/Q relation: Write parameters as export result.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3227
diff
changeset
|
193 } |
3552
1df6984628c3
S/Q: Extented the result data model of the S/Q calculation to
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3392
diff
changeset
|
194 |
6828
708416bb560c
(issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents:
6322
diff
changeset
|
195 String a, b, sd, o, t, max_q, c_ferguson, c_duan, r2; |
9312 | 196 a = sqAFormatter.format(parameters.getValue(0, "a")); |
197 b = sqBFormatter.format(parameters.getValue(0, "b")); | |
6828
708416bb560c
(issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents:
6322
diff
changeset
|
198 |
708416bb560c
(issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents:
6322
diff
changeset
|
199 /* The std_dev parameter contains the standard error actually */ |
708416bb560c
(issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents:
6322
diff
changeset
|
200 sd = fThreeFormatter.format(parameters.getValue(0, "std_dev")); |
708416bb560c
(issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents:
6322
diff
changeset
|
201 max_q = fZeroFormatter.format(parameters.getValue(0, "max_q")); |
9312 | 202 c_ferguson = fTwoFormatter.format(parameters.getValue(0, "c_ferguson")); |
6828
708416bb560c
(issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents:
6322
diff
changeset
|
203 c_duan = fTwoFormatter.format(parameters.getValue(0, "c_duan")); |
708416bb560c
(issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents:
6322
diff
changeset
|
204 r2 = fTwoFormatter.format(parameters.getValue(0, "r2")); |
708416bb560c
(issue1347) Add new variables to SQ Relation output.
Andre Heinecke <aheinecke@intevation.de>
parents:
6322
diff
changeset
|
205 |
9312 | 206 o = String.valueOf(fraction.totalNumOutliers()); |
207 t = String.valueOf(fraction.numMeasurements()); | |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
208 |
8578
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
209 if (includeMeasurements) { |
9312 | 210 for (final SQ sq : fraction.getMeasurements()) { |
211 retval.add(new String[] { km, name, a, b, sd, // 4 | |
212 max_q, // 5 | |
213 r2, // 6 | |
214 t, // 7 | |
215 o, // 8 | |
216 c_duan, // 9 | |
217 c_ferguson, // 10 | |
218 fThreeFormatter.format(sq.getS()), fZeroFormatter.format(sq.getQ()), df.format(sq.getDate()) }); | |
219 } | |
220 } else { | |
221 retval.add(new String[] { km, name, a, b, sd, // 4 | |
8578
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
222 max_q, // 5 |
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
223 r2, // 6 |
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
224 t, // 7 |
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
225 o, // 8 |
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
226 c_duan, // 9 |
9312 | 227 c_ferguson // 10 |
8541
c0334399625b
(issue1753) Add measurements to CSV export
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
228 }); |
c0334399625b
(issue1753) Add measurements to CSV export
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
229 } |
c0334399625b
(issue1753) Add measurements to CSV export
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8202
diff
changeset
|
230 |
3392
56f62b5209f5
S/Q relation: Write parameters as export result.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3227
diff
changeset
|
231 } |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
232 return retval; |
3077
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
233 } |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
234 |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
235 protected SQRelationJRDataSource createJRData() { |
9312 | 236 final SQRelationJRDataSource source = new SQRelationJRDataSource(); |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
237 |
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
238 addMetaData(source); |
9312 | 239 for (final SQResult[] results : this.data) { |
240 for (final SQResult result : results) { | |
241 for (final String[] res : data2StringArrays(result, false)) { | |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
242 source.addData(res); |
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
243 } |
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
244 } |
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
245 } |
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
246 return source; |
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
247 } |
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
248 |
8578
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
249 protected SQMeasurementsJRDataSource createMeasurementJRData() { |
9312 | 250 final SQMeasurementsJRDataSource source = new SQMeasurementsJRDataSource(); |
251 final NumberFormat fZeroFormatter = Formatter.getFormatter(this.context, 0, 0); | |
252 final NumberFormat fThreeFormatter = Formatter.getFormatter(this.context, 3, 3); | |
253 final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Resources.getLocale(this.context.getMeta())); | |
8578
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
254 |
9312 | 255 for (final SQResult[] results : this.data) { |
256 for (final SQResult result : results) { | |
8578
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
257 for (int i = 0; i < SQResult.NUMBER_FRACTIONS; ++i) { |
9312 | 258 final String name = result.getFractionName(i); |
259 final SQFractionResult fraction = result.getFraction(i); | |
260 for (final SQ sq : fraction.getMeasurements()) { | |
261 source.addData( | |
262 new String[] { name, fThreeFormatter.format(sq.getS()), fZeroFormatter.format(sq.getQ()), df.format(sq.getDate()), null }); | |
8578
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
263 } |
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
264 for (int j = 0; j < fraction.numIterations(); j++) { |
9312 | 265 for (final SQ sq : fraction.getOutliers(j)) { |
266 source.addData(new String[] { name, fThreeFormatter.format(sq.getS()), fZeroFormatter.format(sq.getQ()), df.format(sq.getDate()), | |
267 Integer.toString(j + 1) }); | |
8578
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
268 } |
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
269 } |
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
270 } |
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
271 } |
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
272 } |
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
273 return source; |
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
274 } |
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
275 |
9312 | 276 protected void addMetaData(final SQRelationJRDataSource source) { |
277 final CallMeta meta = this.context.getMeta(); | |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
278 |
9312 | 279 final D4EArtifact arti = (D4EArtifact) this.master; |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
280 |
9312 | 281 source.addMetaData("river", RiverUtils.getRivername(arti)); |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
282 |
9312 | 283 final Locale locale = Resources.getLocale(meta); |
284 final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale); | |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
285 |
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
286 source.addMetaData("date", df.format(new Date())); |
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
287 |
9312 | 288 final SQRelationAccess access = new SQRelationAccess(arti); |
289 source.addMetaData("location", "KM " + getKmFormatter().format(access.getLocation())); | |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
290 |
9312 | 291 final DateRange period = access.getPeriod(); |
292 source.addMetaData("periods", df.format(period.getFrom()) + " - " + df.format(period.getTo())); | |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
293 |
9312 | 294 source.addMetaData("outliertest", Resources.getMsg(meta, access.getOutlierMethod(), access.getOutlierMethod())); |
295 source.addMetaData("outliers", Formatter.getRawFormatter(this.context).format(access.getOutliers())); | |
6859
3ccbc278f2e6
(issue1347) Add SQ Relation fields for measurement station information
Andre Heinecke <aheinecke@intevation.de>
parents:
6830
diff
changeset
|
296 |
9312 | 297 source.addMetaData("calculation", Resources.getMsg(locale, PDF_HEADER_MODE, "SQRelation")); |
298 | |
299 final String measurementStationName = access.getMeasurementStationName(); | |
6859
3ccbc278f2e6
(issue1347) Add SQ Relation fields for measurement station information
Andre Heinecke <aheinecke@intevation.de>
parents:
6830
diff
changeset
|
300 |
3ccbc278f2e6
(issue1347) Add SQ Relation fields for measurement station information
Andre Heinecke <aheinecke@intevation.de>
parents:
6830
diff
changeset
|
301 if (measurementStationName != null) { |
3ccbc278f2e6
(issue1347) Add SQ Relation fields for measurement station information
Andre Heinecke <aheinecke@intevation.de>
parents:
6830
diff
changeset
|
302 source.addMetaData("msName", measurementStationName); |
7380
d8d0caaf60a2
(issue1071) Handle the case where no MeasurementStation exists
Andre Heinecke <aheinecke@intevation.de>
parents:
7088
diff
changeset
|
303 } else { |
d8d0caaf60a2
(issue1071) Handle the case where no MeasurementStation exists
Andre Heinecke <aheinecke@intevation.de>
parents:
7088
diff
changeset
|
304 source.addMetaData("msName", ""); |
6859
3ccbc278f2e6
(issue1347) Add SQ Relation fields for measurement station information
Andre Heinecke <aheinecke@intevation.de>
parents:
6830
diff
changeset
|
305 } |
3ccbc278f2e6
(issue1347) Add SQ Relation fields for measurement station information
Andre Heinecke <aheinecke@intevation.de>
parents:
6830
diff
changeset
|
306 |
9312 | 307 final String measurementStationGaugeName = access.getMeasurementStationGaugeName(); |
6859
3ccbc278f2e6
(issue1347) Add SQ Relation fields for measurement station information
Andre Heinecke <aheinecke@intevation.de>
parents:
6830
diff
changeset
|
308 |
3ccbc278f2e6
(issue1347) Add SQ Relation fields for measurement station information
Andre Heinecke <aheinecke@intevation.de>
parents:
6830
diff
changeset
|
309 if (measurementStationGaugeName != null) { |
3ccbc278f2e6
(issue1347) Add SQ Relation fields for measurement station information
Andre Heinecke <aheinecke@intevation.de>
parents:
6830
diff
changeset
|
310 source.addMetaData("msGauge", measurementStationGaugeName); |
7380
d8d0caaf60a2
(issue1071) Handle the case where no MeasurementStation exists
Andre Heinecke <aheinecke@intevation.de>
parents:
7088
diff
changeset
|
311 } else { |
d8d0caaf60a2
(issue1071) Handle the case where no MeasurementStation exists
Andre Heinecke <aheinecke@intevation.de>
parents:
7088
diff
changeset
|
312 source.addMetaData("msGauge", ""); |
6859
3ccbc278f2e6
(issue1347) Add SQ Relation fields for measurement station information
Andre Heinecke <aheinecke@intevation.de>
parents:
6830
diff
changeset
|
313 } |
3ccbc278f2e6
(issue1347) Add SQ Relation fields for measurement station information
Andre Heinecke <aheinecke@intevation.de>
parents:
6830
diff
changeset
|
314 |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
315 } |
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
316 |
3077
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
317 @Override |
9312 | 318 protected void writePDF(final OutputStream out) { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7965
diff
changeset
|
319 log.debug("write PDF"); |
9312 | 320 final SQRelationJRDataSource source = createJRData(); |
321 final SQMeasurementsJRDataSource measureSource = createMeasurementJRData(); | |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
322 |
9312 | 323 final String jasperFile = Resources.getMsg(this.context.getMeta(), JASPER_FILE, "/jasper/sqrelation_en.jasper"); |
324 final String jasperMeasurementsFile = Resources.getMsg(this.context.getMeta(), JASPER_MEASUREMENTS_FILE, "/jasper/sqmeasurements_en.jasper"); | |
325 final String confPath = Config.getConfigDirectory().toString(); | |
326 | |
327 final Map parameters = new HashMap(); | |
328 parameters.put("ReportTitle", Resources.getMsg(this.context.getMeta(), PDF_TITLE, "Exported Data")); | |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
329 try { |
9312 | 330 /* |
331 * Page numbers start have a built in offset of 1 so this | |
332 * is fine. | |
333 */ | |
334 final JasperPrint p2 = JasperFillManager.fillReport(confPath + jasperMeasurementsFile, parameters, measureSource); | |
8578
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
335 parameters.put("MEASUREMENT_PAGE_NUM", p2.getPages().size()); |
9312 | 336 final JasperPrint p1 = JasperFillManager.fillReport(confPath + jasperFile, parameters, source); |
337 for (final Object page : p2.getPages()) { | |
338 final JRPrintPage object = (JRPrintPage) page; | |
8578
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
339 p1.addPage(object); |
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
340 } |
4eb1a3c71579
(issue1753) Implement PDF export of SQ Measurement data.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8541
diff
changeset
|
341 JasperExportManager.exportReportToPdfStream(p1, out); |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
342 } |
9312 | 343 catch (final JRException je) { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7965
diff
changeset
|
344 log.warn("Error generating PDF Report!", je); |
6172
58a613798386
Implement PDF export for SQ Relation
Andre Heinecke <aheinecke@intevation.de>
parents:
5994
diff
changeset
|
345 } |
3077
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
346 } |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
347 } |
5c87d4ca1bd3
Added chart and export generator stubs for SQ relation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
348 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |