Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/minfo/BedDifferenceExporter.java @ 7913:76b5add4f268
Added diff pair column to CSV export of bed height differences. TODO: same for PDF, adjust client.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Wed, 04 Jun 2014 12:53:28 +0200 |
parents | df9ac27d6b74 |
children | db1a2b14c32d |
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; |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
20 import java.text.DateFormat; |
6217
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
21 |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
22 import org.apache.log4j.Logger; |
6242
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
23 import org.apache.commons.lang.StringUtils; |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
24 |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
25 import net.sf.jasperreports.engine.JasperExportManager; |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
26 import net.sf.jasperreports.engine.JasperFillManager; |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
27 import net.sf.jasperreports.engine.JasperPrint; |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
28 import net.sf.jasperreports.engine.JRException; |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
29 |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
30 import org.dive4elements.artifacts.CallMeta; |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
31 import org.dive4elements.river.artifacts.D4EArtifact; |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
32 import org.dive4elements.river.artifacts.access.BedDifferencesAccess; |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
33 import org.dive4elements.artifacts.common.utils.Config; |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
34 import org.dive4elements.river.artifacts.resources.Resources; |
6217
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
35 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
|
36 import org.dive4elements.river.artifacts.model.minfo.BedDiffYearResult; |
6217
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
37 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
|
38 import org.dive4elements.river.artifacts.model.minfo.BedDifferenceJRDataSource; |
6217
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
39 import org.dive4elements.river.exports.AbstractExporter; |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
40 import org.dive4elements.river.utils.Formatter; |
6242
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
41 import org.dive4elements.river.utils.RiverUtils; |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
42 |
6217
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
43 import au.com.bytecode.opencsv.CSVWriter; |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
44 |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
45 public class BedDifferenceExporter |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
46 extends AbstractExporter |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
47 { |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
48 |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
49 /** Private logger. */ |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
50 private static Logger logger = |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
51 Logger.getLogger(BedDifferenceExporter.class); |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
52 |
6242
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
53 private static final String CSV_HEADER_KM = |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
54 "export.minfo.beddifference.km"; |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
55 |
6217
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
56 private static final String CSV_HEADER_DIFF = |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
57 "export.minfo.beddifference.diff"; |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
58 |
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
|
59 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
|
60 "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
|
61 |
7831
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
62 private static final String CSV_HEADER_MORPH1 = |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
63 "export.minfo.beddifference.morph1"; |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
64 |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
65 private static final String CSV_HEADER_MORPH2 = |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
66 "export.minfo.beddifference.morph2"; |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
67 |
6242
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
68 public static final String JASPER_FILE = |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
69 "export.minfo.beddifference.pdf.file"; |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
70 |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
71 public static final String PDF_TITLE= |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
72 "export.minfo.beddifference.pdf.title"; |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
73 |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
74 public static final String PDF_HEADER_MODE= |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
75 "export.minfo.beddifference.pdf.mode"; |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
76 |
6217
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
77 private BedDifferencesResult[] results; |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
78 |
7077
0a337f0005c2
Extended init() of OutGenerator to take name of the out to serve.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6681
diff
changeset
|
79 public BedDifferenceExporter() { |
6217
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
80 results = new BedDifferencesResult[0]; |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
81 } |
6242
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
82 |
6217
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
83 @Override |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
84 protected void writeCSVData(CSVWriter writer) throws IOException { |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
85 writeCSVHeader(writer); |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
86 |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
87 NumberFormat kmf = Formatter.getCalculationKm(context.getMeta()); |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
88 NumberFormat mf = Formatter.getMeterFormat(context); |
6681
e316a9c626e0
Use foreach instead of for-loop.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6667
diff
changeset
|
89 for (BedDifferencesResult result : results) { |
7831
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
90 if (result instanceof BedDiffYearResult) { |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
91 BedDiffYearResult yResult = (BedDiffYearResult) result; |
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
|
92 String desc = result.getDiffDescription(); |
7831
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
93 double[][] kms = yResult.getDifferencesData(); |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
94 double[][] morph1 = yResult.getMorphWidth1Data(); |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
95 double[][] morph2 = yResult.getMorphWidth2Data(); |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
96 for (int j = 0; j < kms[0].length; j++) { |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
97 writer.writeNext(new String[] { |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
98 kmf.format(kms[0][j]), |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
99 mf.format(kms[1][j]), |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
100 mf.format(morph1[1][j]), |
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
|
101 mf.format(morph2[1][j]), |
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
|
102 desc }); |
7831
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
103 } |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
104 } |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
105 else { |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
106 double[][] kms = result.getDifferencesData(); |
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
|
107 String desc = result.getDiffDescription(); |
7831
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
108 for (int j = 0; j < kms[0].length; j++) { |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
109 writer.writeNext(new String[] { |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
110 kmf.format(kms[0][j]), |
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
|
111 mf.format(kms[1][j]), |
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
|
112 desc }); |
7831
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
113 } |
6217
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
114 } |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
115 } |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
116 } |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
117 |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
118 @Override |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
119 protected void addData(Object data) { |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
120 if (!(data instanceof CalculationResult)) { |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
121 logger.warn("Invalid data type."); |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
122 return; |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
123 } |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
124 Object[] d = (Object[])((CalculationResult)data).getData(); |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
125 |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
126 if (!(d instanceof BedDifferencesResult[])) { |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
127 logger.warn("Invalid result object."); |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
128 return; |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
129 } |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
130 results = (BedDifferencesResult[])d; |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
131 } |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
132 |
6242
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
133 protected void addMetaData(BedDifferenceJRDataSource source) { |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
134 CallMeta meta = context.getMeta(); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
135 |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
136 D4EArtifact arti = (D4EArtifact) master; |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
137 |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
138 source.addMetaData ("river", RiverUtils.getRivername(arti)); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
139 |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
140 Locale locale = Resources.getLocale(meta); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
141 DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
142 |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
143 source.addMetaData("date", df.format(new Date())); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
144 |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
145 source.addMetaData("calculation", Resources.getMsg( |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
146 locale, |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
147 PDF_HEADER_MODE, |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
148 "Bedheight difference")); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
149 |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
150 // Now the dynamic parts |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
151 |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
152 BedDifferencesAccess access = new BedDifferencesAccess(arti); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
153 source.addMetaData("ye_mode", Resources.getMsg(locale, |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
154 "state.minfo." + access.getYearEpoch(), |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
155 access.getYearEpoch())); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
156 |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
157 source.addMetaData("differences", StringUtils.join( |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
158 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
|
159 |
df9ac27d6b74
Fixed flys/issue1628. Made "unit" a configurable field in PDF export.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7906
diff
changeset
|
160 source.addMetaData("unit", msg(CSV_HEADER_DIFF, "cm")); |
6242
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 |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
163 |
6217
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
164 protected void writeCSVHeader(CSVWriter writer) { |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
165 logger.debug("writeCSVHeader()"); |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
166 |
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
|
167 List<String> header = new ArrayList<String>(); |
6217
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
168 if (results != null) { |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
169 header.add(msg(CSV_HEADER_KM, "km")); |
7906
57cb1b7ec547
issue1628: correct unit and at least partly complete column name for CSV.
"Tom Gottfried <tom@intevation.de>"
parents:
7831
diff
changeset
|
170 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
|
171 if (results.length > 0 && |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
172 results[0] instanceof BedDiffYearResult) { |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
173 header.add(msg(CSV_HEADER_MORPH1, "morph width minuend [m]")); |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
174 header.add(msg(CSV_HEADER_MORPH2, "morph width subtrahend [m]")); |
b4f806999173
Added new columns for morph active width.
Raimund Renkert <rrenkert@intevation.de>
parents:
7506
diff
changeset
|
175 } |
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
|
176 header.add(msg(CSV_HEADER_DIFF_PAIR, "difference pair")); |
6217
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
177 } |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
178 writer.writeNext(header.toArray(new String[header.size()])); |
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
179 } |
6242
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
180 |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
181 protected BedDifferenceJRDataSource createJRData() { |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
182 BedDifferenceJRDataSource source = new BedDifferenceJRDataSource(); |
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 addMetaData(source); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
185 NumberFormat kmf = Formatter.getCalculationKm(context.getMeta()); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
186 NumberFormat mf = Formatter.getMeterFormat(context); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
187 for (BedDifferencesResult result: results) { |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
188 double[][] kms = result.getDifferencesData(); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
189 for (int j = 0; j < kms[0].length; j++) { |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
190 source.addData(new String[] { |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
191 kmf.format(kms[0][j]), mf.format(kms[1][j])}); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
192 } |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
193 } |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
194 return source; |
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 |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
197 @Override |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
198 protected void writePDF(OutputStream out) { |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
199 logger.debug("write PDF"); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
200 BedDifferenceJRDataSource source = createJRData(); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
201 |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
202 String jasperFile = Resources.getMsg( |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
203 context.getMeta(), |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
204 JASPER_FILE, |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
205 "/jasper/beddifference_en.jasper"); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
206 String confPath = Config.getConfigDirectory().toString(); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
207 |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
208 |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
209 Map parameters = new HashMap(); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
210 parameters.put("ReportTitle", Resources.getMsg( |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
211 context.getMeta(), PDF_TITLE, "Exported Data")); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
212 try { |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
213 JasperPrint print = JasperFillManager.fillReport( |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
214 confPath + jasperFile, |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
215 parameters, |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
216 source); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
217 JasperExportManager.exportReportToPdfStream(print, out); |
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 catch(JRException je) { |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
220 logger.warn("Error generating PDF Report!", je); |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
221 } |
34f393434913
Implement pdf export for bedheight differences
Andre Heinecke <aheinecke@intevation.de>
parents:
6217
diff
changeset
|
222 } |
6217
e213b538f78c
Added exporter for bed height differences.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
223 } |
6681
e316a9c626e0
Use foreach instead of for-loop.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6667
diff
changeset
|
224 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |