annotate artifacts/src/main/java/org/dive4elements/river/artifacts/common/AbstractCommonExporter.java @ 9151:bb929b444ea5

vergessen
author gernotbelger
date Thu, 14 Jun 2018 16:57:14 +0200
parents
children a4121ec450d6
rev   line source
9151
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
1 /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
2 * Software engineering by
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
3 * Björnsen Beratende Ingenieure GmbH
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
5 *
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
6 * This file is Free Software under the GNU AGPL (>=v3)
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
8 * documentation coming with Dive4Elements River for details.
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
9 */
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
10 package org.dive4elements.river.artifacts.common;
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
11
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
12 import java.io.OutputStream;
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
13
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
14 import org.apache.log4j.Logger;
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
15 import org.dive4elements.artifacts.CallContext;
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
16 import org.dive4elements.river.artifacts.model.CalculationResult;
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
17 import org.dive4elements.river.exports.AbstractExporter;
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
18 import org.w3c.dom.Document;
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
19
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
20 import au.com.bytecode.opencsv.CSVWriter;
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
21
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
22 /**
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
23 * @author Gernot Belger
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
24 */
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
25 public abstract class AbstractCommonExporter<RESULTS extends AbstractCalculationResults> extends AbstractExporter {
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
26
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
27 /** The log used in this exporter. */
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
28 private final Logger log = Logger.getLogger(getClass());
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
29
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
30 /** The log used in this exporter. */
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
31 protected final Logger getLog() {
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
32 return this.log;
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
33 }
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
34
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
35 private RESULTS results = null;
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
36
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
37 private ExportContextPDF helper;
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
38
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
39 @Override
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
40 public void init(final String outName, final Document request, final OutputStream out, final CallContext context) {
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
41 super.init(outName, request, out, context);
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
42
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
43 this.helper = new ExportContextPDF(context); // bleibt so asynchron zu ExportContextCSV - ist so beabsichtigt
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
44 }
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
45
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
46 protected final ExportContextPDF getHelper() {
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
47 return this.helper;
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
48 }
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
49
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
50 @Override
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
51 protected final void addData(final Object d) {
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
52 /* reset */
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
53 this.results = null;
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
54
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
55 if (d instanceof CalculationResult) {
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
56
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
57 final Object dat = ((CalculationResult) d).getData();
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
58 if (dat != null) {
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
59 @SuppressWarnings("unchecked")
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
60 final RESULTS result = (RESULTS) dat;
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
61 this.results = result;
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
62 }
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
63 }
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
64 }
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
65
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
66 protected final RESULTS getResults() {
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
67 return this.results;
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
68 }
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
69
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
70 protected final AbstractCalculationResults getResults2() {
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
71 return this.results;
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
72 }
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
73
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
74 @Override
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
75 protected final void writeCSVData(final CSVWriter writer) {
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
76 doWriteCSVData(writer, this.results);
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
77 }
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
78
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
79 protected abstract void doWriteCSVData(CSVWriter writer, RESULTS results);
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
80
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
81 /**
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
82 * Formats header with unit and label: msg [unit] (label)
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
83 */
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
84 // TODO: REMOVE, because it has moved to ExportContextCSV
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
85 protected final String msgUnitLabel(final String key, final String unit, final String label) {
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
86 final String msg = msg(key);
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
87 return String.format("%s [%s] (%s)", msg, unit, label);
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
88 }
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
89
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
90 @Override
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
91 protected final void writePDF(final OutputStream out) {
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
92 doWritePdf(out, this.results);
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
93 }
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
94
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
95 protected abstract void doWritePdf(OutputStream out, RESULTS results);
bb929b444ea5 vergessen
gernotbelger
parents:
diff changeset
96 }

http://dive4elements.wald.intevation.org