Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelExporter.java @ 8202:e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Fri, 05 Sep 2014 12:58:17 +0200 |
parents | 11bc2d6a2059 |
children | 839032ac1523 |
comparison
equal
deleted
inserted
replaced
8201:4b8c5a08de04 | 8202:e4606eae8ea5 |
---|---|
66 * | 66 * |
67 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> | 67 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
68 */ | 68 */ |
69 public class WaterlevelExporter extends AbstractExporter { | 69 public class WaterlevelExporter extends AbstractExporter { |
70 | 70 |
71 /** The logger used in this exporter.*/ | 71 /** The log used in this exporter.*/ |
72 private static Logger logger = Logger.getLogger(WaterlevelExporter.class); | 72 private static Logger log = Logger.getLogger(WaterlevelExporter.class); |
73 | 73 |
74 public static final String FACET_WST = "wst"; | 74 public static final String FACET_WST = "wst"; |
75 | 75 |
76 /* This should be the same as in the StaticWQKmsArtifact */ | 76 /* This should be the same as in the StaticWQKmsArtifact */ |
77 public static final String STATICWQKMSNAME = "staticwqkms"; | 77 public static final String STATICWQKMSNAME = "staticwqkms"; |
152 | 152 |
153 @Override | 153 @Override |
154 public void generate() | 154 public void generate() |
155 throws IOException | 155 throws IOException |
156 { | 156 { |
157 logger.debug("WaterlevelExporter.generate"); | 157 log.debug("WaterlevelExporter.generate"); |
158 | 158 |
159 /* Check for official fixings. They should also be included in the | 159 /* Check for official fixings. They should also be included in the |
160 * export but only the calculation result is added with addData */ | 160 * export but only the calculation result is added with addData */ |
161 | 161 |
162 officalFixings = new ArrayList<WQKms>(); | 162 officalFixings = new ArrayList<WQKms>(); |
181 exists = true; | 181 exists = true; |
182 } | 182 } |
183 } | 183 } |
184 if (!exists) { | 184 if (!exists) { |
185 officalFixings.add(toAdd); | 185 officalFixings.add(toAdd); |
186 logger.debug("Adding additional offical fixing: " + newName); | 186 log.debug("Adding additional offical fixing: " + newName); |
187 } | 187 } |
188 } | 188 } |
189 } | 189 } |
190 | 190 |
191 if (facet != null && facet.equals(AbstractExporter.FACET_CSV)) { | 191 if (facet != null && facet.equals(AbstractExporter.FACET_CSV)) { |
226 * | 226 * |
227 * @param winfo A WINFO Artifact. | 227 * @param winfo A WINFO Artifact. |
228 * @param wqkms A WQKms object that should be prepared. | 228 * @param wqkms A WQKms object that should be prepared. |
229 */ | 229 */ |
230 protected String getColumnTitle(WINFOArtifact winfo, WQKms wqkms) { | 230 protected String getColumnTitle(WINFOArtifact winfo, WQKms wqkms) { |
231 logger.debug("WaterlevelExporter.getColumnTitle"); | 231 log.debug("WaterlevelExporter.getColumnTitle"); |
232 | 232 |
233 String name = wqkms.getName(); | 233 String name = wqkms.getName(); |
234 | 234 |
235 logger.debug("Name of WQKms = '" + name + "'"); | 235 log.debug("Name of WQKms = '" + name + "'"); |
236 | 236 |
237 if (name.indexOf("W=") >= 0) { | 237 if (name.indexOf("W=") >= 0) { |
238 return name; | 238 return name; |
239 } | 239 } |
240 | 240 |
249 String nmv = RiverUtils.getNamedMainValue(winfo, v); | 249 String nmv = RiverUtils.getNamedMainValue(winfo, v); |
250 | 250 |
251 if (nmv != null && nmv.length() > 0) { | 251 if (nmv != null && nmv.length() > 0) { |
252 nmv = RiverUtils.stripNamedMainValue(nmv); | 252 nmv = RiverUtils.stripNamedMainValue(nmv); |
253 nmv += "=" + String.valueOf(v); | 253 nmv += "=" + String.valueOf(v); |
254 logger.debug("Set named main value '" + nmv + "'"); | 254 log.debug("Set named main value '" + nmv + "'"); |
255 | 255 |
256 return nmv; | 256 return nmv; |
257 } | 257 } |
258 } | 258 } |
259 catch (NumberFormatException nfe) { | 259 catch (NumberFormatException nfe) { |
264 return name; | 264 return name; |
265 } | 265 } |
266 | 266 |
267 | 267 |
268 protected String getCSVRowTitle(WINFOArtifact winfo, WQKms wqkms) { | 268 protected String getCSVRowTitle(WINFOArtifact winfo, WQKms wqkms) { |
269 logger.debug("WaterlevelExporter.prepareNamedValue"); | 269 log.debug("WaterlevelExporter.prepareNamedValue"); |
270 | 270 |
271 String name = wqkms.getName(); | 271 String name = wqkms.getName(); |
272 | 272 |
273 logger.debug("Name of WQKms = '" + name + "'"); | 273 log.debug("Name of WQKms = '" + name + "'"); |
274 | 274 |
275 WQ_MODE wqmode = RiverUtils.getWQMode(winfo); | 275 WQ_MODE wqmode = RiverUtils.getWQMode(winfo); |
276 | 276 |
277 if (wqmode == WQ_MODE.WFREE || wqmode == WQ_MODE.QGAUGE) { | 277 if (wqmode == WQ_MODE.WFREE || wqmode == WQ_MODE.QGAUGE) { |
278 return localizeWQKms(winfo, wqkms); | 278 return localizeWQKms(winfo, wqkms); |
282 | 282 |
283 String nmv = RiverUtils.getNamedMainValue(winfo, v); | 283 String nmv = RiverUtils.getNamedMainValue(winfo, v); |
284 | 284 |
285 if (nmv != null && nmv.length() > 0) { | 285 if (nmv != null && nmv.length() > 0) { |
286 nmv = RiverUtils.stripNamedMainValue(nmv); | 286 nmv = RiverUtils.stripNamedMainValue(nmv); |
287 logger.debug("Set named main value '" + nmv + "'"); | 287 log.debug("Set named main value '" + nmv + "'"); |
288 | 288 |
289 return nmv; | 289 return nmv; |
290 } | 290 } |
291 | 291 |
292 return localizeWQKms(winfo, wqkms); | 292 return localizeWQKms(winfo, wqkms); |
316 } | 316 } |
317 | 317 |
318 | 318 |
319 @Override | 319 @Override |
320 protected void writeCSVData(CSVWriter writer) { | 320 protected void writeCSVData(CSVWriter writer) { |
321 logger.info("WaterlevelExporter.writeData"); | 321 log.info("WaterlevelExporter.writeData"); |
322 | 322 |
323 WQ_MODE mode = RiverUtils.getWQMode((D4EArtifact)master); | 323 WQ_MODE mode = RiverUtils.getWQMode((D4EArtifact)master); |
324 boolean atGauge = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.WGAUGE; | 324 boolean atGauge = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.WGAUGE; |
325 boolean isQ = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.QFREE; | 325 boolean isQ = mode == WQ_MODE.QGAUGE || mode == WQ_MODE.QFREE; |
326 RiverUtils.WQ_INPUT input | 326 RiverUtils.WQ_INPUT input |
375 * | 375 * |
376 * @return A new WQKms with the relevant data sorted by direction | 376 * @return A new WQKms with the relevant data sorted by direction |
377 */ | 377 */ |
378 private WQKms filterWQKms(WQKms wqkms, Double first, Double last) { | 378 private WQKms filterWQKms(WQKms wqkms, Double first, Double last) { |
379 if (first.isNaN() || last.isNaN()) { | 379 if (first.isNaN() || last.isNaN()) { |
380 logger.warn("Filtering official fixing without valid first/last."); | 380 log.warn("Filtering official fixing without valid first/last."); |
381 return wqkms; | 381 return wqkms; |
382 } | 382 } |
383 int firstIdx = first > last ? wqkms.size() - 1 : 0; | 383 int firstIdx = first > last ? wqkms.size() - 1 : 0; |
384 int lastIdx = first > last ? 0 : wqkms.size() -1; | 384 int lastIdx = first > last ? 0 : wqkms.size() -1; |
385 WQKms filtered = new WQKms (wqkms.size()); | 385 WQKms filtered = new WQKms (wqkms.size()); |
405 return filtered; | 405 return filtered; |
406 } | 406 } |
407 | 407 |
408 | 408 |
409 protected void writeCSVMeta(CSVWriter writer) { | 409 protected void writeCSVMeta(CSVWriter writer) { |
410 logger.info("WaterlevelExporter.writeCSVMeta"); | 410 log.info("WaterlevelExporter.writeCSVMeta"); |
411 | 411 |
412 // TODO use Access instead of RiverUtils | 412 // TODO use Access instead of RiverUtils |
413 | 413 |
414 CallMeta meta = context.getMeta(); | 414 CallMeta meta = context.getMeta(); |
415 | 415 |
487 for (int i = 1; i < qs.length; i++) { | 487 for (int i = 1; i < qs.length; i++) { |
488 data += ", " + String.valueOf(qs[i]); | 488 data += ", " + String.valueOf(qs[i]); |
489 } | 489 } |
490 } | 490 } |
491 else { | 491 else { |
492 logger.warn("Could not determine Q range!"); | 492 log.warn("Could not determine Q range!"); |
493 } | 493 } |
494 | 494 |
495 writer.writeNext(new String[] { | 495 writer.writeNext(new String[] { |
496 Resources.getMsg( | 496 Resources.getMsg( |
497 meta, | 497 meta, |
509 if (ws != null && ws.length > 0) { | 509 if (ws != null && ws.length > 0) { |
510 lower = String.valueOf(ws[0]); | 510 lower = String.valueOf(ws[0]); |
511 upper = String.valueOf(ws[ws.length-1]); | 511 upper = String.valueOf(ws[ws.length-1]); |
512 } | 512 } |
513 else { | 513 else { |
514 logger.warn("Could not determine W range!"); | 514 log.warn("Could not determine W range!"); |
515 } | 515 } |
516 | 516 |
517 writer.writeNext(new String[] { | 517 writer.writeNext(new String[] { |
518 Resources.getMsg( | 518 Resources.getMsg( |
519 meta, | 519 meta, |
534 protected void writeCSVHeader( | 534 protected void writeCSVHeader( |
535 CSVWriter writer, | 535 CSVWriter writer, |
536 boolean atGauge, | 536 boolean atGauge, |
537 boolean isQ | 537 boolean isQ |
538 ) { | 538 ) { |
539 logger.info("WaterlevelExporter.writeCSVHeader"); | 539 log.info("WaterlevelExporter.writeCSVHeader"); |
540 | 540 |
541 String unit = RiverUtils.getRiver((D4EArtifact) master).getWstUnit().getName(); | 541 String unit = RiverUtils.getRiver((D4EArtifact) master).getWstUnit().getName(); |
542 | 542 |
543 if (atGauge) { | 543 if (atGauge) { |
544 writer.writeNext(new String[] { | 544 writer.writeNext(new String[] { |
655 CSVWriter writer, | 655 CSVWriter writer, |
656 WQKms wqkms, | 656 WQKms wqkms, |
657 boolean atGauge, | 657 boolean atGauge, |
658 boolean isQ | 658 boolean isQ |
659 ) { | 659 ) { |
660 logger.debug("WaterlevelExporter.wQKms2CSV"); | 660 log.debug("WaterlevelExporter.wQKms2CSV"); |
661 | 661 |
662 // Skip constant data. | 662 // Skip constant data. |
663 if (wqkms instanceof ConstantWQKms) { | 663 if (wqkms instanceof ConstantWQKms) { |
664 return; | 664 return; |
665 } | 665 } |
749 } | 749 } |
750 } | 750 } |
751 | 751 |
752 long stopTime = System.currentTimeMillis(); | 752 long stopTime = System.currentTimeMillis(); |
753 | 753 |
754 if (logger.isDebugEnabled()) { | 754 if (log.isDebugEnabled()) { |
755 logger.debug("Writing CSV took " + | 755 log.debug("Writing CSV took " + |
756 (float)(stopTime-startTime)/1000f + " secs."); | 756 (float)(stopTime-startTime)/1000f + " secs."); |
757 } | 757 } |
758 } | 758 } |
759 | 759 |
760 | 760 |
762 * Generates the output in WST format. | 762 * Generates the output in WST format. |
763 */ | 763 */ |
764 protected void generateWST() | 764 protected void generateWST() |
765 throws IOException | 765 throws IOException |
766 { | 766 { |
767 logger.info("WaterlevelExporter.generateWST"); | 767 log.info("WaterlevelExporter.generateWST"); |
768 | 768 |
769 int cols = data.get(0).length + officalFixings.size(); | 769 int cols = data.get(0).length + officalFixings.size(); |
770 WstWriter writer = new WstWriter(cols); | 770 WstWriter writer = new WstWriter(cols); |
771 | 771 |
772 writeWSTData(writer); | 772 writeWSTData(writer); |
774 writer.write(out); | 774 writer.write(out); |
775 } | 775 } |
776 | 776 |
777 | 777 |
778 protected void writeWSTData(WstWriter writer) { | 778 protected void writeWSTData(WstWriter writer) { |
779 logger.debug("WaterlevelExporter.writeWSTData"); | 779 log.debug("WaterlevelExporter.writeWSTData"); |
780 | 780 |
781 double[] result = new double[4]; | 781 double[] result = new double[4]; |
782 | 782 |
783 for (WQKms[] tmp: data) { | 783 for (WQKms[] tmp: data) { |
784 for (WQKms wqkms: tmp) { | 784 for (WQKms wqkms: tmp) { |
848 // not have an official line | 848 // not have an official line |
849 entry.getValue().add(wVal, entry.getValue().getQ(0)); | 849 entry.getValue().add(wVal, entry.getValue().getQ(0)); |
850 } | 850 } |
851 catch (FunctionEvaluationException aode) { | 851 catch (FunctionEvaluationException aode) { |
852 // should not happen | 852 // should not happen |
853 logger.error("spline interpolation failed", aode); | 853 log.error("spline interpolation failed", aode); |
854 // entry.getValue().add(Double.NaN, entry.getValue().getQ(0)); | 854 // entry.getValue().add(Double.NaN, entry.getValue().getQ(0)); |
855 } | 855 } |
856 }*/ | 856 }*/ |
857 | 857 |
858 /* Variant: Add all official fixings | 858 /* Variant: Add all official fixings |
893 } | 893 } |
894 | 894 |
895 | 895 |
896 @Override | 896 @Override |
897 protected void writePDF(OutputStream out) { | 897 protected void writePDF(OutputStream out) { |
898 logger.debug("write PDF"); | 898 log.debug("write PDF"); |
899 WKmsJRDataSource source = createJRData(); | 899 WKmsJRDataSource source = createJRData(); |
900 | 900 |
901 String jasperFile = Resources.getMsg( | 901 String jasperFile = Resources.getMsg( |
902 context.getMeta(), | 902 context.getMeta(), |
903 JASPER_FILE, | 903 JASPER_FILE, |
913 parameters, | 913 parameters, |
914 source); | 914 source); |
915 JasperExportManager.exportReportToPdfStream(print, out); | 915 JasperExportManager.exportReportToPdfStream(print, out); |
916 } | 916 } |
917 catch(JRException je) { | 917 catch(JRException je) { |
918 logger.warn("Error generating PDF Report!", je); | 918 log.warn("Error generating PDF Report!", je); |
919 } | 919 } |
920 } | 920 } |
921 | 921 |
922 protected WKmsJRDataSource createJRData() { | 922 protected WKmsJRDataSource createJRData() { |
923 WKmsJRDataSource source = new WKmsJRDataSource(); | 923 WKmsJRDataSource source = new WKmsJRDataSource(); |
991 WQKms wqkms, | 991 WQKms wqkms, |
992 boolean atGauge, | 992 boolean atGauge, |
993 boolean isQ, | 993 boolean isQ, |
994 WKmsJRDataSource source) | 994 WKmsJRDataSource source) |
995 { | 995 { |
996 logger.debug("WaterlevelExporter.addWKmsData"); | 996 log.debug("WaterlevelExporter.addWKmsData"); |
997 | 997 |
998 // Skip constant data. | 998 // Skip constant data. |
999 if (wqkms instanceof ConstantWQKms) { | 999 if (wqkms instanceof ConstantWQKms) { |
1000 return; | 1000 return; |
1001 } | 1001 } |
1050 } | 1050 } |
1051 } | 1051 } |
1052 | 1052 |
1053 long stopTime = System.currentTimeMillis(); | 1053 long stopTime = System.currentTimeMillis(); |
1054 | 1054 |
1055 if (logger.isDebugEnabled()) { | 1055 if (log.isDebugEnabled()) { |
1056 logger.debug("Writing PDF data took " + | 1056 log.debug("Writing PDF data took " + |
1057 (float)(stopTime-startTime)/1000f + " secs."); | 1057 (float)(stopTime-startTime)/1000f + " secs."); |
1058 } | 1058 } |
1059 } | 1059 } |
1060 } | 1060 } |
1061 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 1061 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |