Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/minfo/SedimentLoadExporter.java @ 8202:e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Fri, 05 Sep 2014 12:58:17 +0200 |
parents | 705f8b92fd66 |
children | 0a5239a1e46e |
rev | line source |
---|---|
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
3 * |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
7 */ |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
8 |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
9 package org.dive4elements.river.exports.minfo; |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
10 |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
11 import java.util.LinkedList; |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
12 import java.util.List; |
8134
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
13 import java.util.TreeMap; |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
14 |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
15 import java.io.OutputStream; |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
16 import java.io.IOException; |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
17 |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
18 import java.text.NumberFormat; |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
19 |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
20 import org.apache.log4j.Logger; |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
21 |
7634
10993baf02c5
(issue1632) Add Unit to CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7088
diff
changeset
|
22 import org.dive4elements.river.artifacts.access.SedimentLoadAccess; |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
23 import org.dive4elements.river.artifacts.model.CalculationResult; |
8134
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
24 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadDataResult.Fraction; |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
25 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadDataResult; |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
26 |
7634
10993baf02c5
(issue1632) Add Unit to CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7088
diff
changeset
|
27 import org.dive4elements.river.artifacts.D4EArtifact; |
10993baf02c5
(issue1632) Add Unit to CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7088
diff
changeset
|
28 |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
29 import org.dive4elements.river.exports.AbstractExporter; |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
30 |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
31 import org.dive4elements.river.utils.Formatter; |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
32 |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
33 import au.com.bytecode.opencsv.CSVWriter; |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
34 |
6676
202ac69e0db1
Cosmetics, docs, imports.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6668
diff
changeset
|
35 |
6759
6eb2b8087cfa
issue1416: exporter for sedimentload and i18n.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6685
diff
changeset
|
36 /** |
6eb2b8087cfa
issue1416: exporter for sedimentload and i18n.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6685
diff
changeset
|
37 * Do CSV export for sediment load calculations (will also be shown in |
6676
202ac69e0db1
Cosmetics, docs, imports.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6668
diff
changeset
|
38 * client). */ |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
39 public class SedimentLoadExporter |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
40 extends AbstractExporter |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
41 { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8179
diff
changeset
|
42 /** Private log. */ |
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8179
diff
changeset
|
43 private static Logger log = Logger.getLogger(SedimentLoadExporter.class); |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
44 |
6685
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
45 // i18n keys. |
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
46 public static final String CSV_KM = |
8179
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
47 "export.csv.header.km"; |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
48 |
6685
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
49 public static final String CSV_YEAR = |
8179
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
50 "export.csv.header.year"; |
6685
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
51 |
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
52 public static final String CSV_COARSE = |
8179
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
53 "export.sedimentload.csv.header.coarse"; |
6685
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
54 |
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
55 public static final String CSV_FINEMIDDLE = |
8179
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
56 "export.sedimentload.csv.header.fine_middle"; |
6685
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
57 |
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
58 public static final String CSV_SAND = |
8179
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
59 "export.sedimentload.csv.header.sand"; |
6685
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
60 |
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
61 public static final String CSV_SUSP_SAND = |
8179
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
62 "export.sedimentload.csv.header.susp_sand"; |
6685
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
63 |
6759
6eb2b8087cfa
issue1416: exporter for sedimentload and i18n.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6685
diff
changeset
|
64 public static final String CSV_SUSP_SAND_BB = |
8179
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
65 "export.sedimentload.csv.header.susp_sand_bed"; |
6759
6eb2b8087cfa
issue1416: exporter for sedimentload and i18n.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6685
diff
changeset
|
66 |
6685
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
67 public static final String CSV_SUSP_SEDIMENT = |
8179
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
68 "export.sedimentload.csv.header.suspended_sediment"; |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
69 |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
70 public static final String CSV_BED_LOAD = |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
71 "export.sedimentload.csv.header.bed_load"; |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
72 |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
73 public static final String CSV_BED_LOAD_SUSP_SAND = |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
74 "export.sedimentload.csv.header.bed_load_susp_sand"; |
6685
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
75 |
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
76 public static final String CSV_TOTAL = |
8179
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
77 "export.sedimentload.csv.header.total"; |
6685
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
78 |
8134
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
79 private static final String[] FRACTION_ORDER = { |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
80 "suspended_sediment", |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
81 "susp_sand", |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
82 "susp_sand_bed", |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
83 "sand", |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
84 "fine_middle", |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
85 "coarse", |
8179
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
86 "bed_load", |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
87 "bed_load_susp_sand", |
8134
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
88 "total" |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
89 }; |
6685
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
90 |
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
91 /** Collected results. */ |
8134
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
92 private SedimentLoadDataResult result; |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
93 |
6685
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
94 /** Empty constructor. */ |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
95 public SedimentLoadExporter() { |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
96 } |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
97 |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
98 /** Process all stored data and write csv. */ |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
99 @Override |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
100 protected void writeCSVData(CSVWriter writer) throws IOException { |
8134
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
101 if (result == null) { |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
102 return; |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
103 } |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
104 writeCSVHeader(writer); |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
105 |
8134
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
106 /* Prepare the values. The order of the fractions is given by the |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
107 * header and thus static. */ |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
108 |
8146
ce35bdf3d750
Let the facet know the period of it's data.
Tom Gottfried <tom@intevation.de>
parents:
8136
diff
changeset
|
109 /* The result is ordered by the periods. For each period there is |
ce35bdf3d750
Let the facet know the period of it's data.
Tom Gottfried <tom@intevation.de>
parents:
8136
diff
changeset
|
110 * then a map of km-fraction pairs which are the actual result. */ |
8134
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
111 |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
112 TreeMap <String, TreeMap <Double, Double[]>> result_map = |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
113 new TreeMap<String, TreeMap<Double, Double[]>>(); |
8136
cda45ed151ed
Fix exporter loops
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8134
diff
changeset
|
114 for (int i = 0; i < FRACTION_ORDER.length; i++) { |
cda45ed151ed
Fix exporter loops
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8134
diff
changeset
|
115 String name = FRACTION_ORDER[i]; |
cda45ed151ed
Fix exporter loops
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8134
diff
changeset
|
116 List<Fraction> fractions = result.getFractionsByName(name); |
cda45ed151ed
Fix exporter loops
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8134
diff
changeset
|
117 if (fractions == null) { |
cda45ed151ed
Fix exporter loops
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8134
diff
changeset
|
118 continue; |
cda45ed151ed
Fix exporter loops
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8134
diff
changeset
|
119 } |
cda45ed151ed
Fix exporter loops
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8134
diff
changeset
|
120 for (Fraction fract: fractions) { |
8134
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
121 String period = fract.getPeriod(); |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
122 TreeMap<Double, Double[]> cur_map; |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
123 if (result_map.containsKey(period)) { |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
124 cur_map = result_map.get(period); |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
125 } else { |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
126 cur_map = new TreeMap<Double, Double[]>(); |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
127 result_map.put(period, cur_map); |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
128 } |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
129 double[][] values = fract.getData(); |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
130 for (int j = 0; j < values[0].length; j++) { |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
131 Double km = values[0][j]; |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
132 Double val = values[1][j]; |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
133 Double[] old = cur_map.get(km); |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
134 if (old == null) { |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
135 old = new Double[FRACTION_ORDER.length]; |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
136 for (int k = 0; k < old.length; k++) { |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
137 old [k] = Double.NaN; |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
138 } |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
139 } |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
140 old [i] = val; |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
141 cur_map.put(km, old); |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
142 } |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
143 } |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
144 } |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
145 for (String period: result_map.keySet()) { |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
146 TreeMap<Double, Double[]> cur_map = result_map.get(period); |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
147 for (Double km: cur_map.keySet()) { |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
148 writeRecord(writer, km, period, cur_map.get(km)); |
6685
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
149 } |
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
150 } |
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
151 } |
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
152 |
7018
acb63fd3c8d3
issue1465: Assume that a "0" measurement for total sediment load is
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7011
diff
changeset
|
153 |
acb63fd3c8d3
issue1465: Assume that a "0" measurement for total sediment load is
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7011
diff
changeset
|
154 /** Return space when val is NaN, apply NumberFormat otherwise. */ |
7007
d584100063dd
issue1465: Prepare SedimentLoadExporter to show "-" for NaN-values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6972
diff
changeset
|
155 private String numberToString(NumberFormat valf, double val) { |
d584100063dd
issue1465: Prepare SedimentLoadExporter to show "-" for NaN-values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6972
diff
changeset
|
156 if (Double.isNaN(val)) { |
7011
b1fadc5af121
issue1465: Show space instead of '-' in table results view.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7007
diff
changeset
|
157 return " "; |
7007
d584100063dd
issue1465: Prepare SedimentLoadExporter to show "-" for NaN-values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6972
diff
changeset
|
158 } |
d584100063dd
issue1465: Prepare SedimentLoadExporter to show "-" for NaN-values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6972
diff
changeset
|
159 return valf.format(val); |
d584100063dd
issue1465: Prepare SedimentLoadExporter to show "-" for NaN-values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6972
diff
changeset
|
160 } |
d584100063dd
issue1465: Prepare SedimentLoadExporter to show "-" for NaN-values.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6972
diff
changeset
|
161 |
6685
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
162 /** Write a line. */ |
6963
aa1d681ee6eb
SedimentLoadExporter: Minor refac. Determine a displayed string
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6759
diff
changeset
|
163 private void writeRecord( |
aa1d681ee6eb
SedimentLoadExporter: Minor refac. Determine a displayed string
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6759
diff
changeset
|
164 CSVWriter writer, |
aa1d681ee6eb
SedimentLoadExporter: Minor refac. Determine a displayed string
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6759
diff
changeset
|
165 double km, |
aa1d681ee6eb
SedimentLoadExporter: Minor refac. Determine a displayed string
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6759
diff
changeset
|
166 String years, |
8134
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
167 Double[] fractions |
6963
aa1d681ee6eb
SedimentLoadExporter: Minor refac. Determine a displayed string
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6759
diff
changeset
|
168 ) { |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
169 NumberFormat kmf = Formatter.getCalculationKm(context.getMeta()); |
6685
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
170 NumberFormat valf = Formatter.getFormatter(context.getMeta(), 0, 2); |
8179
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
171 |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
172 String[] record = new String[fractions.length+2]; |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
173 record[0] = kmf.format(km); |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
174 record[1] = years; |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
175 for (int i = 0; i < fractions.length; ++i) { |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
176 record[i+2] = numberToString(valf, fractions[i]); |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
177 } |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
178 |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
179 writer.writeNext(record); |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
180 } |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
181 |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
182 /** Writes i18ned header for csv file/stream. */ |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
183 protected void writeCSVHeader(CSVWriter writer) { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8179
diff
changeset
|
184 log.debug("writeCSVHeader()"); |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
185 |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
186 List<String> header = new LinkedList<String>(); |
8134
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
187 SedimentLoadAccess access = |
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
188 new SedimentLoadAccess((D4EArtifact) master); |
7634
10993baf02c5
(issue1632) Add Unit to CSV export
Andre Heinecke <aheinecke@intevation.de>
parents:
7088
diff
changeset
|
189 |
8179
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
190 String unit = msg("state.minfo." + access.getUnit()); |
8134
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
191 |
8179
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
192 header.add(msg(CSV_KM)); |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
193 header.add(msg(CSV_YEAR)); |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
194 for (String head: new String[] { |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
195 CSV_SUSP_SEDIMENT, |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
196 CSV_SUSP_SAND, |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
197 CSV_SUSP_SAND_BB, |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
198 CSV_SAND, |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
199 CSV_FINEMIDDLE, |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
200 CSV_COARSE, |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
201 CSV_BED_LOAD, |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
202 CSV_BED_LOAD_SUSP_SAND, |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
203 CSV_TOTAL |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
204 }) { |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
205 header.add(msg(head, new Object[] { unit })); |
705f8b92fd66
Complete CSV-export and correct headers.
Tom Gottfried <tom@intevation.de>
parents:
8146
diff
changeset
|
206 } |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
207 writer.writeNext(header.toArray(new String[header.size()])); |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
208 } |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
209 |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
210 /** Store data internally, accepting only SedimentLoadResults[] in |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
211 * calculationresults data. */ |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
212 @Override |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
213 protected void addData(Object data) { |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
214 if (!(data instanceof CalculationResult)) { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8179
diff
changeset
|
215 log.warn("Invalid data type."); |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
216 return; |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
217 } |
8134
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
218 Object d = ((CalculationResult)data).getData(); |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
219 |
8134
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
220 if (!(d instanceof SedimentLoadDataResult)) { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8179
diff
changeset
|
221 log.warn("Invalid result object."); |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
222 return; |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
223 } |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8179
diff
changeset
|
224 log.debug("addData: Data added."); |
8134
dfcc96deebd8
Make SedimentloadExporter work with the new result scheme.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8024
diff
changeset
|
225 result = (SedimentLoadDataResult)d; |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
226 } |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
227 |
6685
09e70f01ed1e
issue1416: SedimentLoadExporter: Implemented rough output.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
6676
diff
changeset
|
228 /** Write PDF to outputstream (not implemented yet). */ |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
229 @Override |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
230 protected void writePDF(OutputStream out) { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
8179
diff
changeset
|
231 log.warn("Not implemented."); |
6668
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
232 } |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
233 } |
368db84f1241
issue1416: Move a stub new SedimentLoadExporter in place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff
changeset
|
234 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |