annotate artifacts/src/main/java/org/dive4elements/river/exports/minfo/BedDifferenceExporter.java @ 8643:999b9ab16738

(issue1754) Handle inverted presentation in BedDifference exporter This als removes dead (would have triggered an exception in pdf export) code to handle beddiff results which are not "BedDiffYearResults"
author Andre Heinecke <andre.heinecke@intevation.de>
date Fri, 27 Mar 2015 18:59:27 +0100
parents ce325339e9ba
children 5e38e2924c07
rev   line source
6667
84349d440987 BedDifferenceExporter: Added licence header.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6248
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
84349d440987 BedDifferenceExporter: Added licence header.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6248
diff changeset
2 * Software engineering by Intevation GmbH
84349d440987 BedDifferenceExporter: Added licence header.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6248
diff changeset
3 *
84349d440987 BedDifferenceExporter: Added licence header.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6248
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
84349d440987 BedDifferenceExporter: Added licence header.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6248
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
84349d440987 BedDifferenceExporter: Added licence header.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6248
diff changeset
6 * documentation coming with Dive4Elements River for details.
84349d440987 BedDifferenceExporter: Added licence header.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6248
diff changeset
7 */
84349d440987 BedDifferenceExporter: Added licence header.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6248
diff changeset
8
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
9 package org.dive4elements.river.exports.minfo;
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
10
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
11 import java.io.IOException;
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
12 import java.io.OutputStream;
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
13 import java.text.NumberFormat;
7913
76b5add4f268 Added diff pair column to CSV export of bed height differences. TODO: same for PDF, adjust client.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7908
diff changeset
14 import java.util.ArrayList;
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
15 import java.util.List;
6242
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
16 import java.util.Map;
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
17 import java.util.HashMap;
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
18 import java.util.Locale;
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
19 import java.util.Date;
8643
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
20 import java.util.Collections;
6242
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
21 import java.text.DateFormat;
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
22
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
23 import org.apache.log4j.Logger;
6242
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
24 import org.apache.commons.lang.StringUtils;
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
25
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
26 import net.sf.jasperreports.engine.JasperExportManager;
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
27 import net.sf.jasperreports.engine.JasperFillManager;
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
28 import net.sf.jasperreports.engine.JasperPrint;
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
29 import net.sf.jasperreports.engine.JRException;
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
30
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
31 import org.dive4elements.artifacts.CallMeta;
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
32 import org.dive4elements.river.artifacts.D4EArtifact;
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
33 import org.dive4elements.river.artifacts.access.BedDifferencesAccess;
7915
931dffefc3dd flys/issue1628: Adjusted the PDF export.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7914
diff changeset
34 import org.dive4elements.river.artifacts.access.RiverAccess;
8584
ce325339e9ba (issue1754) Add range to W / Bed difference export.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8439
diff changeset
35 import org.dive4elements.river.artifacts.access.RangeAccess;
6242
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
36 import org.dive4elements.artifacts.common.utils.Config;
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
37 import org.dive4elements.river.artifacts.resources.Resources;
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
38 import org.dive4elements.river.artifacts.model.CalculationResult;
7831
b4f806999173 Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents: 7506
diff changeset
39 import org.dive4elements.river.artifacts.model.minfo.BedDiffYearResult;
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
40 import org.dive4elements.river.artifacts.model.minfo.BedDifferencesResult;
6242
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
41 import org.dive4elements.river.artifacts.model.minfo.BedDifferenceJRDataSource;
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
42 import org.dive4elements.river.exports.AbstractExporter;
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
43 import org.dive4elements.river.utils.Formatter;
6242
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
44
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
45 import au.com.bytecode.opencsv.CSVWriter;
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
46
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
47 public class BedDifferenceExporter
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
48 extends AbstractExporter
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
49 {
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
50
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7979
diff changeset
51 /** Private log. */
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7979
diff changeset
52 private static Logger log =
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
53 Logger.getLogger(BedDifferenceExporter.class);
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
54
6242
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
55 private static final String CSV_HEADER_KM =
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
56 "export.minfo.beddifference.km";
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
57
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
58 private static final String CSV_HEADER_DIFF =
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
59 "export.minfo.beddifference.diff";
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
60
7913
76b5add4f268 Added diff pair column to CSV export of bed height differences. TODO: same for PDF, adjust client.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7908
diff changeset
61 private static final String CSV_HEADER_DIFF_PAIR =
76b5add4f268 Added diff pair column to CSV export of bed height differences. TODO: same for PDF, adjust client.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7908
diff changeset
62 "export.minfo.beddifference.diff.pair";
76b5add4f268 Added diff pair column to CSV export of bed height differences. TODO: same for PDF, adjust client.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7908
diff changeset
63
8422
96bf5135cd0e Bedheight differences exports sounding width and data gap for minuend and subtrahend.
Raimund Renkert <rrenkert@intevation.de>
parents: 8420
diff changeset
64 private static final String CSV_HEADER_SOUNDING1 =
96bf5135cd0e Bedheight differences exports sounding width and data gap for minuend and subtrahend.
Raimund Renkert <rrenkert@intevation.de>
parents: 8420
diff changeset
65 "export.minfo.beddifference.sounding1";
96bf5135cd0e Bedheight differences exports sounding width and data gap for minuend and subtrahend.
Raimund Renkert <rrenkert@intevation.de>
parents: 8420
diff changeset
66
96bf5135cd0e Bedheight differences exports sounding width and data gap for minuend and subtrahend.
Raimund Renkert <rrenkert@intevation.de>
parents: 8420
diff changeset
67 private static final String CSV_HEADER_SOUNDING2 =
96bf5135cd0e Bedheight differences exports sounding width and data gap for minuend and subtrahend.
Raimund Renkert <rrenkert@intevation.de>
parents: 8420
diff changeset
68 "export.minfo.beddifference.sounding2";
96bf5135cd0e Bedheight differences exports sounding width and data gap for minuend and subtrahend.
Raimund Renkert <rrenkert@intevation.de>
parents: 8420
diff changeset
69
96bf5135cd0e Bedheight differences exports sounding width and data gap for minuend and subtrahend.
Raimund Renkert <rrenkert@intevation.de>
parents: 8420
diff changeset
70 private static final String CSV_HEADER_GAP1 =
96bf5135cd0e Bedheight differences exports sounding width and data gap for minuend and subtrahend.
Raimund Renkert <rrenkert@intevation.de>
parents: 8420
diff changeset
71 "export.minfo.beddifference.gap1";
96bf5135cd0e Bedheight differences exports sounding width and data gap for minuend and subtrahend.
Raimund Renkert <rrenkert@intevation.de>
parents: 8420
diff changeset
72
96bf5135cd0e Bedheight differences exports sounding width and data gap for minuend and subtrahend.
Raimund Renkert <rrenkert@intevation.de>
parents: 8420
diff changeset
73 private static final String CSV_HEADER_GAP2 =
96bf5135cd0e Bedheight differences exports sounding width and data gap for minuend and subtrahend.
Raimund Renkert <rrenkert@intevation.de>
parents: 8420
diff changeset
74 "export.minfo.beddifference.gap2";
96bf5135cd0e Bedheight differences exports sounding width and data gap for minuend and subtrahend.
Raimund Renkert <rrenkert@intevation.de>
parents: 8420
diff changeset
75
6242
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
76 public static final String JASPER_FILE =
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
77 "export.minfo.beddifference.pdf.file";
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
78
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
79 public static final String PDF_TITLE=
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
80 "export.minfo.beddifference.pdf.title";
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
81
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
82 public static final String PDF_HEADER_MODE=
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
83 "export.minfo.beddifference.pdf.mode";
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
84
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
85 private BedDifferencesResult[] results;
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
86
7077
0a337f0005c2 Extended init() of OutGenerator to take name of the out to serve.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6681
diff changeset
87 public BedDifferenceExporter() {
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
88 results = new BedDifferencesResult[0];
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
89 }
6242
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
90
8643
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
91 protected List<String[]> data2StringArrays() {
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
92 NumberFormat kmf = Formatter.getCalculationKm(context.getMeta());
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
93 NumberFormat mf = Formatter.getMeterFormat(context);
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
94 D4EArtifact arti = (D4EArtifact) master;
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
95 RangeAccess access = new RangeAccess(arti);
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
96
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
97 List<String[]> retval = new ArrayList<String[]>();
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
98
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
99 for (BedDifferencesResult result : results) {
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
100 BedDiffYearResult yResult = (BedDiffYearResult) result;
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
101 String desc = result.getDiffDescription();
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
102 double[][] kms = yResult.getDifferencesData();
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
103 double[][] sounding1 = yResult.getSoundingWidth1Data();
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
104 double[][] sounding2 = yResult.getSoundingWidth2Data();
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
105 double[][] gap1 = yResult.getDataGap1Data();
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
106 double[][] gap2 = yResult.getDataGap2Data();
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
107
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
108 for (int j = 0; j < kms[0].length; j++) {
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
109 String sound1 = !Double.isNaN(sounding1[1][j])
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
110 ? mf.format(sounding1[1][j])
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
111 : "";
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
112 String sound2 = !Double.isNaN(sounding2[1][j])
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
113 ? mf.format(sounding2[1][j])
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
114 : "";
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
115 String g1 = !Double.isNaN(gap1[1][j])
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
116 ? mf.format(gap1[1][j])
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
117 : "";
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
118 String g2 = !Double.isNaN(gap2[1][j])
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
119 ? mf.format(gap2[1][j])
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
120 : "";
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
121 retval.add(new String[] {
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
122 kmf.format(kms[0][j]),
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
123 desc,
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
124 mf.format(kms[1][j]),
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
125 sound1,
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
126 sound2,
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
127 g1,
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
128 g2
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
129 });
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
130 }
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
131 }
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
132 if (access.getFrom() > access.getTo()) {
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
133 Collections.reverse(retval);
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
134 }
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
135 return retval;
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
136 }
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
137 @Override
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
138 protected void writeCSVData(CSVWriter writer) throws IOException {
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
139 writeCSVHeader(writer);
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
140
8643
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
141 writer.writeAll(data2StringArrays());
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
142 }
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
143
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
144 @Override
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
145 protected void addData(Object data) {
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
146 if (!(data instanceof CalculationResult)) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7979
diff changeset
147 log.warn("Invalid data type.");
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
148 return;
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
149 }
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
150 Object[] d = (Object[])((CalculationResult)data).getData();
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
151
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
152 if (!(d instanceof BedDifferencesResult[])) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7979
diff changeset
153 log.warn("Invalid result object.");
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
154 return;
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
155 }
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
156 results = (BedDifferencesResult[])d;
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
157 }
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
158
6242
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
159 protected void addMetaData(BedDifferenceJRDataSource source) {
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
160 CallMeta meta = context.getMeta();
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
161
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
162 D4EArtifact arti = (D4EArtifact) master;
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
163
7915
931dffefc3dd flys/issue1628: Adjusted the PDF export.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7914
diff changeset
164 source.addMetaData ("river", new RiverAccess(arti).getRiverName());
6242
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
165
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
166 Locale locale = Resources.getLocale(meta);
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
167 DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
8584
ce325339e9ba (issue1754) Add range to W / Bed difference export.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8439
diff changeset
168 NumberFormat kmf = Formatter.getWaterlevelKM(context);
ce325339e9ba (issue1754) Add range to W / Bed difference export.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8439
diff changeset
169
ce325339e9ba (issue1754) Add range to W / Bed difference export.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8439
diff changeset
170 RangeAccess rangeAccess = new RangeAccess(arti);
ce325339e9ba (issue1754) Add range to W / Bed difference export.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8439
diff changeset
171 double[] kms = rangeAccess.getKmRange();
ce325339e9ba (issue1754) Add range to W / Bed difference export.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8439
diff changeset
172 source.addMetaData("range",
ce325339e9ba (issue1754) Add range to W / Bed difference export.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8439
diff changeset
173 kmf.format(kms[0]) + " - " + kmf.format(kms[kms.length-1]));
6242
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
174
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
175 source.addMetaData("date", df.format(new Date()));
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
176
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
177 source.addMetaData("calculation", Resources.getMsg(
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
178 locale,
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
179 PDF_HEADER_MODE,
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
180 "Bedheight difference"));
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
181
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
182 BedDifferencesAccess access = new BedDifferencesAccess(arti);
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
183
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
184 source.addMetaData("differences", StringUtils.join(
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
185 access.getDifferenceArtifactNamePairs(), "\n"));
7908
df9ac27d6b74 Fixed flys/issue1628. Made "unit" a configurable field in PDF export.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7906
diff changeset
186
8438
9ab8b1146ac4 Adapt PDF-export to new columns in bed differences result.
"Tom Gottfried <tom@intevation.de>"
parents: 8433
diff changeset
187 source.addMetaData("kmheader", msg(CSV_HEADER_KM));
9ab8b1146ac4 Adapt PDF-export to new columns in bed differences result.
"Tom Gottfried <tom@intevation.de>"
parents: 8433
diff changeset
188 source.addMetaData("diffpairheader", msg(CSV_HEADER_DIFF_PAIR));
9ab8b1146ac4 Adapt PDF-export to new columns in bed differences result.
"Tom Gottfried <tom@intevation.de>"
parents: 8433
diff changeset
189 source.addMetaData("diffheader", msg(CSV_HEADER_DIFF));
9ab8b1146ac4 Adapt PDF-export to new columns in bed differences result.
"Tom Gottfried <tom@intevation.de>"
parents: 8433
diff changeset
190 source.addMetaData("sounding1header", msg(CSV_HEADER_SOUNDING1));
9ab8b1146ac4 Adapt PDF-export to new columns in bed differences result.
"Tom Gottfried <tom@intevation.de>"
parents: 8433
diff changeset
191 source.addMetaData("sounding2header", msg(CSV_HEADER_SOUNDING2));
9ab8b1146ac4 Adapt PDF-export to new columns in bed differences result.
"Tom Gottfried <tom@intevation.de>"
parents: 8433
diff changeset
192 source.addMetaData("gap1header", msg(CSV_HEADER_GAP1));
9ab8b1146ac4 Adapt PDF-export to new columns in bed differences result.
"Tom Gottfried <tom@intevation.de>"
parents: 8433
diff changeset
193 source.addMetaData("gap2header", msg(CSV_HEADER_GAP2));
6242
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
194 }
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
195
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
196
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
197 protected void writeCSVHeader(CSVWriter writer) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7979
diff changeset
198 log.debug("writeCSVHeader()");
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
199
7913
76b5add4f268 Added diff pair column to CSV export of bed height differences. TODO: same for PDF, adjust client.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7908
diff changeset
200 List<String> header = new ArrayList<String>();
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
201 if (results != null) {
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
202 header.add(msg(CSV_HEADER_KM, "km"));
7914
db1a2b14c32d Change column order in bed differences export.
Tom Gottfried <tom@intevation.de>
parents: 7913
diff changeset
203 header.add(msg(CSV_HEADER_DIFF_PAIR, "difference pair"));
7906
57cb1b7ec547 issue1628: correct unit and at least partly complete column name for CSV.
"Tom Gottfried <tom@intevation.de>"
parents: 7831
diff changeset
204 header.add(msg(CSV_HEADER_DIFF, "cm"));
7831
b4f806999173 Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents: 7506
diff changeset
205 if (results.length > 0 &&
b4f806999173 Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents: 7506
diff changeset
206 results[0] instanceof BedDiffYearResult) {
8422
96bf5135cd0e Bedheight differences exports sounding width and data gap for minuend and subtrahend.
Raimund Renkert <rrenkert@intevation.de>
parents: 8420
diff changeset
207 header.add(msg(CSV_HEADER_SOUNDING1, "soundung width minuend [m]"));
96bf5135cd0e Bedheight differences exports sounding width and data gap for minuend and subtrahend.
Raimund Renkert <rrenkert@intevation.de>
parents: 8420
diff changeset
208 header.add(msg(CSV_HEADER_SOUNDING2, "sounding width subtrahend [m]"));
96bf5135cd0e Bedheight differences exports sounding width and data gap for minuend and subtrahend.
Raimund Renkert <rrenkert@intevation.de>
parents: 8420
diff changeset
209 header.add(msg(CSV_HEADER_GAP1, "data gap minuend"));
96bf5135cd0e Bedheight differences exports sounding width and data gap for minuend and subtrahend.
Raimund Renkert <rrenkert@intevation.de>
parents: 8420
diff changeset
210 header.add(msg(CSV_HEADER_GAP2, "data gap subtrahend"));
7831
b4f806999173 Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents: 7506
diff changeset
211 }
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
212 }
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
213 writer.writeNext(header.toArray(new String[header.size()]));
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
214 }
6242
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
215
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
216 protected BedDifferenceJRDataSource createJRData() {
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
217 BedDifferenceJRDataSource source = new BedDifferenceJRDataSource();
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
218
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
219 addMetaData(source);
8643
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
220 for (String[] str: data2StringArrays()) {
999b9ab16738 (issue1754) Handle inverted presentation in BedDifference exporter
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8584
diff changeset
221 source.addData(str);
6242
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
222 }
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
223 return source;
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
224 }
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
225
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
226 @Override
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
227 protected void writePDF(OutputStream out) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7979
diff changeset
228 log.debug("write PDF");
6242
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
229 BedDifferenceJRDataSource source = createJRData();
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
230
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
231 String jasperFile = Resources.getMsg(
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
232 context.getMeta(),
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
233 JASPER_FILE,
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
234 "/jasper/beddifference_en.jasper");
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
235 String confPath = Config.getConfigDirectory().toString();
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
236
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
237
7915
931dffefc3dd flys/issue1628: Adjusted the PDF export.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7914
diff changeset
238 Map<String, Object> parameters = new HashMap<String, Object>();
6242
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
239 parameters.put("ReportTitle", Resources.getMsg(
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
240 context.getMeta(), PDF_TITLE, "Exported Data"));
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
241 try {
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
242 JasperPrint print = JasperFillManager.fillReport(
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
243 confPath + jasperFile,
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
244 parameters,
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
245 source);
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
246 JasperExportManager.exportReportToPdfStream(print, out);
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
247 }
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
248 catch(JRException je) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7979
diff changeset
249 log.warn("Error generating PDF Report!", je);
6242
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
250 }
34f393434913 Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents: 6217
diff changeset
251 }
6217
e213b538f78c Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
252 }
6681
e316a9c626e0 Use foreach instead of for-loop.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6667
diff changeset
253 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org