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