Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelExporter.java @ 9457:65f28328c9a3
ausgelagerte Wasserspiegellage AWSPL neue Spalte
author | gernotbelger |
---|---|
date | Tue, 28 Aug 2018 14:02:23 +0200 |
parents | 86d2cbfe7f7f |
children | f06e3766997f |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelExporter.java Tue Aug 28 13:50:05 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/exports/WaterlevelExporter.java Tue Aug 28 14:02:23 2018 +0200 @@ -64,10 +64,10 @@ /** The log used in this exporter. */ private static Logger log = Logger.getLogger(WaterlevelExporter.class); - public static final String FACET_WST = "wst"; + private static final String FACET_WST = "wst"; /* This should be the same as in the StaticWQKmsArtifact */ - public static final String STATICWQKMSNAME = "staticwqkms"; + private static final String STATICWQKMSNAME = "staticwqkms"; public static final String CSV_KM_HEADER = "export.waterlevel.csv.header.km"; @@ -91,25 +91,25 @@ public static final String CSV_GAUGE_HEADER = "export.waterlevel.csv.header.gauge"; - public static final String CSV_META_RESULT = "export.waterlevel.csv.meta.result"; - - public static final String CSV_META_CREATION = "export.waterlevel.csv.meta.creation"; - - public static final String CSV_META_CALCULATIONBASE = "export.waterlevel.csv.meta.calculationbase"; + private static final String CSV_META_RESULT = "export.waterlevel.csv.meta.result"; - public static final String CSV_META_RIVER = "export.waterlevel.csv.meta.river"; - - public static final String CSV_META_RANGE = "export.waterlevel.csv.meta.range"; + private static final String CSV_META_CREATION = "export.waterlevel.csv.meta.creation"; - public static final String CSV_META_GAUGE = "export.waterlevel.csv.meta.gauge"; + private static final String CSV_META_CALCULATIONBASE = "export.waterlevel.csv.meta.calculationbase"; - public static final String CSV_META_Q = "common.export.waterlevel.csv.meta.q"; + private static final String CSV_META_RIVER = "export.waterlevel.csv.meta.river"; - public static final String CSV_META_W = "export.waterlevel.csv.meta.w"; + private static final String CSV_META_RANGE = "export.waterlevel.csv.meta.range"; + + private static final String CSV_META_GAUGE = "export.waterlevel.csv.meta.gauge"; + + private static final String CSV_META_Q = "common.export.waterlevel.csv.meta.q"; + + private static final String CSV_META_W = "export.waterlevel.csv.meta.w"; public static final String CSV_NOT_IN_GAUGE_RANGE = "export.waterlevel.csv.not.in.gauge.range"; - public static final Pattern NUMBERS_PATTERN = Pattern.compile("\\D*(\\d++.\\d*)\\D*"); + private static final Pattern NUMBERS_PATTERN = Pattern.compile("\\D*(\\d++.\\d*)\\D*"); public static final String DEFAULT_CSV_KM_HEADER = "Fluss-Km"; public static final String DEFAULT_CSV_W_HEADER = "W [NN + m]"; @@ -128,14 +128,14 @@ public static final String DEFAULT_CSV_GAUGE_HEADER = "Bezugspegel"; public static final String DEFAULT_CSV_NOT_IN_GAUGE_RANGE = "außerhalb des gewählten Bezugspegels"; - public static final String PDF_HEADER_MODE = "export.waterlevel.pdf.mode"; - public static final String JASPER_FILE = "export.waterlevel.pdf.file"; + protected static final String PDF_HEADER_MODE = "export.waterlevel.pdf.mode"; + private static final String JASPER_FILE = "export.waterlevel.pdf.file"; /** The storage that contains all WQKms objects that are calculated. */ - protected List<WQKms[]> data; + public List<WQKms[]> data; /** The storage that contains official fixings if available. */ - protected List<WQKms> officalFixings; + public List<WQKms> officalFixings; public WaterlevelExporter() { this.data = new ArrayList<>(); @@ -216,7 +216,7 @@ * @param wqkms * A WQKms object that should be prepared. */ - protected String getColumnTitle(final WINFOArtifact winfo, final WQKms wqkms) { + public String getColumnTitle(final WINFOArtifact winfo, final WQKms wqkms) { log.debug("WaterlevelExporter.getColumnTitle"); final String name = wqkms.getName(); @@ -257,7 +257,7 @@ * @deprecated Use {@link WaterlevelDescriptionBuilder} instead. */ @Deprecated - protected String getCSVRowTitle(final WINFOArtifact winfo, final WQKms wqkms) { + public String getCSVRowTitle(final WINFOArtifact winfo, final WQKms wqkms) { log.debug("WaterlevelExporter.prepareNamedValue"); final String name = wqkms.getName(); @@ -291,7 +291,7 @@ * @deprecated Use {@link WaterlevelDescriptionBuilder} instead. */ @Deprecated - protected String localizeWQKms(final WINFOArtifact winfo, final WQKms wqkms) { + public String localizeWQKms(final WINFOArtifact winfo, final WQKms wqkms) { final WQ_MODE wqmode = RiverUtils.getWQMode(winfo); final Double rawValue = wqkms.getRawValue(); @@ -309,7 +309,7 @@ } @Override - protected void writeCSVData(final CSVWriter writer) { + public void writeCSVData(final CSVWriter writer) { log.info("WaterlevelExporter.writeData"); final WQ_MODE mode = RiverUtils.getWQMode((D4EArtifact) this.master); @@ -371,7 +371,7 @@ * * @return A new WQKms with the relevant data sorted by direction */ - private WQKms filterWQKms(final WQKms wqkms, final Double first, final Double last) { + public final WQKms filterWQKms(final WQKms wqkms, final Double first, final Double last) { if (first.isNaN() || last.isNaN()) { log.warn("Filtering official fixing without valid first/last."); return wqkms; @@ -400,7 +400,7 @@ return filtered; } - protected void writeCSVMeta(final CSVWriter writer) { + public void writeCSVMeta(final CSVWriter writer) { log.info("WaterlevelExporter.writeCSVMeta"); // TODO use Access instead of RiverUtils @@ -511,7 +511,7 @@ return null; } - private void writeRow4(final CSVWriter writer, final double wqkm[], final D4EArtifact flys) { + protected void writeRow4(final CSVWriter writer, final double wqkm[], final D4EArtifact flys, final Gauge gauge) { final NumberFormat kmf = getKmFormatter(); final NumberFormat wf = getWFormatter(); final NumberFormat qf = getQFormatter(); @@ -520,20 +520,20 @@ } /** Write an csv-row at gauge location. */ - private void writeRow6(final CSVWriter writer, final double wqkm[], final String wOrQDesc, final D4EArtifact flys, final String gaugeName) { + protected void writeRow6(final CSVWriter writer, final double wqkm[], final String wOrQDesc, final D4EArtifact flys, final Gauge gauge) { final NumberFormat kmf = getKmFormatter(); final NumberFormat wf = getWFormatter(); final NumberFormat qf = getQFormatter(); writer.writeNext(new String[] { kmf.format(wqkm[2]), wf.format(wqkm[0]), qf.format(RiverUtils.roundQ(wqkm[1])), wOrQDesc, - RiverUtils.getLocationDescription(flys, wqkm[2]), gaugeName }); + RiverUtils.getLocationDescription(flys, wqkm[2]), gauge.getName() }); } /** * @deprecated Use {@link WaterlevelDescriptionBuilder} instead. */ @Deprecated - private String getDesc(final WQKms wqkms, final boolean isQ) { + public final String getDesc(final WQKms wqkms, final boolean isQ) { final D4EArtifact flys = (D4EArtifact) this.master; String colDesc = ""; @@ -644,12 +644,12 @@ // TODO issue1114: Take correct gauge gaugeN = km >= a && km <= b ? gaugeName : notinrange; } - writeRow6(writer, result, desc, flys, gaugeN); + writeRow6(writer, result, desc, flys, gauge); } } else { // Not at gauge. for (int i = 0; i < size; ++i) { result = wqkms.get(i, result); - writeRow4(writer, result, flys); + writeRow4(writer, result, flys, gauge); } } @@ -663,7 +663,7 @@ /** * Generates the output in WST format. */ - protected void generateWST() throws IOException { + public void generateWST() throws IOException { log.info("WaterlevelExporter.generateWST"); final int cols = this.data.get(0).length + this.officalFixings.size(); @@ -674,7 +674,7 @@ writer.write(this.out); } - protected void writeWSTData(final WstWriter writer) { + public void writeWSTData(final WstWriter writer) { log.debug("WaterlevelExporter.writeWSTData"); double[] result = new double[4]; @@ -755,27 +755,31 @@ } } - @Override - protected void writePDF(final OutputStream out) { - log.debug("write PDF"); - final WKmsJRDataSource source = createJRData(); + public void doWritePdf(final WKmsJRDataSource source, final String jasperFile) { - final String jasperFile = // "/jasper/waterlevel_en.jasper"; - Resources.getMsg(this.context.getMeta(), JASPER_FILE, "/jasper/waterlevel_en.jasper"); final String confPath = Config.getConfigDirectory().toString(); final Map parameters = new HashMap(); parameters.put("ReportTitle", "Exported Data"); try { final JasperPrint print = JasperFillManager.fillReport(confPath + jasperFile, parameters, source); - JasperExportManager.exportReportToPdfStream(print, out); + JasperExportManager.exportReportToPdfStream(print, this.out); } catch (final JRException je) { log.warn("Error generating PDF Report!", je); } } - protected WKmsJRDataSource createJRData() { + @Override + protected void writePDF(final OutputStream out) { + log.debug("write PDF"); + final WKmsJRDataSource source = createJRData(); + final String jasperFile = Resources.getMsg(this.context.getMeta(), JASPER_FILE, "/jasper/waterlevel_en.jasper"); + doWritePdf(source, jasperFile); + + } + + private WKmsJRDataSource createJRData() { final WKmsJRDataSource source = new WKmsJRDataSource(); final WQ_MODE mode = RiverUtils.getWQMode((D4EArtifact) this.master); @@ -819,7 +823,7 @@ return source; } - protected void addMetaData(final WKmsJRDataSource source) { + public void addMetaData(final WKmsJRDataSource source) { final CallMeta meta = this.context.getMeta(); final D4EArtifact flys = (D4EArtifact) this.master; @@ -836,6 +840,10 @@ final double[] kms = rangeAccess.getKmRange(); source.addMetaData("range", kmf.format(kms[0]) + " - " + kmf.format(kms[kms.length - 1])); + source.addMetaData("w_at_gauge_header", Resources.getMsg(meta, "fix.export.csv.w_at_gauge")); // dürfte kein Problem sein für Vorlagen, die kein + // "w_at_gauge" + // haben + source.addMetaData("gauge", RiverUtils.getGaugename(flys)); source.addMetaData("calculation", Resources.getMsg(locale, PDF_HEADER_MODE, "Waterlevel")); @@ -881,6 +889,7 @@ source.addData(new String[] { kmf.format(result[2]), wf.format(result[0]), qf.format(RiverUtils.roundQ(result[1])), desc, RiverUtils.getLocationDescription(flys, result[2]), result[2] >= a && result[2] <= b ? gaugeName : notinrange }); } + } final long stopTime = System.currentTimeMillis(); @@ -889,5 +898,6 @@ log.debug("Writing PDF data took " + (stopTime - startTime) / 1000f + " secs."); } } + } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :