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 :

http://dive4elements.wald.intevation.org