Mercurial > dive4elements > river
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 } |