Mercurial > dive4elements > river
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 : |