comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepthminmax/FlowDepthMinMaxExporter.java @ 9006:7134a4c7d1b6

U-Info S-Info general work
author gernotbelger
date Tue, 17 Apr 2018 13:20:25 +0200
parents d5802f22e4f5
children 23945061daec
comparison
equal deleted inserted replaced
9005:460fcc128794 9006:7134a4c7d1b6
6 * documentation coming with Dive4Elements River for details. 6 * documentation coming with Dive4Elements River for details.
7 */ 7 */
8 8
9 package org.dive4elements.river.artifacts.sinfo.flowdepthminmax; 9 package org.dive4elements.river.artifacts.sinfo.flowdepthminmax;
10 10
11 import java.io.OutputStream;
11 import java.util.ArrayList; 12 import java.util.ArrayList;
12 import java.util.Collection; 13 import java.util.Collection;
13 14
14 import org.apache.log4j.Logger; 15 import org.apache.log4j.Logger;
15 import org.dive4elements.river.artifacts.common.GeneralResultType; 16 import org.dive4elements.river.artifacts.common.GeneralResultType;
17 import org.dive4elements.river.artifacts.common.JasperReporter;
18 import org.dive4elements.river.artifacts.common.MetaAndTableJRDataSource;
16 import org.dive4elements.river.artifacts.common.ResultRow; 19 import org.dive4elements.river.artifacts.common.ResultRow;
17 import org.dive4elements.river.artifacts.sinfo.common.AbstractSInfoExporter; 20 import org.dive4elements.river.artifacts.sinfo.common.AbstractSInfoExporter;
18 import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType; 21 import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType;
19 import org.dive4elements.river.artifacts.sinfo.util.BedHeightInfo; 22 import org.dive4elements.river.artifacts.sinfo.util.BedHeightInfo;
20 import org.dive4elements.river.artifacts.sinfo.util.MetaAndTableJRDataSource;
21 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; 23 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo;
22 import org.dive4elements.river.artifacts.sinfo.util.WstInfo; 24 import org.dive4elements.river.artifacts.sinfo.util.WstInfo;
23 25
24 import au.com.bytecode.opencsv.CSVWriter; 26 import au.com.bytecode.opencsv.CSVWriter;
27 import net.sf.jasperreports.engine.JRException;
25 28
26 /** 29 /**
27 * Generates different output formats (csv, pdf) of data that resulted from a flow depths computation. 30 * Generates different output formats (csv, pdf) of data that resulted from a flow depths computation.
28 * 31 *
29 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> 32 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
33 public class FlowDepthMinMaxExporter extends AbstractSInfoExporter<FlowDepthMinMaxCalculationResult, FlowDepthMinMaxCalculationResults> { 36 public class FlowDepthMinMaxExporter extends AbstractSInfoExporter<FlowDepthMinMaxCalculationResult, FlowDepthMinMaxCalculationResults> {
34 37
35 /** The log used in this exporter. */ 38 /** The log used in this exporter. */
36 private static Logger log = Logger.getLogger(FlowDepthMinMaxExporter.class); 39 private static Logger log = Logger.getLogger(FlowDepthMinMaxExporter.class);
37 40
38 private static final String JASPER_FILE = "/jasper/sinfo.flowdepthminmax.jasper"; 41 private static final String JASPER_FILE = "/jasper/templates/sinfo.flowdepthminmax.jrxml";
39 42
40 @Override 43 @Override
41 protected Logger getLog() { 44 protected Logger getLog() {
42 return log; 45 return log;
43 } 46 }
49 final BedHeightInfo sounding = result.getSounding(); 52 final BedHeightInfo sounding = result.getSounding();
50 super.writeCSVSoundingMetadata(writer, sounding); 53 super.writeCSVSoundingMetadata(writer, sounding);
51 writer.writeNext(new String[] { "" }); // break line 54 writer.writeNext(new String[] { "" }); // break line
52 final WstInfo wst = result.getWst(); 55 final WstInfo wst = result.getWst();
53 writeCSVWaterlevelMetadata(writer, wst); 56 writeCSVWaterlevelMetadata(writer, wst);
57 writer.writeNext(new String[] { "" }); // break line
54 } 58 }
55 59
56 @Override 60 @Override
57 protected void writeCSVGlobalMetadata(final CSVWriter writer, final FlowDepthMinMaxCalculationResults results) { 61 protected void writeCSVGlobalMetadata(final CSVWriter writer, final FlowDepthMinMaxCalculationResults results) {
58 62
118 122
119 return lines.toArray(new String[lines.size()]); 123 return lines.toArray(new String[lines.size()]);
120 } 124 }
121 125
122 @Override 126 @Override
123 protected final String getJasperFile() {
124 return JASPER_FILE;
125 }
126
127 @Override
128 protected final void addJRMetaData(final MetaAndTableJRDataSource source, final FlowDepthMinMaxCalculationResults results) { 127 protected final void addJRMetaData(final MetaAndTableJRDataSource source, final FlowDepthMinMaxCalculationResults results) {
129 128
130 /* general metadata */ 129 /* general metadata */
131 super.addJRMetaData(source, results); 130 super.addJRMetaData(source, results);
132 131
141 source.addMetaData("bedheight_header", SInfoResultType.meanBedHeight.getPdfHeader(this.context.getMeta())); 140 source.addMetaData("bedheight_header", SInfoResultType.meanBedHeight.getPdfHeader(this.context.getMeta()));
142 source.addMetaData("sounding_name_header", SInfoResultType.soundingLabel.getPdfHeader(this.context.getMeta())); 141 source.addMetaData("sounding_name_header", SInfoResultType.soundingLabel.getPdfHeader(this.context.getMeta()));
143 source.addMetaData("location_header", SInfoResultType.location.getPdfHeader(this.context.getMeta())); 142 source.addMetaData("location_header", SInfoResultType.location.getPdfHeader(this.context.getMeta()));
144 } 143 }
145 144
145 @Override
146 protected void writePDF(final OutputStream out) {
147 try {
148 final MetaAndTableJRDataSource source = createJRData(this.data);
149
150 final JasperReporter reporter = new JasperReporter();
151 reporter.addReport(JASPER_FILE, source);
152 reporter.exportPDF(out);
153 }
154 catch (final JRException je) {
155 getLog().warn("Error generating PDF Report!", je);
156 }
157 }
158
146 } 159 }

http://dive4elements.wald.intevation.org