Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/exports/fixings/DeltaWtExporter.java @ 9306:8024e51e828a
pdf export, issue 2.3.4.1.2
author | gernotbelger |
---|---|
date | Wed, 25 Jul 2018 18:36:26 +0200 |
parents | 42c15e2f95fb |
children | a49fe0ebb297 |
comparison
equal
deleted
inserted
replaced
9305:8b3ecb1a7e16 | 9306:8024e51e828a |
---|---|
18 import java.util.TreeMap; | 18 import java.util.TreeMap; |
19 | 19 |
20 import org.apache.log4j.Logger; | 20 import org.apache.log4j.Logger; |
21 import org.dive4elements.artifacts.CallMeta; | 21 import org.dive4elements.artifacts.CallMeta; |
22 import org.dive4elements.river.artifacts.D4EArtifact; | 22 import org.dive4elements.river.artifacts.D4EArtifact; |
23 import org.dive4elements.river.artifacts.access.RangeAccess; | |
23 import org.dive4elements.river.artifacts.access.RiverAccess; | 24 import org.dive4elements.river.artifacts.access.RiverAccess; |
25 import org.dive4elements.river.artifacts.common.DefaultCalculationResults; | |
26 import org.dive4elements.river.artifacts.common.ExportContextPDF; | |
27 import org.dive4elements.river.artifacts.common.GeneralResultType; | |
28 import org.dive4elements.river.artifacts.common.JasperReporter; | |
29 import org.dive4elements.river.artifacts.common.MetaAndTableJRDataSource; | |
24 import org.dive4elements.river.artifacts.model.CalculationResult; | 30 import org.dive4elements.river.artifacts.model.CalculationResult; |
25 import org.dive4elements.river.artifacts.model.fixings.AnalysisPeriod; | 31 import org.dive4elements.river.artifacts.model.fixings.AnalysisPeriod; |
26 import org.dive4elements.river.artifacts.model.fixings.FixAnalysisResult; | 32 import org.dive4elements.river.artifacts.model.fixings.FixAnalysisResult; |
27 import org.dive4elements.river.artifacts.model.fixings.QWD; | 33 import org.dive4elements.river.artifacts.model.fixings.QWD; |
28 import org.dive4elements.river.artifacts.resources.Resources; | 34 import org.dive4elements.river.artifacts.resources.Resources; |
35 import org.dive4elements.river.artifacts.sinfo.util.CalculationUtils; | |
36 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; | |
29 import org.dive4elements.river.exports.AbstractExporter; | 37 import org.dive4elements.river.exports.AbstractExporter; |
30 import org.dive4elements.river.utils.Formatter; | 38 import org.dive4elements.river.utils.Formatter; |
31 import org.dive4elements.river.utils.KMIndex; | 39 import org.dive4elements.river.utils.KMIndex; |
32 | 40 |
33 import au.com.bytecode.opencsv.CSVWriter; | 41 import au.com.bytecode.opencsv.CSVWriter; |
42 import net.sf.jasperreports.engine.JRException; | |
34 | 43 |
35 /** Exports fixation analysis deltaw(t) computation results to csv. */ | 44 /** Exports fixation analysis deltaw(t) computation results to csv. */ |
36 public class DeltaWtExporter extends AbstractExporter { | 45 public class DeltaWtExporter extends AbstractExporter { |
37 /** Private log. */ | 46 /** Private log. */ |
38 private static Logger log = Logger.getLogger(DeltaWtExporter.class); | 47 private static Logger log = Logger.getLogger(DeltaWtExporter.class); |
48 | |
49 private static final String JASPER_FILE = "/jasper/templates/fixanalysis.delta_wt.jrxml"; | |
39 | 50 |
40 public static final String CSV_KM_HEADER = "export.fixings.deltawt.csv.header.km"; | 51 public static final String CSV_KM_HEADER = "export.fixings.deltawt.csv.header.km"; |
41 | 52 |
42 public static final String CSV_DELTA_W_HEADER = "export.fixings.deltawt.csv.header.deltaw"; | 53 public static final String CSV_DELTA_W_HEADER = "export.fixings.deltawt.csv.header.deltaw"; |
43 | 54 |
104 | 115 |
105 final boolean debug = log.isDebugEnabled(); | 116 final boolean debug = log.isDebugEnabled(); |
106 | 117 |
107 writeCSVHeader(writer); | 118 writeCSVHeader(writer); |
108 | 119 |
120 final TreeMap<Double, ArrayList<String[]>> sorted = getRows(); | |
121 for (final ArrayList<String[]> list : sorted.values()) { | |
122 for (final String[] row : list) { | |
123 writer.writeNext(row); | |
124 } | |
125 } | |
126 | |
127 writer.flush(); | |
128 } | |
129 | |
130 private TreeMap<Double, ArrayList<String[]>> getRows() { | |
109 final NumberFormat kmF = getKMFormatter(); | 131 final NumberFormat kmF = getKMFormatter(); |
110 final NumberFormat dwF = getDeltaWFormatter(); | 132 final NumberFormat dwF = getDeltaWFormatter(); |
111 final NumberFormat qF = getQFormatter(); | 133 final NumberFormat qF = getQFormatter(); |
112 final NumberFormat wF = getWFormatter(); | 134 final NumberFormat wF = getWFormatter(); |
113 | 135 |
140 list.add(new String[] { kmS, dateS, qS, wS, referenceS, deltaWS }); | 162 list.add(new String[] { kmS, dateS, qS, wS, referenceS, deltaWS }); |
141 } | 163 } |
142 } | 164 } |
143 } | 165 } |
144 | 166 |
145 if (debug) { | 167 // if (debug) { |
146 log.debug("AnalysisPeriods: " + this.analysisPeriods.size()); | 168 // log.debug("AnalysisPeriods: " + this.analysisPeriods.size()); |
147 } | 169 // } |
148 | 170 |
149 final String analysisTemplate = getAnalysisTemplate(); | 171 final String analysisTemplate = getAnalysisTemplate(); |
150 | 172 |
151 for (final KMIndex<AnalysisPeriod[]> periods : this.analysisPeriods) { | 173 for (final KMIndex<AnalysisPeriod[]> periods : this.analysisPeriods) { |
152 | 174 |
181 } | 203 } |
182 ++analysisCount; | 204 ++analysisCount; |
183 } | 205 } |
184 } | 206 } |
185 } | 207 } |
186 | 208 return sorted; |
187 for (final ArrayList<String[]> list : sorted.values()) { | 209 |
188 for (final String[] row : list) { | |
189 writer.writeNext(row); | |
190 } | |
191 } | |
192 | |
193 writer.flush(); | |
194 } | 210 } |
195 | 211 |
196 /** Template to create "State" strings like A1,A2... */ | 212 /** Template to create "State" strings like A1,A2... */ |
197 protected String getAnalysisTemplate() { | 213 protected String getAnalysisTemplate() { |
198 return Resources.getMsg(this.context.getMeta(), CSV_ANALYSIS, DEFAULT_CSV_ANALYSIS); | 214 return Resources.getMsg(this.context.getMeta(), CSV_ANALYSIS, DEFAULT_CSV_ANALYSIS); |
239 writer.writeNext(new String[] { msg(CSV_KM_HEADER, DEFAULT_CSV_KM_HEADER), msg(CSV_T_HEADER, DEFAULT_CSV_T_HEADER), | 255 writer.writeNext(new String[] { msg(CSV_KM_HEADER, DEFAULT_CSV_KM_HEADER), msg(CSV_T_HEADER, DEFAULT_CSV_T_HEADER), |
240 msg(CSV_Q_HEADER, DEFAULT_CSV_Q_HEADER), msg(CSV_W_HEADER, DEFAULT_CSV_W_HEADER, new Object[] { unit }), | 256 msg(CSV_Q_HEADER, DEFAULT_CSV_Q_HEADER), msg(CSV_W_HEADER, DEFAULT_CSV_W_HEADER, new Object[] { unit }), |
241 msg(CSV_TRANGE_HEADER, DEFAULT_CSV_TRANGE_DESC_HEADER), msg(CSV_DELTA_W_HEADER, DEFAULT_CSV_DELTA_W_HEADER) }); | 257 msg(CSV_TRANGE_HEADER, DEFAULT_CSV_TRANGE_DESC_HEADER), msg(CSV_DELTA_W_HEADER, DEFAULT_CSV_DELTA_W_HEADER) }); |
242 } | 258 } |
243 | 259 |
260 private void addMetaData(final MetaAndTableJRDataSource source) { | |
261 final D4EArtifact flys = (D4EArtifact) this.master; | |
262 final String user = CalculationUtils.findArtifactUser(this.context, flys); | |
263 final RangeAccess ra = new RangeAccess(flys); | |
264 final RiverInfo ri = new RiverInfo(ra.getRiver()); | |
265 | |
266 final DefaultCalculationResults results = new DefaultCalculationResults(msg("calculation.analysis"), user, ri, ra.getRange()); | |
267 final ExportContextPDF contextPdf = new ExportContextPDF(this.context, results); | |
268 contextPdf.addJRMetaDataDefaults(source); | |
269 contextPdf.addJRMetaDataUSINFO(source); | |
270 | |
271 /* column headings */ | |
272 contextPdf.addJRMetadata(source, "station_header", GeneralResultType.station); | |
273 contextPdf.addJRMetadata(source, "fix_date", msg(CSV_T_HEADER)); | |
274 contextPdf.addJRMetadata(source, "fix_q", msg(CSV_Q_HEADER)); | |
275 contextPdf.addJRMetadata(source, "fix_w", msg(CSV_W_HEADER, DEFAULT_CSV_W_HEADER, new Object[] { ri.getWstUnit() })); | |
276 contextPdf.addJRMetadata(source, "fix_state", msg(CSV_TRANGE_HEADER)); | |
277 contextPdf.addJRMetadata(source, "fix_delta_w", msg(CSV_DELTA_W_HEADER)); | |
278 } | |
279 | |
244 @Override | 280 @Override |
245 protected void writePDF(final OutputStream out) { | 281 protected void writePDF(final OutputStream out) { |
246 // TODO: Implement me! | 282 final MetaAndTableJRDataSource source = new MetaAndTableJRDataSource(); |
247 // wird doch NICHT erledigt vom WaterlevelExporter | 283 final String jasperFile = Resources.getMsg(this.context.getMeta(), JASPER_FILE); |
284 addMetaData(source); | |
285 try { | |
286 final TreeMap<Double, ArrayList<String[]>> sorted = getRows(); // Custom Result could be nice, too... | |
287 for (final ArrayList<String[]> list : sorted.values()) { | |
288 for (final String[] row : list) { | |
289 source.addData(row); | |
290 } | |
291 } | |
292 final JasperReporter reporter = new JasperReporter(); | |
293 reporter.addReport(jasperFile, source); | |
294 reporter.exportPDF(out); | |
295 } | |
296 catch (final JRException je) { | |
297 log.warn("Error generating PDF Report!", je); | |
298 } | |
248 } | 299 } |
249 } | 300 } |
250 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |