comparison flys-artifacts/src/main/java/de/intevation/flys/exports/ComputedDischargeCurveExporter.java @ 2177:28dbeb64ce7c

Issue 138. PDF output for computed discharge calculation results. flys-artifacts/trunk@3776 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Raimund Renkert <raimund.renkert@intevation.de>
date Thu, 26 Jan 2012 16:53:42 +0000
parents 65dac9cf6ff5
children 5ff481ab24a1
comparison
equal deleted inserted replaced
2176:65dac9cf6ff5 2177:28dbeb64ce7c
3 import java.io.OutputStream; 3 import java.io.OutputStream;
4 import java.text.NumberFormat; 4 import java.text.NumberFormat;
5 import java.util.ArrayList; 5 import java.util.ArrayList;
6 import java.util.Arrays; 6 import java.util.Arrays;
7 import java.util.List; 7 import java.util.List;
8 import java.util.Map;
9 import java.util.HashMap;
10 import java.util.Date;
11 import java.text.DateFormat;
12 import java.util.Locale;
8 13
9 import org.w3c.dom.Document; 14 import org.w3c.dom.Document;
10 15
11 import org.apache.log4j.Logger; 16 import org.apache.log4j.Logger;
12 17
13 import au.com.bytecode.opencsv.CSVWriter; 18 import au.com.bytecode.opencsv.CSVWriter;
14 19
20 import net.sf.jasperreports.engine.JRDataSource;
21 import net.sf.jasperreports.engine.JasperExportManager;
22 import net.sf.jasperreports.engine.JasperFillManager;
23 import net.sf.jasperreports.engine.JasperPrint;
24 import net.sf.jasperreports.engine.JRException;
25
15 import de.intevation.artifacts.CallContext; 26 import de.intevation.artifacts.CallContext;
27 import de.intevation.artifacts.CallMeta;
28
29 import de.intevation.flys.artifacts.FLYSArtifact;
16 30
17 import de.intevation.flys.artifacts.model.CalculationResult; 31 import de.intevation.flys.artifacts.model.CalculationResult;
18 import de.intevation.flys.artifacts.model.WQKms; 32 import de.intevation.flys.artifacts.model.WQKms;
19 33 import de.intevation.flys.artifacts.model.WKmsJRDataSource;
34 import de.intevation.flys.artifacts.resources.Resources;
35
36 import de.intevation.flys.utils.FLYSUtils;
20 import de.intevation.flys.utils.Formatter; 37 import de.intevation.flys.utils.Formatter;
21 38
22 39
23 /** 40 /**
24 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> 41 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
36 public static final String CSV_Q_HEADER = 53 public static final String CSV_Q_HEADER =
37 "export.computed.discharge.curve.csv.header.q"; 54 "export.computed.discharge.curve.csv.header.q";
38 55
39 public static final String DEFAULT_CSV_W_HEADER = "W [NN + m]"; 56 public static final String DEFAULT_CSV_W_HEADER = "W [NN + m]";
40 public static final String DEFAULT_CSV_Q_HEADER = "Q [m\u00b3/s]"; 57 public static final String DEFAULT_CSV_Q_HEADER = "Q [m\u00b3/s]";
58
59 public static final String PDF_HEADER_MODE = "export.computed.discharge.pdf.mode";
41 60
42 61
43 protected List<WQKms> data; 62 protected List<WQKms> data;
44 63
45 64
117 return Formatter.getComputedDischargeQ(context); 136 return Formatter.getComputedDischargeQ(context);
118 } 137 }
119 138
120 139
121 @Override 140 @Override
122 protected void writePDF(OutputStream out) {} 141 protected void writePDF(OutputStream out) {
142 WKmsJRDataSource source = createJRData();
143 Map parameters = new HashMap();
144 parameters.put("ReportTitle", "Exported Data");
145 try {
146 JasperPrint print = JasperFillManager.fillReport(
147 "conf/jasper/computed-discharge.jasper",
148 parameters,
149 source);
150 JasperExportManager.exportReportToPdfStream(print, out);
151 }
152 catch(JRException je) {
153 logger.warn("Error generating PDF Report!");
154 je.printStackTrace();
155 }
156 }
157
158
159 protected WKmsJRDataSource createJRData() {
160 WKmsJRDataSource source = new WKmsJRDataSource();
161
162 addMetaData(source);
163 addWQData(source);
164
165 return source;
166 }
167
168
169 protected void addMetaData(WKmsJRDataSource source) {
170 CallMeta meta = context.getMeta();
171
172 FLYSArtifact flys = (FLYSArtifact) master;
173
174 source.addMetaData ("river", FLYSUtils.getRivername(flys));
175
176 Locale locale = Resources.getLocale(meta);
177 DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
178
179 source.addMetaData("date", df.format(new Date()));
180
181 double[] kms = FLYSUtils.getKmRange(flys);
182 source.addMetaData("range", String.valueOf(kms[0]));
183
184 source.addMetaData("calculation", Resources.getMsg(
185 locale,
186 PDF_HEADER_MODE,
187 "Computed Discharge"));
188 }
189
190 protected void addWQData(WKmsJRDataSource source) {
191 NumberFormat wf = getWFormatter();
192 NumberFormat qf = getQFormatter();
193
194 double[] res = new double[3];
195
196 for (WQKms wqkms: data) {
197 int size = wqkms.size();
198
199 for (int i = 0; i < size; i++) {
200 res = wqkms.get(i, res);
201
202 source.addData(new String[] {
203 "", // Empty, the WKmsJRDtasource stores km here.
204 wf.format(res[0]),
205 qf.format(res[1])
206 });
207 }
208 }
209
210 }
123 } 211 }
124 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 212 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org