comparison artifacts/src/main/java/org/dive4elements/river/exports/minfo/SedimentLoadExporter.java @ 6685:09e70f01ed1e

issue1416: SedimentLoadExporter: Implemented rough output.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Mon, 29 Jul 2013 09:30:44 +0200
parents 202ac69e0db1
children 6eb2b8087cfa
comparison
equal deleted inserted replaced
6684:29e2a5217307 6685:09e70f01ed1e
8 8
9 package org.dive4elements.river.exports.minfo; 9 package org.dive4elements.river.exports.minfo;
10 10
11 import java.util.LinkedList; 11 import java.util.LinkedList;
12 import java.util.List; 12 import java.util.List;
13 import java.util.TreeSet;
13 14
14 import java.io.OutputStream; 15 import java.io.OutputStream;
15 import java.io.IOException; 16 import java.io.IOException;
16 17
17 import java.text.NumberFormat; 18 import java.text.NumberFormat;
21 import org.apache.log4j.Logger; 22 import org.apache.log4j.Logger;
22 23
23 import org.dive4elements.artifacts.CallContext; 24 import org.dive4elements.artifacts.CallContext;
24 25
25 import org.dive4elements.river.artifacts.model.CalculationResult; 26 import org.dive4elements.river.artifacts.model.CalculationResult;
27 import org.dive4elements.river.artifacts.model.minfo.SedimentLoad;
28 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadFraction;
26 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadResult; 29 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadResult;
27 30
28 import org.dive4elements.river.exports.AbstractExporter; 31 import org.dive4elements.river.exports.AbstractExporter;
29 32
30 import org.dive4elements.river.utils.Formatter; 33 import org.dive4elements.river.utils.Formatter;
38 extends AbstractExporter 41 extends AbstractExporter
39 { 42 {
40 /** Private logger. */ 43 /** Private logger. */
41 private static Logger logger = Logger.getLogger(SedimentLoadExporter.class); 44 private static Logger logger = Logger.getLogger(SedimentLoadExporter.class);
42 45
46 // i18n keys.
47 public static final String CSV_KM =
48 "export.sedimentload_ls.csv.header.km";
43 49
50 public static final String CSV_YEAR =
51 "export.sedimentload_ls.csv.header.year";
52
53 public static final String CSV_COARSE =
54 "export.sedimentload_ls.csv.header.coarse";
55
56 public static final String CSV_FINEMIDDLE =
57 "export.sedimentload_ls.csv.header.finemiddle";
58
59 public static final String CSV_SAND =
60 "export.sedimentload_ls.csv.header.sand";
61
62 public static final String CSV_SUSP_SAND =
63 "export.sedimentload_ls.csv.header.suspsand";
64
65 public static final String CSV_SUSP_SEDIMENT =
66 "export.sedimentload_ls.csv.header.suspsediment";
67
68 public static final String CSV_TOTAL =
69 "export.sedimentload_ls.csv.header.total";
70
71
72 /** Collected results. */
44 private SedimentLoadResult[] results; 73 private SedimentLoadResult[] results;
45 74
75 /** Empty constructor. */
46 public SedimentLoadExporter() { 76 public SedimentLoadExporter() {
47 } 77 }
48 78
49 /** Trivial init. */ 79 /** Trivial init. */
50 @Override 80 @Override
58 /** Process all stored data and write csv. */ 88 /** Process all stored data and write csv. */
59 @Override 89 @Override
60 protected void writeCSVData(CSVWriter writer) throws IOException { 90 protected void writeCSVData(CSVWriter writer) throws IOException {
61 writeCSVHeader(writer); 91 writeCSVHeader(writer);
62 92
93 for (SedimentLoadResult result: results) {
94 SedimentLoad load = result.getLoad();
95 // Put load.getName()+load.getDescription()}); somewhere?
96 for (double km: new TreeSet<Double>(load.getKms())) {
97 SedimentLoadFraction fraction = load.getFraction(km);
98 writeRecord(writer, km, result.getStartYear(), result.getEndYear(), fraction);
99 }
100 }
101 }
102
103 /** Write a line. */
104 private void writeRecord(CSVWriter writer, double km, int fromYear, int toYear, SedimentLoadFraction fraction) {
105 // year, total, susp sed, susp sandbed suspsand, sand, finemiddle, coarse
106 String years = (toYear == 0) ? fromYear+"" : fromYear + "-" + toYear;
63 NumberFormat kmf = Formatter.getCalculationKm(context.getMeta()); 107 NumberFormat kmf = Formatter.getCalculationKm(context.getMeta());
64 /* writer.writeNext(new String[] { */ 108 NumberFormat valf = Formatter.getFormatter(context.getMeta(), 0, 2);
109 writer.writeNext(new String[] {
110 kmf.format(km),
111 years,
112 valf.format(fraction.getTotal()),
113 valf.format(fraction.getSand()),
114 valf.format(fraction.getFineMiddle()),
115 valf.format(fraction.getCoarse()),
116 valf.format(fraction.getSuspSand()),
117 //valf.format(fraction.getSuspSandBed()),
118 valf.format(fraction.getSuspSediment())
119 });
65 } 120 }
66 121
67 /** Writes i18ned header for csv file/stream. */ 122 /** Writes i18ned header for csv file/stream. */
68 protected void writeCSVHeader(CSVWriter writer) { 123 protected void writeCSVHeader(CSVWriter writer) {
69 logger.debug("writeCSVHeader()"); 124 logger.debug("writeCSVHeader()");
70 125
71 List<String> header = new LinkedList<String>(); 126 List<String> header = new LinkedList<String>();
72 if (results != null) { 127 if (results != null) {
73 /*header.add(msg(CSV_HEADER_KM, "km")); 128 header.add(msg(CSV_KM, "km"));
74 header.add(msg(CSV_HEADER_VAL, "m"));*/ 129 header.add(msg(CSV_YEAR, "Jahr"));
130 header.add(msg(CSV_TOTAL, "Gesamt"));
131 header.add(msg(CSV_SAND, "Sand"));
132 header.add(msg(CSV_FINEMIDDLE,"Fein"));
133 header.add(msg(CSV_COARSE, "Grob"));
134 header.add(msg(CSV_SUSP_SAND, "Su.Sand"));
135 header.add(msg(CSV_SUSP_SEDIMENT, "Schwebst."));
136 //header.add("Susp.Sand Bett");
75 } 137 }
76 writer.writeNext(header.toArray(new String[header.size()])); 138 writer.writeNext(header.toArray(new String[header.size()]));
77 } 139 }
78 140
79 /** Store data internally, accepting only SedimentLoadResults[] in 141 /** Store data internally, accepting only SedimentLoadResults[] in
92 } 154 }
93 logger.debug("addData: Data added."); 155 logger.debug("addData: Data added.");
94 results = (SedimentLoadResult[])d; 156 results = (SedimentLoadResult[])d;
95 } 157 }
96 158
159 /** Write PDF to outputstream (not implemented yet). */
97 @Override 160 @Override
98 protected void writePDF(OutputStream out) { 161 protected void writePDF(OutputStream out) {
99 logger.warn("Not implemented."); 162 logger.warn("Not implemented.");
100 } 163 }
101 } 164 }

http://dive4elements.wald.intevation.org