annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flood_duration/FloodDurationExporter.java @ 9145:e6b63b2b41b9

sinfo.flood_duration pdf, csv, ui
author gernotbelger
date Tue, 12 Jun 2018 10:23:23 +0200
parents
children 23945061daec
rev   line source
9145
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
2 * Software engineering by Intevation GmbH
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
3 *
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
7 */
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
8
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
9 package org.dive4elements.river.artifacts.sinfo.flood_duration;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
10
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
11 import java.io.OutputStream;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
12 import java.text.NumberFormat;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
13 import java.util.ArrayList;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
14 import java.util.Collection;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
15 import java.util.List;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
16
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
17 import org.apache.log4j.Logger;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
18 import org.dive4elements.river.artifacts.common.GeneralResultType;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
19 import org.dive4elements.river.artifacts.common.JasperDesigner;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
20 import org.dive4elements.river.artifacts.common.JasperReporter;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
21 import org.dive4elements.river.artifacts.common.MetaAndTableJRDataSource;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
22 import org.dive4elements.river.artifacts.common.ResultRow;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
23 import org.dive4elements.river.artifacts.sinfo.common.AbstractSInfoExporter;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
24 import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
25 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
26 import org.dive4elements.river.artifacts.sinfo.util.WstInfo;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
27
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
28 import au.com.bytecode.opencsv.CSVWriter;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
29 import net.sf.jasperreports.engine.JRException;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
30
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
31 /**
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
32 * Generates different output formats (csv, pdf) of data that resulted from a flow depths min/max computation.
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
33 *
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
34 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
35 * @author Gernot Belger
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
36 */
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
37 // REMARK: must be public because its registered in generators.xml
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
38 public class FloodDurationExporter extends AbstractSInfoExporter<FloodDurationCalculationResult, FloodDurationCalculationResults> {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
39
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
40 /** The log used in this exporter. */
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
41 private static Logger log = Logger.getLogger(FloodDurationExporter.class);
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
42
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
43 private final String getJasperFile(final int waterlevelCount) {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
44 if (waterlevelCount <= 1)
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
45 return "/jasper/templates/sinfo.floodduration.jrxml"; // TODO use jrxml-path all over the project
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
46 else
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
47 return "/jasper/templates/sinfo.floodduration2.jrxml";
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
48 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
49
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
50 private static final int maxPdfWspls = 3;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
51
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
52 @Override
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
53 protected Logger getLog() {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
54 return log;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
55 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
56
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
57 @Override
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
58 protected void writeCSVGlobalMetadata(final CSVWriter writer, final FloodDurationCalculationResults results) {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
59 log.info("FloodDurationExporter.writeCSVMeta");
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
60 super.writeCSVGlobalMetadataDefaults(writer, results);
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
61 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
62
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
63 @Override
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
64 protected void writeCSVResultMetadata(final CSVWriter writer, final FloodDurationCalculationResults results, final FloodDurationCalculationResult result) {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
65
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
66 final WstInfo wst = result.getWst();
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
67 super.writeCSVWaterlevelMetadata(writer, wst); // TODO: Abweichend vom Allgemeinen werden hier andere Felder benötigt bei den Wasserspiegellagen
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
68
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
69 writer.writeNext(new String[] { "" }); // break line
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
70
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
71 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
72
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
73 /**
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
74 * Write the header, with different headings depending on whether at a
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
75 * gauge or at a location.
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
76 *
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
77 * @param river
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
78 * @param useTkh
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
79 */
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
80 @Override
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
81 protected void writeCSVHeader(final CSVWriter writer, final FloodDurationCalculationResults results, final RiverInfo river) {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
82 log.info("FloodDurationExporter.writeCSVHeader");
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
83
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
84 final Collection<String> header = new ArrayList<>(99);
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
85
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
86 header.add(msg(GeneralResultType.station.getCsvHeader()));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
87 header.add(msg(SInfoResultType.riverside.getCsvHeader()));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
88 header.add(msg(SInfoResultType.inundationduration.getCsvHeader()));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
89 header.add(msg(SInfoResultType.inundationdurationq.getCsvHeader()));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
90 header.add(msg(SInfoResultType.infrastructureHeight.getCsvHeader()));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
91 header.add(msg(SInfoResultType.infrastructuretype.getCsvHeader()));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
92 // add dynamic headers
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
93 final int waterlevelCount = getWaterlevelCount();
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
94 for (int i = 0; i < waterlevelCount; i++) {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
95 final int naturalIndex = i + 1;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
96 final String appendIndex = new StringBuilder().append("_").append(naturalIndex).toString();
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
97 final Object[] args = new Object[] { appendIndex };
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
98 // new StringBuilder().append('\u2081').toString(); // schlechter UTF-8-Support für subscript ints
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
99 header.add(msg(DurationWaterlevel.getHeaderW(), new Object[] { appendIndex, "results.getRiver().getWstUnit()" }));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
100 header.add(msg(DurationWaterlevel.getHeaderFloodDurPerYear(), args));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
101 header.add(msg(DurationWaterlevel.getHeaderQ(), args));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
102 header.add(msg(DurationWaterlevel.getHeaderBezeichn(), args));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
103 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
104
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
105 header.add(msg(SInfoResultType.gaugeLabel.getCsvHeader()));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
106 header.add(msg(SInfoResultType.location.getCsvHeader()));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
107
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
108 writer.writeNext(header.toArray(new String[header.size()]));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
109 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
110
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
111 private int getWaterlevelCount() {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
112 final FloodDurationCalculationResults results = getData();
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
113 if (results != null) {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
114 final List<FloodDurationCalculationResult> list = results.getResults();
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
115 if (list != null && list.size() > 0) {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
116 final FloodDurationCalculationResult result = list.get(0);
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
117 return result.getWaterlevelCount();
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
118 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
119 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
120 return 0;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
121 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
122
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
123 @Override
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
124 protected String[] formatRow(final FloodDurationCalculationResults results, final ResultRow row, final ExportMode mode) {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
125
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
126 final Collection<String> lines = new ArrayList<>(99);
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
127
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
128 lines.add(row.exportValue(this.context, GeneralResultType.station));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
129 lines.add(row.exportValue(this.context, SInfoResultType.riverside));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
130 lines.add(row.exportValue(this.context, SInfoResultType.inundationduration));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
131 lines.add(row.exportValue(this.context, SInfoResultType.inundationdurationq));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
132 lines.add(row.exportValue(this.context, SInfoResultType.infrastructureHeight));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
133 lines.add(row.exportValue(this.context, SInfoResultType.infrastructuretype));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
134
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
135 final int waterlevelcount = this.getWaterlevelCount();
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
136
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
137 final List<DurationWaterlevel> waterlevelList = (List<DurationWaterlevel>) row.getValue(SInfoResultType.customMultiRowColWaterlevel);
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
138 if (waterlevelList != null) {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
139 final NumberFormat wFormatter = getFlowDepthFormatter();
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
140 final NumberFormat qFormatter = getQFormatter();
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
141
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
142 for (int i = 0; i < waterlevelList.size(); i++) {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
143
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
144 if (i == FloodDurationExporter.maxPdfWspls && mode == ExportMode.pdf)
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
145 break;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
146
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
147 final DurationWaterlevel item = waterlevelList.get(i);
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
148 lines.add(item.getWFormatted(wFormatter));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
149 lines.add(item.getFloodDurDaysPerYearFormatted());
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
150 lines.add(item.getQFormatted(qFormatter));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
151 lines.add(item.getBezeichnung());
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
152 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
153 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
154
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
155 if ((waterlevelcount == 0 || waterlevelcount == 2) && mode == ExportMode.pdf) {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
156 lines.add("dummy");
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
157 lines.add("dummy");
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
158 lines.add("dummy");
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
159 lines.add("dummy");
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
160 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
161
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
162 lines.add(row.exportValue(this.context, SInfoResultType.gaugeLabel));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
163 lines.add(row.exportValue(this.context, SInfoResultType.location));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
164 return lines.toArray(new String[lines.size()]);
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
165 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
166
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
167 @Override
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
168 protected void writePDF(final OutputStream out) {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
169
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
170 try {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
171 final MetaAndTableJRDataSource source = createJRData(this.data);
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
172 final JasperReporter reporter = new JasperReporter();
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
173 final int waterlevelCount = getWaterlevelCount();
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
174 final JasperDesigner design = reporter.addReport(getJasperFile(waterlevelCount), source);
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
175
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
176 if (waterlevelCount == 0 || waterlevelCount == 2) {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
177 design.removeColumn("wOpt");
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
178 design.removeColumn("qOpt");
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
179 design.removeColumn("bezOpt");
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
180 design.removeColumn("durOpt");
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
181 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
182
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
183 reporter.exportPDF(out);
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
184 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
185 catch (final JRException je) {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
186 getLog().warn("Error generating PDF Report!", je);
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
187 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
188 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
189
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
190 @Override
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
191 protected final void addJRMetaData(final MetaAndTableJRDataSource source, final FloodDurationCalculationResults results) {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
192
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
193 /* general metadata */
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
194 super.addJRMetaData(source, results);
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
195
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
196 /* column headings */
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
197 source.addMetaData("station_header", GeneralResultType.station.getPdfHeader(this.context.getMeta()));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
198 source.addMetaData("riverside_header", SInfoResultType.riverside.getPdfHeader(this.context.getMeta()));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
199 source.addMetaData("inundationduration_header", SInfoResultType.inundationduration.getPdfHeader(this.context.getMeta()));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
200 source.addMetaData("inundationduration_q_header", SInfoResultType.inundationdurationq.getPdfHeader(this.context.getMeta()));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
201 source.addMetaData("infrastructure_height_header", SInfoResultType.infrastructureHeightFloodDur.getPdfHeader(this.context.getMeta()));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
202 source.addMetaData("infrastructure_type_header", SInfoResultType.infrastructuretype.getPdfHeader(this.context.getMeta()));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
203
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
204 // add dynamic headers
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
205
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
206 final int waterlevelCount = getWaterlevelCount() > FloodDurationExporter.maxPdfWspls ? FloodDurationExporter.maxPdfWspls : getWaterlevelCount();
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
207
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
208 if (waterlevelCount == 0 || waterlevelCount == 2) {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
209 source.addMetaData("dummy", "dummy");
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
210 source.addMetaData("dummy", "dummy");
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
211 source.addMetaData("dummy", "dummy");
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
212 source.addMetaData("dummy", "dummy");
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
213 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
214
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
215 for (int i = 0; i < waterlevelCount; i++) {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
216 final int naturalIndex = i + 1;
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
217
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
218 final Object[] args = new String[] { new StringBuilder().append("_").append(naturalIndex).toString() };
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
219 source.addMetaData(getPdfHeader("w", naturalIndex), msg(DurationWaterlevel.getHeaderW(), args));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
220 source.addMetaData(getPdfHeader("duration", naturalIndex), msg(DurationWaterlevel.getHeaderFloodDurPerYear(), args));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
221 source.addMetaData(getPdfHeader("q", naturalIndex), msg(DurationWaterlevel.getHeaderQ(), args));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
222 source.addMetaData(getPdfHeader("bezeichnung", naturalIndex), msg(DurationWaterlevel.getHeaderBezeichn(), args));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
223
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
224 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
225
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
226 source.addMetaData("gauge_header", SInfoResultType.gaugeLabel.getPdfHeader(this.context.getMeta()));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
227 source.addMetaData("location_header", SInfoResultType.location.getPdfHeader(this.context.getMeta()));
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
228
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
229 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
230
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
231 private String getPdfHeader(final String rootStr, final int index) {
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
232 final String hd = "_header";
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
233 final StringBuilder builder = new StringBuilder();
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
234 return builder.append(rootStr).append("_").append(index).append(hd).toString();
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
235 }
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
236
e6b63b2b41b9 sinfo.flood_duration pdf, csv, ui
gernotbelger
parents:
diff changeset
237 }

http://dive4elements.wald.intevation.org