Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/exports/HistoricalDischargeCurveExporter.java @ 2286:89ca1e8572e4
Added PDF export for historical discharge curve calculations.
flys-artifacts/trunk@3949 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Tue, 07 Feb 2012 10:29:39 +0000 |
parents | ea173e4c07c7 |
children | b8df8d1476ba |
comparison
equal
deleted
inserted
replaced
2285:5a00269406f3 | 2286:89ca1e8572e4 |
---|---|
4 import java.text.NumberFormat; | 4 import java.text.NumberFormat; |
5 import java.text.DateFormat; | 5 import java.text.DateFormat; |
6 import java.util.ArrayList; | 6 import java.util.ArrayList; |
7 import java.util.Date; | 7 import java.util.Date; |
8 import java.util.List; | 8 import java.util.List; |
9 import java.util.Map; | |
10 import java.util.HashMap; | |
11 import java.util.Locale; | |
9 | 12 |
10 import org.w3c.dom.Document; | 13 import org.w3c.dom.Document; |
11 | 14 |
12 import org.apache.log4j.Logger; | 15 import org.apache.log4j.Logger; |
13 | 16 |
14 import au.com.bytecode.opencsv.CSVWriter; | 17 import au.com.bytecode.opencsv.CSVWriter; |
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 | |
24 import de.intevation.artifacts.common.utils.Config; | |
15 | 25 |
16 import de.intevation.artifacts.CallContext; | 26 import de.intevation.artifacts.CallContext; |
17 import de.intevation.artifacts.CallMeta; | 27 import de.intevation.artifacts.CallMeta; |
18 | 28 |
19 import de.intevation.flys.artifacts.FLYSArtifact; | 29 import de.intevation.flys.artifacts.FLYSArtifact; |
20 import de.intevation.flys.artifacts.model.CalculationResult; | 30 import de.intevation.flys.artifacts.model.CalculationResult; |
21 import de.intevation.flys.artifacts.model.Timerange; | 31 import de.intevation.flys.artifacts.model.Timerange; |
22 import de.intevation.flys.artifacts.model.WQTimerange; | 32 import de.intevation.flys.artifacts.model.WQTimerange; |
33 import de.intevation.flys.artifacts.model.WQTJRDataSource; | |
23 import de.intevation.flys.artifacts.resources.Resources; | 34 import de.intevation.flys.artifacts.resources.Resources; |
24 import de.intevation.flys.utils.FLYSUtils; | 35 import de.intevation.flys.utils.FLYSUtils; |
25 import de.intevation.flys.utils.Formatter; | 36 import de.intevation.flys.utils.Formatter; |
26 | 37 |
27 | 38 |
47 "export.historical.discharge.csv.header.diff"; | 58 "export.historical.discharge.csv.header.diff"; |
48 | 59 |
49 public static final String CSV_GAUGENAME_HEADER = | 60 public static final String CSV_GAUGENAME_HEADER = |
50 "export.historical.discharge.csv.header.gaugename"; | 61 "export.historical.discharge.csv.header.gaugename"; |
51 | 62 |
63 public static final String PDF_HEADER_MODE = | |
64 "export.historical.discharge.pdf.mode"; | |
65 | |
66 public static final String JASPER_FILE = | |
67 "export.historical.discharge.pdf.file"; | |
52 | 68 |
53 protected List<WQTimerange[]> data; | 69 protected List<WQTimerange[]> data; |
54 | 70 |
55 | 71 |
56 public void init(Document request, OutputStream out, CallContext cc) { | 72 public void init(Document request, OutputStream out, CallContext cc) { |
92 } | 108 } |
93 | 109 |
94 | 110 |
95 @Override | 111 @Override |
96 protected void writePDF(OutputStream out) { | 112 protected void writePDF(OutputStream out) { |
97 logger.warn("TODO: IMPLEMENT ME!"); | 113 WQTJRDataSource source = createJRData(); |
114 | |
115 String jasperFile = Resources.getMsg( | |
116 context.getMeta(), | |
117 JASPER_FILE, | |
118 "/jasper/historical-discharge_en.jasper"); | |
119 String confPath = Config.getConfigDirectory().toString(); | |
120 | |
121 Map parameters = new HashMap(); | |
122 parameters.put("ReportTitle", "Exported Data"); | |
123 try { | |
124 JasperPrint print = JasperFillManager.fillReport( | |
125 confPath + jasperFile, | |
126 parameters, | |
127 source); | |
128 JasperExportManager.exportReportToPdfStream(print, out); | |
129 } | |
130 catch(JRException je) { | |
131 logger.warn("Error generating PDF Report!"); | |
132 je.printStackTrace(); | |
133 } | |
134 | |
98 } | 135 } |
99 | 136 |
100 | 137 |
101 protected void writeCSVHeader(CSVWriter writer) { | 138 protected void writeCSVHeader(CSVWriter writer) { |
102 writer.writeNext(new String[] { | 139 writer.writeNext(new String[] { |
136 }); | 173 }); |
137 } | 174 } |
138 } | 175 } |
139 | 176 |
140 | 177 |
178 protected WQTJRDataSource createJRData() { | |
179 WQTJRDataSource source = new WQTJRDataSource(); | |
180 | |
181 addMetaData(source); | |
182 for (WQTimerange[] arr: data) { | |
183 for (WQTimerange wqt: arr) { | |
184 addWQTData(source, wqt); | |
185 } | |
186 } | |
187 | |
188 return source; | |
189 } | |
190 | |
191 | |
192 protected void addMetaData(WQTJRDataSource source) { | |
193 CallMeta meta = context.getMeta(); | |
194 | |
195 FLYSArtifact flys = (FLYSArtifact) master; | |
196 | |
197 source.addMetaData ("river", FLYSUtils.getRivername(flys)); | |
198 | |
199 Locale locale = Resources.getLocale(meta); | |
200 DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale); | |
201 | |
202 source.addMetaData("date", df.format(new Date())); | |
203 | |
204 source.addMetaData("calculation", Resources.getMsg( | |
205 locale, | |
206 PDF_HEADER_MODE, | |
207 "Historical Discharge")); | |
208 } | |
209 | |
210 | |
211 protected void addWQTData(WQTJRDataSource source, WQTimerange wqt) { | |
212 DateFormat df = Formatter.getShortDateFormat(context); | |
213 NumberFormat wf = Formatter.getHistoricalDischargeW(context); | |
214 NumberFormat qf = Formatter.getHistoricalDischargeQ(context); | |
215 | |
216 double[] wq = new double[2]; | |
217 | |
218 String gaugeName = getReferenceGaugename(); | |
219 | |
220 for (int i = 0, n = wqt.size(); i < n; i++) { | |
221 Timerange tr = wqt.getTimerange(i); | |
222 Date start = new Date(tr.getStart()); | |
223 Date end = new Date(tr.getEnd()); | |
224 | |
225 wqt.get(i, wq); | |
226 | |
227 source.addData(new String[] { | |
228 df.format(start) + " - " + df.format(end), | |
229 wf.format(wq[0]), | |
230 qf.format(wq[1]), | |
231 "TODO: Difference to reference curve", | |
232 gaugeName | |
233 }); | |
234 } | |
235 } | |
236 | |
237 | |
141 public String getReferenceGaugename() { | 238 public String getReferenceGaugename() { |
142 return FLYSUtils.getReferenceGaugeName((FLYSArtifact) master); | 239 return FLYSUtils.getReferenceGaugeName((FLYSArtifact) master); |
143 } | 240 } |
144 } | 241 } |
145 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 242 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |