comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepthdev/FlowDepthDevelopmentExporter.java @ 8953:c40db8e8dcae

SINFO - Flow depth development - implemented exporters
author gernotbelger
date Mon, 19 Mar 2018 14:01:21 +0100
parents 322b0e6298ea
children 7c1611b5a59e
comparison
equal deleted inserted replaced
8952:1a8f19f3b776 8953:c40db8e8dcae
27 * @author Gernot Belger 27 * @author Gernot Belger
28 */ 28 */
29 // REMARK: must be public because its registered in generators.xml 29 // REMARK: must be public because its registered in generators.xml
30 public class FlowDepthDevelopmentExporter extends AbstractSInfoExporter<FlowDepthDevelopmentCalculationResult, FlowDepthDevelopmentCalculationResults> { 30 public class FlowDepthDevelopmentExporter extends AbstractSInfoExporter<FlowDepthDevelopmentCalculationResult, FlowDepthDevelopmentCalculationResults> {
31 31
32 private static final String CSV_META_HEADER_SOUNDING_CURRENT = "sinfo.export.csv.meta.header.sounding.current";
33
34 private static final String CSV_META_HEADER_SOUNDING_HISTORICAL = "sinfo.export.csv.meta.header.sounding.historical";
35
36 private static final String CSV_META_HEADER_WATERLEVEL_CURRENT = "sinfo.export.csv.meta.header.waterlevel.current";
37
38 private static final String CSV_META_HEADER_WATERLEVEL_HISTORICAL = "sinfo.export.csv.meta.header.waterlevel.historical";
39
32 /** The log used in this exporter. */ 40 /** The log used in this exporter. */
33 private static Logger log = Logger.getLogger(FlowDepthDevelopmentExporter.class); 41 private static Logger log = Logger.getLogger(FlowDepthDevelopmentExporter.class);
34 42
35 private static final String JASPER_FILE = "/jasper/sinfo.flowdepthminmax.jasper"; 43 private static final String JASPER_FILE = "/jasper/sinfo.flowdepthminmax.jasper";
36 44
41 49
42 @Override 50 @Override
43 protected void writeCSVResultMetadata(final CSVWriter writer, final FlowDepthDevelopmentCalculationResults results, 51 protected void writeCSVResultMetadata(final CSVWriter writer, final FlowDepthDevelopmentCalculationResults results,
44 final FlowDepthDevelopmentCalculationResult result) { 52 final FlowDepthDevelopmentCalculationResult result) {
45 53
46 // FIXME: distinguish header labels 54 writeCSVSoundingMetadata(writer, result.getCurrentSounding(), CSV_META_HEADER_SOUNDING_CURRENT);
47 writeCSVSoundingMetadata(writer, result.getCurrentSounding()); 55 writeCSVWaterlevelMetadata(writer, result.getCurrentWst(), CSV_META_HEADER_WATERLEVEL_CURRENT);
48 writeCSVWaterlevelMetadata(writer, result.getCurrentWst()); 56 writeCSVSoundingMetadata(writer, result.getHistoricalSounding(), CSV_META_HEADER_SOUNDING_HISTORICAL);
49 57 writeCSVWaterlevelMetadata(writer, result.getHistoricalWst(), CSV_META_HEADER_WATERLEVEL_HISTORICAL);
50 // FIXME: distinguish header labels
51 writeCSVSoundingMetadata(writer, result.getHistoricalSounding());
52 writeCSVWaterlevelMetadata(writer, result.getHistoricalWst());
53 } 58 }
54 59
55 @Override 60 @Override
56 protected void writeCSVGlobalMetadata(final CSVWriter writer, final FlowDepthDevelopmentCalculationResults results) { 61 protected void writeCSVGlobalMetadata(final CSVWriter writer, final FlowDepthDevelopmentCalculationResults results) {
57 62
69 */ 74 */
70 @Override 75 @Override
71 protected void writeCSVHeader(final CSVWriter writer, final FlowDepthDevelopmentCalculationResults results, final RiverInfo river) { 76 protected void writeCSVHeader(final CSVWriter writer, final FlowDepthDevelopmentCalculationResults results, final RiverInfo river) {
72 log.info("FlowDepthExporter.writeCSVHeader"); 77 log.info("FlowDepthExporter.writeCSVHeader");
73 78
79 final FlowDepthDevelopmentCalculationResult result = results.getResult();
80
74 final Collection<String> header = new ArrayList<>(11); 81 final Collection<String> header = new ArrayList<>(11);
75 82
76 header.add(msg(SInfoResultType.station.getCsvHeader())); 83 header.add(msg(SInfoResultType.station.getCsvHeader()));
77 header.add(msgUnit(SInfoResultType.flowdepthDevelopment.getCsvHeader(), SInfoResultType.flowdepthDevelopment.getUnit())); 84 header.add(msgUnit(SInfoResultType.flowdepthDevelopment.getCsvHeader(), SInfoResultType.flowdepthDevelopment.getUnit()));
78 header.add(msgUnit(SInfoResultType.flowdepthDevelopmentPerYear.getCsvHeader(), SInfoResultType.flowdepthDevelopmentPerYear.getUnit())); 85 header.add(msgUnit(SInfoResultType.flowdepthDevelopmentPerYear.getCsvHeader(), SInfoResultType.flowdepthDevelopmentPerYear.getUnit()));
79 86 header.add(msgUnitLabel(SInfoResultType.waterlevelDifference.getCsvHeader(), SInfoResultType.waterlevelDifference.getUnit(),
80 // FIXME: add data-labels in header 87 result.getWaterlevelDifferenceLabel()));
81 header.add(msgUnit(SInfoResultType.waterlevelDifference.getCsvHeader(), SInfoResultType.waterlevelDifference.getUnit())); 88 header.add(msgUnitLabel(SInfoResultType.bedHeightDifference.getCsvHeader(), SInfoResultType.bedHeightDifference.getUnit(),
82 header.add(msgUnit(SInfoResultType.bedHeightDifference.getCsvHeader(), SInfoResultType.bedHeightDifference.getUnit())); 89 result.getBedHeightDifferenceLabel()));
83 90 header.add(
84 header.add(msgUnit(SInfoResultType.flowdepthCurrent.getCsvHeader(), SInfoResultType.flowdepthCurrent.getUnit())); 91 msgUnitLabel(SInfoResultType.flowdepthCurrent.getCsvHeader(), SInfoResultType.flowdepthCurrent.getUnit(), result.getFlowDepthCurrentLabel()));
85 header.add(msgUnit(SInfoResultType.flowdepthHistorical.getCsvHeader(), SInfoResultType.flowdepthHistorical.getUnit())); 92 header.add(msgUnitLabel(SInfoResultType.flowdepthHistorical.getCsvHeader(), SInfoResultType.flowdepthHistorical.getUnit(),
86 93 result.getFlowDepthHistoricalLabel()));
87 header.add(msg(SInfoResultType.location.getCsvHeader())); 94 header.add(msg(SInfoResultType.location.getCsvHeader()));
88 95
89 writer.writeNext(header.toArray(new String[header.size()])); 96 writer.writeNext(header.toArray(new String[header.size()]));
90 } 97 }
91 98
106 113
107 final Collection<String> lines = new ArrayList<>(10); 114 final Collection<String> lines = new ArrayList<>(10);
108 115
109 lines.add(row.exportValue(this.context, SInfoResultType.station)); 116 lines.add(row.exportValue(this.context, SInfoResultType.station));
110 117
111 // FIXME 118 lines.add(row.exportValue(this.context, SInfoResultType.flowdepthDevelopment));
112 119 lines.add(row.exportValue(this.context, SInfoResultType.flowdepthDevelopmentPerYear));
113 // REMARK: null check as pdf will call this with null and in that case we show all columns (to avoid multiple jasper 120 lines.add(row.exportValue(this.context, SInfoResultType.waterlevelDifference));
114 // FIXME: does not work like this: we may have several pairs of min/max; so we need to look at all of them? 121 lines.add(row.exportValue(this.context, SInfoResultType.bedHeightDifference));
115 // templates) 122 lines.add(row.exportValue(this.context, SInfoResultType.flowdepthCurrent));
116 // if (result == null || result.getMinSounding() != null) 123 lines.add(row.exportValue(this.context, SInfoResultType.flowdepthHistorical));
117 lines.add(row.exportValue(this.context, SInfoResultType.flowdepthmin));
118 // if (result == null || result.getMaxSounding() != null)
119 lines.add(row.exportValue(this.context, SInfoResultType.flowdepthmax));
120
121 lines.add(row.exportValue(this.context, SInfoResultType.waterlevel));
122 lines.add(row.exportValue(this.context, SInfoResultType.discharge));
123 lines.add(row.exportValue(this.context, SInfoResultType.waterlevelLabel));
124 lines.add(row.exportValue(this.context, SInfoResultType.gaugeLabel));
125 lines.add(row.exportValue(this.context, SInfoResultType.meanBedHeight));
126 lines.add(row.exportValue(this.context, SInfoResultType.soundingLabel));
127 lines.add(row.exportValue(this.context, SInfoResultType.location)); 124 lines.add(row.exportValue(this.context, SInfoResultType.location));
128 125
129 return lines.toArray(new String[lines.size()]); 126 return lines.toArray(new String[lines.size()]);
130 } 127 }
131 128
138 protected final void addJRMetaData(final MetaAndTableJRDataSource source, final FlowDepthDevelopmentCalculationResults results) { 135 protected final void addJRMetaData(final MetaAndTableJRDataSource source, final FlowDepthDevelopmentCalculationResults results) {
139 136
140 /* general metadata */ 137 /* general metadata */
141 super.addJRMetaDataDefaults(source, results); 138 super.addJRMetaDataDefaults(source, results);
142 139
140 final FlowDepthDevelopmentCalculationResult result = results.getResult();
141
143 /* column headings */ 142 /* column headings */
144 // FIXME
145 source.addMetaData("station_header", SInfoResultType.station.getPdfHeader(this.context.getMeta())); 143 source.addMetaData("station_header", SInfoResultType.station.getPdfHeader(this.context.getMeta()));
146 source.addMetaData("flowdepthmin_header", SInfoResultType.flowdepthmin.getPdfHeader(this.context.getMeta())); 144 source.addMetaData("flowdeptdevelopment_header", SInfoResultType.flowdepthDevelopment.getPdfHeader(this.context.getMeta()));
147 source.addMetaData("flowdepthmax_header", SInfoResultType.flowdepthmax.getPdfHeader(this.context.getMeta())); 145 source.addMetaData("flowdeptdevelopmentperyear_header", SInfoResultType.flowdepthDevelopmentPerYear.getPdfHeader(this.context.getMeta()));
148 source.addMetaData("waterlevel_header", SInfoResultType.waterlevel.getPdfHeader(this.context.getMeta())); 146
149 source.addMetaData("discharge_header", SInfoResultType.discharge.getPdfHeader(this.context.getMeta())); 147 source.addMetaData("waterleveldifference_header", SInfoResultType.waterlevelDifference.getPdfHeader(this.context.getMeta()));
150 source.addMetaData("waterlevel_name_header", SInfoResultType.waterlevelLabel.getPdfHeader(this.context.getMeta())); 148 source.addMetaData("waterleveldifference_header_label", result.getWaterlevelDifferenceLabel());
151 source.addMetaData("gauge_header", SInfoResultType.gaugeLabel.getPdfHeader(this.context.getMeta())); 149
152 source.addMetaData("bedheight_header", SInfoResultType.meanBedHeight.getPdfHeader(this.context.getMeta())); 150 source.addMetaData("bedheightdifference_header", SInfoResultType.bedHeightDifference.getPdfHeader(this.context.getMeta()));
153 source.addMetaData("sounding_name_header", SInfoResultType.soundingLabel.getPdfHeader(this.context.getMeta())); 151 source.addMetaData("bedheightdifference_header_label", result.getBedHeightDifferenceLabel());
152
153 source.addMetaData("flowdepthcurrent_header", SInfoResultType.flowdepthCurrent.getPdfHeader(this.context.getMeta()));
154 source.addMetaData("flowdepthcurrent_header_label", result.getFlowDepthCurrentLabel());
155
156 source.addMetaData("flowdepthhistorical_header", SInfoResultType.flowdepthHistorical.getPdfHeader(this.context.getMeta()));
157 source.addMetaData("flowdepthhistorical_header_label", result.getFlowDepthHistoricalLabel());
158
154 source.addMetaData("location_header", SInfoResultType.location.getPdfHeader(this.context.getMeta())); 159 source.addMetaData("location_header", SInfoResultType.location.getPdfHeader(this.context.getMeta()));
155 } 160 }
156 161
157 @Override 162 @Override
158 protected String[] formatPDFRow(final FlowDepthDevelopmentCalculationResults results, final SInfoResultRow row) { 163 protected String[] formatPDFRow(final FlowDepthDevelopmentCalculationResults results, final SInfoResultRow row) {

http://dive4elements.wald.intevation.org