Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/common/ExportContextCSV.java @ 9195:a4121ec450d6
'ca.'-issue
ExportContextCSV+PDF separated
uinfo.inundationduration url export
author | gernotbelger |
---|---|
date | Fri, 29 Jun 2018 14:52:54 +0200 |
parents | 3931e8741f53 |
children | 740d65e4aa14 |
comparison
equal
deleted
inserted
replaced
9191:f692f5a0536a | 9195:a4121ec450d6 |
---|---|
8 * documentation coming with Dive4Elements River for details. | 8 * documentation coming with Dive4Elements River for details. |
9 */ | 9 */ |
10 package org.dive4elements.river.artifacts.common; | 10 package org.dive4elements.river.artifacts.common; |
11 | 11 |
12 import java.text.DateFormat; | 12 import java.text.DateFormat; |
13 import java.text.NumberFormat; | |
14 import java.util.ArrayList; | 13 import java.util.ArrayList; |
15 import java.util.Collection; | 14 import java.util.Collection; |
16 import java.util.Date; | 15 import java.util.Date; |
17 import java.util.Locale; | 16 import java.util.Locale; |
18 | 17 |
20 import org.dive4elements.artifacts.CallContext; | 19 import org.dive4elements.artifacts.CallContext; |
21 import org.dive4elements.artifacts.CallMeta; | 20 import org.dive4elements.artifacts.CallMeta; |
22 import org.dive4elements.river.FLYS; | 21 import org.dive4elements.river.FLYS; |
23 import org.dive4elements.river.artifacts.resources.Resources; | 22 import org.dive4elements.river.artifacts.resources.Resources; |
24 import org.dive4elements.river.artifacts.sinfo.common.SInfoI18NStrings; | 23 import org.dive4elements.river.artifacts.sinfo.common.SInfoI18NStrings; |
25 import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType; | |
26 import org.dive4elements.river.artifacts.sinfo.util.BedHeightInfo; | 24 import org.dive4elements.river.artifacts.sinfo.util.BedHeightInfo; |
27 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; | 25 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; |
28 import org.dive4elements.river.artifacts.sinfo.util.WstInfo; | 26 import org.dive4elements.river.artifacts.sinfo.util.WstInfo; |
29 import org.dive4elements.river.utils.Formatter; | |
30 | 27 |
31 import au.com.bytecode.opencsv.CSVWriter; | 28 import au.com.bytecode.opencsv.CSVWriter; |
32 | 29 |
33 /** | 30 /** |
34 * @author Domenico Nardi Tironi | 31 * @author Domenico Nardi Tironi |
35 * | 32 * |
36 */ | 33 */ |
37 public final class ExportContextCSV { | 34 public final class ExportContextCSV extends AbstractExportContext { |
38 | 35 |
39 private static final String CSV_META_HEADER_EVALUATOR = "sinfo.export.flow_depth.csv.meta.header.sounding.evaluator"; | 36 private static final String CSV_META_HEADER_EVALUATOR = "sinfo.export.flow_depth.csv.meta.header.sounding.evaluator"; |
40 | 37 |
41 private static final String CSV_META_HEADER_SOUNDING = "sinfo.export.flow_depth.csv.meta.header.sounding"; | 38 private static final String CSV_META_HEADER_SOUNDING = "sinfo.export.flow_depth.csv.meta.header.sounding"; |
42 | 39 |
48 | 45 |
49 private static final String CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL = "sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel"; | 46 private static final String CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL = "sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel"; |
50 | 47 |
51 private static final String CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL_ORIGINAL = "sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel.original"; | 48 private static final String CSV_META_HEADER_SOUNDING_ELEVATIOIN_MODEL_ORIGINAL = "sinfo.export.flow_depth.csv.meta.header.sounding.elevationmodel.original"; |
52 | 49 |
53 private NumberFormat qFormat = null; | |
54 | |
55 private NumberFormat flowDepthFormat = null; | |
56 | |
57 private NumberFormat kmFormat = null; | |
58 | |
59 /** The CallContext object. */ | |
60 private final CallContext context; | |
61 | |
62 private final CSVWriter writer; | 50 private final CSVWriter writer; |
63 | 51 |
64 public ExportContextCSV(final CallContext context, final CSVWriter writer) { | 52 private final AbstractCalculationResults<?> results; |
65 this.context = context; | 53 |
54 public ExportContextCSV(final CallContext context, final CSVWriter writer, final AbstractCalculationResults<?> results) { | |
55 super(context, results); | |
56 | |
66 this.writer = writer; | 57 this.writer = writer; |
67 } | 58 this.results = results; |
68 | |
69 private String msg(final String key) { | |
70 return Resources.getMsg(this.context.getMeta(), key, key); | |
71 } | |
72 | |
73 public String msg(final String key, final Object... args) { | |
74 return Resources.getMsg(this.context.getMeta(), key, key, args); | |
75 } | 59 } |
76 | 60 |
77 public final void writeCSVMetaEntry(final String message, final Object... messageArgs) { | 61 public final void writeCSVMetaEntry(final String message, final Object... messageArgs) { |
78 | 62 |
79 final CallMeta meta = this.context.getMeta(); | 63 final CallMeta meta = getContext().getMeta(); |
80 | 64 |
81 this.writer.writeNext(new String[] { Resources.getMsg(meta, message, message, messageArgs) }); | 65 this.writer.writeNext(new String[] { Resources.getMsg(meta, message, message, messageArgs) }); |
82 } | 66 } |
83 | 67 |
84 public void writeBlankLine() { | 68 public void writeBlankLine() { |
99 | 83 |
100 public String formatCsvHeader(final IResultType type) { | 84 public String formatCsvHeader(final IResultType type) { |
101 return msg(type.getCsvHeader()); | 85 return msg(type.getCsvHeader()); |
102 } | 86 } |
103 | 87 |
104 public String formatRowValue(final ResultRow row, final IResultType type) { | 88 public final void writeCSVGlobalMetadataDefaults() { |
105 return row.exportValue(this.context, type); | |
106 } | |
107 | |
108 public void addJRMetadata(final MetaAndTableJRDataSource source, final String key, final IResultType type) { | |
109 source.addMetaData(key, type.getPdfHeader(this.context.getMeta())); | |
110 } | |
111 | |
112 public final void writeCSVGlobalMetadataDefaults(final AbstractCalculationResults<?> results) { | |
113 // TODO: results as member | 89 // TODO: results as member |
114 final String calcModeLabel = results.getCalcModeLabel(); | 90 final String calcModeLabel = this.results.getCalcModeLabel(); |
115 final RiverInfo river = results.getRiver(); | 91 final RiverInfo river = this.results.getRiver(); |
116 final DoubleRange calcRange = results.getCalcRange(); | 92 final DoubleRange calcRange = this.results.getCalcRange(); |
117 | 93 |
118 writeCSVMetaEntry(I18NStrings.CSV_META_HEADER_RESULT, msg(I18NStrings.CSV_META_HEADER_RESULT_LABEL), river.getName(), calcModeLabel); | 94 writeCSVMetaEntry(I18NStrings.CSV_META_HEADER_RESULT, msg(I18NStrings.CSV_META_HEADER_RESULT_LABEL), river.getName(), calcModeLabel); |
119 | 95 |
120 // "# FLYS-Version: " | 96 // "# FLYS-Version: " |
121 writeCSVMetaEntry(I18NStrings.CSV_META_VERSION, msg(I18NStrings.CSV_META_VERSION_LABEL), FLYS.VERSION); | 97 writeCSVMetaEntry(I18NStrings.CSV_META_VERSION, msg(I18NStrings.CSV_META_VERSION_LABEL), FLYS.VERSION); |
122 | 98 |
123 // "# Bearbeiter: " | 99 // "# Bearbeiter: " |
124 writeCSVMetaEntry(I18NStrings.CSV_META_USER, msg(I18NStrings.CSV_META_USER_LABEL), results.getUser()); | 100 writeCSVMetaEntry(I18NStrings.CSV_META_USER, msg(I18NStrings.CSV_META_USER_LABEL), this.results.getUser()); |
125 | 101 |
126 // "# Datum der Erstellung: " | 102 // "# Datum der Erstellung: " |
127 final Locale locale = Resources.getLocale(this.context.getMeta()); | 103 final Locale locale = Resources.getLocale(getContext().getMeta()); |
128 final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale); | 104 final DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale); |
129 writeCSVMetaEntry(I18NStrings.CSV_META_CREATION, msg(I18NStrings.CSV_META_CREATION_LABEL), df.format(new Date())); | 105 writeCSVMetaEntry(I18NStrings.CSV_META_CREATION, msg(I18NStrings.CSV_META_CREATION_LABEL), df.format(new Date())); |
130 | 106 |
131 // "# Gewässer: " | 107 // "# Gewässer: " |
132 writeCSVMetaEntry(I18NStrings.CSV_META_RIVER, msg(I18NStrings.CSV_META_RIVER_LABEL), river.getName()); | 108 writeCSVMetaEntry(I18NStrings.CSV_META_RIVER, msg(I18NStrings.CSV_META_RIVER_LABEL), river.getName()); |
157 | 133 |
158 // "# Jahr/Zeitraum der Wasserspiegellage: " | 134 // "# Jahr/Zeitraum der Wasserspiegellage: " |
159 final int year = wst.getYear(); | 135 final int year = wst.getYear(); |
160 if (year > 0) | 136 if (year > 0) |
161 writeCSVMetaEntry(SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_YEAR, Integer.toString(year)); | 137 writeCSVMetaEntry(SInfoI18NStrings.CSV_META_HEADER_WATERLEVEL_YEAR, Integer.toString(year)); |
162 } | |
163 | |
164 // copy from AbstractExporter TODO merge with ExportContextPDF | |
165 protected NumberFormat getKmFormatter() { | |
166 | |
167 if (this.kmFormat == null) | |
168 this.kmFormat = Formatter.getWaterlevelKM(this.context); | |
169 | |
170 return this.kmFormat; | |
171 } | |
172 | |
173 public void addJRMetadata(final MetaAndTableJRDataSource source, final String key, final String msg) { | |
174 source.addMetaData(key, msg); | |
175 } | |
176 | |
177 public NumberFormat getQFormatter() { | |
178 if (this.qFormat == null) | |
179 this.qFormat = Formatter.getWaterlevelQ(this.context); | |
180 | |
181 return this.qFormat; | |
182 } | |
183 | |
184 public final NumberFormat getFlowDepthFormatter() { | |
185 if (this.flowDepthFormat == null) | |
186 this.flowDepthFormat = Formatter.getFlowDepth(this.context); | |
187 | |
188 return this.flowDepthFormat; | |
189 } | 138 } |
190 | 139 |
191 /** | 140 /** |
192 * Formats header with unit: msg [unit] | 141 * Formats header with unit: msg [unit] |
193 */ | 142 */ |
226 final String msg = msg(typeWithUnit.getCsvHeader()); | 175 final String msg = msg(typeWithUnit.getCsvHeader()); |
227 final String unit = msg(typeWithUnit.getUnit()); | 176 final String unit = msg(typeWithUnit.getUnit()); |
228 return String.format("%s [%s] (%s)", msg, unit, label); | 177 return String.format("%s [%s] (%s)", msg, unit, label); |
229 } | 178 } |
230 | 179 |
231 public String msgPdf(final SInfoResultType type) { | |
232 return type.getPdfHeader(this.context.getMeta()); | |
233 } | |
234 | |
235 public void writeTitleForTabs(final String tabTitleMsg, final int colSize) { | 180 public void writeTitleForTabs(final String tabTitleMsg, final int colSize) { |
236 | 181 |
237 final Collection<String> title = new ArrayList<>(colSize); | 182 final Collection<String> title = new ArrayList<>(colSize); |
238 title.add(msg("export_csv_title") + msg(tabTitleMsg)); | 183 title.add(msg("export_csv_title") + msg(tabTitleMsg)); |
239 writeCSVLine(title.toArray(new String[colSize])); | 184 writeCSVLine(title.toArray(new String[colSize])); |