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 :

http://dive4elements.wald.intevation.org