Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/exports/DurationCurveExporter.java @ 2178:1d7fb2cabfc7
Issue 138.
PDF output for durationcurve calculation results.
flys-artifacts/trunk@3777 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Fri, 27 Jan 2012 07:53:03 +0000 |
parents | 65dac9cf6ff5 |
children | a9a8df1473fd |
comparison
equal
deleted
inserted
replaced
2177:28dbeb64ce7c | 2178:1d7fb2cabfc7 |
---|---|
2 | 2 |
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.List; | 6 import java.util.List; |
7 import java.util.Map; | |
8 import java.util.HashMap; | |
9 import java.util.Date; | |
10 import java.text.DateFormat; | |
11 import java.util.Locale; | |
7 | 12 |
8 import org.w3c.dom.Document; | 13 import org.w3c.dom.Document; |
9 | 14 |
10 import org.apache.log4j.Logger; | 15 import org.apache.log4j.Logger; |
11 | 16 |
12 import au.com.bytecode.opencsv.CSVWriter; | 17 import au.com.bytecode.opencsv.CSVWriter; |
13 | 18 |
19 import net.sf.jasperreports.engine.JasperExportManager; | |
20 import net.sf.jasperreports.engine.JasperFillManager; | |
21 import net.sf.jasperreports.engine.JasperPrint; | |
22 import net.sf.jasperreports.engine.JRException; | |
23 | |
14 import de.intevation.artifacts.CallContext; | 24 import de.intevation.artifacts.CallContext; |
25 import de.intevation.artifacts.CallMeta; | |
26 | |
27 import de.intevation.flys.artifacts.FLYSArtifact; | |
15 | 28 |
16 import de.intevation.flys.artifacts.model.WQDay; | 29 import de.intevation.flys.artifacts.model.WQDay; |
17 import de.intevation.flys.artifacts.model.CalculationResult; | 30 import de.intevation.flys.artifacts.model.CalculationResult; |
18 | 31 import de.intevation.flys.artifacts.model.WKmsJRDataSource; |
32 import de.intevation.flys.artifacts.resources.Resources; | |
33 | |
34 import de.intevation.flys.utils.FLYSUtils; | |
19 import de.intevation.flys.utils.Formatter; | 35 import de.intevation.flys.utils.Formatter; |
20 | 36 |
21 | 37 |
22 /** | 38 /** |
23 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> | 39 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
39 | 55 |
40 public static final String DEFAULT_CSV_DURATION_HEADER = "D [Tagen]"; | 56 public static final String DEFAULT_CSV_DURATION_HEADER = "D [Tagen]"; |
41 public static final String DEFAULT_CSV_W_HEADER = "W [NN + m]"; | 57 public static final String DEFAULT_CSV_W_HEADER = "W [NN + m]"; |
42 public static final String DEFAULT_CSV_Q_HEADER = "Q [m\u00b3/s]"; | 58 public static final String DEFAULT_CSV_Q_HEADER = "Q [m\u00b3/s]"; |
43 | 59 |
60 public static final String PDF_HEADER_MODE = "export.duration.pdf.mode"; | |
44 | 61 |
45 /** The storage that contains all WQKms objects for the different facets. */ | 62 /** The storage that contains all WQKms objects for the different facets. */ |
46 protected List<WQDay> data; | 63 protected List<WQDay> data; |
47 | 64 |
48 | 65 |
147 return Formatter.getDurationD(context); | 164 return Formatter.getDurationD(context); |
148 } | 165 } |
149 | 166 |
150 | 167 |
151 @Override | 168 @Override |
152 protected void writePDF(OutputStream out) {} | 169 protected void writePDF(OutputStream out) { |
153 | 170 WKmsJRDataSource source = createJRData(); |
171 Map parameters = new HashMap(); | |
172 parameters.put("ReportTitle", "Exported Data"); | |
173 try { | |
174 JasperPrint print = JasperFillManager.fillReport( | |
175 "conf/jasper/duration.jasper", | |
176 parameters, | |
177 source); | |
178 JasperExportManager.exportReportToPdfStream(print, out); | |
179 } | |
180 catch(JRException je) { | |
181 logger.warn("Error generating PDF Report!"); | |
182 je.printStackTrace(); | |
183 } | |
184 } | |
185 | |
186 protected WKmsJRDataSource createJRData() { | |
187 WKmsJRDataSource source = new WKmsJRDataSource(); | |
188 | |
189 addMetaData(source); | |
190 for (WQDay wqday: data) { | |
191 addWQDayData(source, wqday); | |
192 } | |
193 | |
194 return source; | |
195 } | |
196 | |
197 | |
198 protected void addMetaData(WKmsJRDataSource source) { | |
199 CallMeta meta = context.getMeta(); | |
200 | |
201 FLYSArtifact flys = (FLYSArtifact) master; | |
202 | |
203 source.addMetaData ("river", FLYSUtils.getRivername(flys)); | |
204 | |
205 Locale locale = Resources.getLocale(meta); | |
206 DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale); | |
207 | |
208 source.addMetaData("date", df.format(new Date())); | |
209 | |
210 double[] kms = FLYSUtils.getKmRange(flys); | |
211 source.addMetaData("range", String.valueOf(kms[0])); | |
212 | |
213 source.addMetaData("calculation", Resources.getMsg( | |
214 locale, | |
215 PDF_HEADER_MODE, | |
216 "Duration")); | |
217 } | |
218 | |
219 protected void addWQDayData(WKmsJRDataSource source, WQDay wqday) { | |
220 int size = wqday.size(); | |
221 | |
222 NumberFormat wf = getWFormatter(); | |
223 NumberFormat qf = getQFormatter(); | |
224 NumberFormat df = getDFormatter(); | |
225 | |
226 if (wqday.isIncreasing()) { | |
227 for (int i = size-1; i >= 0; i --) { | |
228 source.addData(new String[] { | |
229 "", | |
230 wf.format(wqday.getW(i)), | |
231 qf.format(wqday.getQ(i)), | |
232 "", "", "", | |
233 df.format(wqday.getDay(i)) | |
234 }); | |
235 } | |
236 } | |
237 else { | |
238 for (int i = 0; i < size; i ++) { | |
239 source.addData(new String[] { | |
240 "", | |
241 wf.format(wqday.getW(i)), | |
242 qf.format(wqday.getQ(i)), | |
243 "", "", "", | |
244 df.format(wqday.getDay(i)) | |
245 }); | |
246 } | |
247 } | |
248 } | |
154 } | 249 } |