comparison flys-artifacts/src/main/java/de/intevation/flys/exports/WDifferencesExporter.java @ 2180:65b32220f197

Issue 138. PDF output for differences calculations. flys-artifacts/trunk@3784 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Raimund Renkert <raimund.renkert@intevation.de>
date Fri, 27 Jan 2012 09:49:11 +0000
parents 65dac9cf6ff5
children a9a8df1473fd
comparison
equal deleted inserted replaced
2179:c3e523a76340 2180:65b32220f197
3 import java.io.IOException; 3 import java.io.IOException;
4 import java.io.OutputStream; 4 import java.io.OutputStream;
5 import java.text.NumberFormat; 5 import java.text.NumberFormat;
6 import java.util.ArrayList; 6 import java.util.ArrayList;
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.JasperExportManager;
21 import net.sf.jasperreports.engine.JasperFillManager;
22 import net.sf.jasperreports.engine.JasperPrint;
23 import net.sf.jasperreports.engine.JRException;
24
15 import de.intevation.artifacts.CallContext; 25 import de.intevation.artifacts.CallContext;
26 import de.intevation.artifacts.CallMeta;
27
28 import de.intevation.flys.artifacts.WINFOArtifact;
16 29
17 import de.intevation.flys.artifacts.model.CalculationResult; 30 import de.intevation.flys.artifacts.model.CalculationResult;
18 import de.intevation.flys.artifacts.model.WKms; 31 import de.intevation.flys.artifacts.model.WKms;
19 32 import de.intevation.flys.artifacts.model.WKmsJRDataSource;
33 import de.intevation.flys.artifacts.resources.Resources;
34
35 import de.intevation.flys.utils.FLYSUtils;
20 import de.intevation.flys.utils.Formatter; 36 import de.intevation.flys.utils.Formatter;
21 37
22 /** 38 /**
23 * (CSV)Exporter for WDifferences. 39 * (CSV)Exporter for WDifferences.
24 */ 40 */
35 "export.w_differences.csv.header.w"; 51 "export.w_differences.csv.header.w";
36 52
37 public static final String WDIFF_DEFAULT_CSV_KM_HEADER = "Fluss-Km"; 53 public static final String WDIFF_DEFAULT_CSV_KM_HEADER = "Fluss-Km";
38 public static final String WDIFF_DEFAULT_CSV_W_HEADER = "m"; 54 public static final String WDIFF_DEFAULT_CSV_W_HEADER = "m";
39 55
56 public static final String PDF_HEADER_MODE = "export.wdifferences.pdf.mode";
40 57
41 /** The storage that contains all WKms objects for the different facets. */ 58 /** The storage that contains all WKms objects for the different facets. */
42 protected List<WKms[]> data; 59 protected List<WKms[]> data;
43 60
44 61
63 if (facet == null) { 80 if (facet == null) {
64 throw new IOException("invalid (null) facet for exporter"); 81 throw new IOException("invalid (null) facet for exporter");
65 } 82 }
66 else if (facet.equals(AbstractExporter.FACET_CSV)) { 83 else if (facet.equals(AbstractExporter.FACET_CSV)) {
67 generateCSV(); 84 generateCSV();
85 }
86 else if (facet.equals(AbstractExporter.FACET_PDF)) {
87 generatePDF();
68 } 88 }
69 else { 89 else {
70 throw new IOException("invalid facet (" + facet + ") for exporter"); 90 throw new IOException("invalid facet (" + facet + ") for exporter");
71 } 91 }
72 } 92 }
158 return Formatter.getWaterlevelW(context); 178 return Formatter.getWaterlevelW(context);
159 } 179 }
160 180
161 181
162 @Override 182 @Override
163 protected void writePDF(OutputStream out) {} 183 protected void writePDF(OutputStream out) {
184 WKmsJRDataSource source = createJRData();
185 Map parameters = new HashMap();
186 parameters.put("ReportTitle", "Exported Data");
187 try {
188 JasperPrint print = JasperFillManager.fillReport(
189 "conf/jasper/wdifferences.jasper",
190 parameters,
191 source);
192 JasperExportManager.exportReportToPdfStream(print, out);
193 }
194 catch(JRException je) {
195 logger.warn("Error generating PDF Report!");
196 je.printStackTrace();
197 }
198 }
199
200 protected WKmsJRDataSource createJRData() {
201 WKmsJRDataSource source = new WKmsJRDataSource();
202
203 addMetaData(source);
204 for (WKms[] tmp: data) {
205 for (WKms wkms: tmp) {
206 addWKmsData(source, wkms);
207 }
208 }
209 return source;
210 }
211
212
213 protected void addMetaData(WKmsJRDataSource source) {
214 CallMeta meta = context.getMeta();
215
216 WINFOArtifact flys = (WINFOArtifact) master;
217
218 source.addMetaData ("river", FLYSUtils.getRivername(flys));
219
220 Locale locale = Resources.getLocale(meta);
221 DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
222
223 source.addMetaData("date", df.format(new Date()));
224
225 String differences = FLYSUtils.getWDifferences(flys, context);
226 source.addMetaData("differences", differences);
227
228 source.addMetaData("calculation", Resources.getMsg(
229 locale,
230 PDF_HEADER_MODE,
231 "W Differences"));
232 }
233
234 protected void addWKmsData(WKmsJRDataSource source, WKms wkms) {
235 NumberFormat kmf = getKmFormatter();
236 NumberFormat wf = getWFormatter();
237 int size = wkms.size();
238
239 for (int i = 0; i < size; i ++) {
240
241 source.addData(new String[] {
242 kmf.format(wkms.getKm(i)),
243 wf.format(wkms.getW(i))
244 });
245 }
246 }
247
164 } 248 }
165 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 249 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org