Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepth/FlowDepthExporter.java @ 8997:d5802f22e4f5
Work on uinfo
author | gernotbelger |
---|---|
date | Thu, 12 Apr 2018 19:14:19 +0200 |
parents | 183f42641ab6 |
children | 7134a4c7d1b6 |
comparison
equal
deleted
inserted
replaced
8996:fb9430250899 | 8997:d5802f22e4f5 |
---|---|
10 | 10 |
11 import java.util.ArrayList; | 11 import java.util.ArrayList; |
12 import java.util.Collection; | 12 import java.util.Collection; |
13 | 13 |
14 import org.apache.log4j.Logger; | 14 import org.apache.log4j.Logger; |
15 import org.dive4elements.river.artifacts.common.GeneralResultType; | |
16 import org.dive4elements.river.artifacts.common.ResultRow; | |
15 import org.dive4elements.river.artifacts.sinfo.common.AbstractSInfoExporter; | 17 import org.dive4elements.river.artifacts.sinfo.common.AbstractSInfoExporter; |
16 import org.dive4elements.river.artifacts.sinfo.common.SInfoResultRow; | |
17 import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType; | 18 import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType; |
18 import org.dive4elements.river.artifacts.sinfo.util.BedHeightInfo; | 19 import org.dive4elements.river.artifacts.sinfo.util.BedHeightInfo; |
19 import org.dive4elements.river.artifacts.sinfo.util.MetaAndTableJRDataSource; | 20 import org.dive4elements.river.artifacts.sinfo.util.MetaAndTableJRDataSource; |
20 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; | 21 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; |
21 import org.dive4elements.river.artifacts.sinfo.util.WstInfo; | 22 import org.dive4elements.river.artifacts.sinfo.util.WstInfo; |
29 * @author Gernot Belger | 30 * @author Gernot Belger |
30 */ | 31 */ |
31 // REMARK: must be public because its registered in generators.xml | 32 // REMARK: must be public because its registered in generators.xml |
32 public class FlowDepthExporter extends AbstractSInfoExporter<FlowDepthCalculationResult, FlowDepthCalculationResults> { | 33 public class FlowDepthExporter extends AbstractSInfoExporter<FlowDepthCalculationResult, FlowDepthCalculationResults> { |
33 | 34 |
34 private static enum ExportMode { | |
35 pdf, csv | |
36 } | |
37 | |
38 /** The log used in this exporter. */ | 35 /** The log used in this exporter. */ |
39 private static Logger log = Logger.getLogger(FlowDepthExporter.class); | 36 private static Logger log = Logger.getLogger(FlowDepthExporter.class); |
40 | 37 |
41 private static final String JASPER_FILE = "/jasper/sinfo.flowdepth.jasper"; | 38 private static final String JASPER_FILE = "/jasper/templates/sinfo.flowdepth.jrxml"; // TODO use jrxml-path all over the project |
42 | 39 |
43 @Override | 40 @Override |
44 protected Logger getLog() { | 41 protected Logger getLog() { |
45 return log; | 42 return log; |
46 } | 43 } |
47 | 44 |
48 @Override | 45 @Override |
49 protected void writeCSVGlobalMetadata(final CSVWriter writer, final FlowDepthCalculationResults results) { | 46 protected void writeCSVGlobalMetadata(final CSVWriter writer, final FlowDepthCalculationResults results) { |
50 log.info("FlowDepthExporter.writeCSVMeta"); | 47 log.info("FlowDepthExporter.writeCSVMeta"); |
51 | |
52 super.writeCSVGlobalMetadataDefaults(writer, results); | 48 super.writeCSVGlobalMetadataDefaults(writer, results); |
53 | |
54 writer.writeNext(new String[] { "" }); | |
55 } | 49 } |
56 | 50 |
57 @Override | 51 @Override |
58 protected void writeCSVResultMetadata(final CSVWriter writer, final FlowDepthCalculationResults results, final FlowDepthCalculationResult result) { | 52 protected void writeCSVResultMetadata(final CSVWriter writer, final FlowDepthCalculationResults results, final FlowDepthCalculationResult result) { |
59 | 53 |
60 final BedHeightInfo sounding = result.getSounding(); | 54 final BedHeightInfo sounding = result.getSounding(); |
61 super.writeCSVSoundingMetadata(writer, sounding); | 55 super.writeCSVSoundingMetadata(writer, sounding); |
62 | 56 |
57 writer.writeNext(new String[] { "" }); // break line | |
58 | |
63 final WstInfo wst = result.getWst(); | 59 final WstInfo wst = result.getWst(); |
64 super.writeCSVWaterlevelMetadata(writer, wst); | 60 super.writeCSVWaterlevelMetadata(writer, wst); |
61 | |
65 } | 62 } |
66 | 63 |
67 /** | 64 /** |
68 * Write the header, with different headings depending on whether at a | 65 * Write the header, with different headings depending on whether at a |
69 * gauge or at a location. | 66 * gauge or at a location. |
75 protected void writeCSVHeader(final CSVWriter writer, final FlowDepthCalculationResults results, final RiverInfo river) { | 72 protected void writeCSVHeader(final CSVWriter writer, final FlowDepthCalculationResults results, final RiverInfo river) { |
76 log.info("FlowDepthExporter.writeCSVHeader"); | 73 log.info("FlowDepthExporter.writeCSVHeader"); |
77 | 74 |
78 final Collection<String> header = new ArrayList<>(11); | 75 final Collection<String> header = new ArrayList<>(11); |
79 | 76 |
80 header.add(msg(SInfoResultType.station.getCsvHeader())); | 77 header.add(msg(GeneralResultType.station.getCsvHeader())); |
81 header.add(msgUnit(SInfoResultType.flowdepth.getCsvHeader(), SInfoResultType.flowdepth.getUnit())); | 78 header.add(msgUnit(SInfoResultType.flowdepth.getCsvHeader(), SInfoResultType.flowdepth.getUnit())); |
82 | 79 |
83 if (results.isUseTkh()) { | 80 if (results.isUseTkh()) { |
84 header.add(msgUnit(SInfoResultType.flowdepthtkh.getCsvHeader(), SInfoResultType.flowdepthtkh.getUnit())); | 81 header.add(msgUnit(SInfoResultType.flowdepthtkh.getCsvHeader(), SInfoResultType.flowdepthtkh.getUnit())); |
85 header.add(msgUnit(SInfoResultType.tkh.getCsvHeader(), SInfoResultType.tkh.getUnit())); | 82 header.add(msgUnit(SInfoResultType.tkh.getCsvHeader(), SInfoResultType.tkh.getUnit())); |
94 header.add(msg(SInfoResultType.location.getCsvHeader())); | 91 header.add(msg(SInfoResultType.location.getCsvHeader())); |
95 | 92 |
96 writer.writeNext(header.toArray(new String[header.size()])); | 93 writer.writeNext(header.toArray(new String[header.size()])); |
97 } | 94 } |
98 | 95 |
99 @Override | |
100 protected String[] formatCSVRow(final FlowDepthCalculationResults results, final FlowDepthCalculationResult result, final SInfoResultRow row) { | |
101 return formatRow(row, ExportMode.csv); | |
102 } | |
103 | |
104 /** | 96 /** |
105 * Format a row of a flow depth result into an array of string, both used by csv and pdf | 97 * Format a row of a flow depth result into an array of string, both used by csv and pdf |
106 * | 98 * |
107 * @param pdf | 99 * @param pdf |
108 * | 100 * |
109 * @param useTkh | 101 * @param useTkh |
110 */ | 102 */ |
111 private String[] formatRow(final SInfoResultRow row, final ExportMode mode) { | 103 @Override |
104 protected String[] formatRow(final FlowDepthCalculationResults results, final ResultRow row, final ExportMode mode) { | |
112 | 105 |
113 final Collection<String> lines = new ArrayList<>(11); | 106 final Collection<String> lines = new ArrayList<>(11); |
114 | 107 |
115 lines.add(row.exportValue(this.context, SInfoResultType.station)); | 108 lines.add(row.exportValue(this.context, GeneralResultType.station)); |
116 lines.add(row.exportValue(this.context, SInfoResultType.flowdepth)); | 109 lines.add(row.exportValue(this.context, SInfoResultType.flowdepth)); |
117 | 110 |
118 if (mode == ExportMode.pdf || getData().isUseTkh()) { | 111 if (mode == ExportMode.pdf || getData().isUseTkh()) { |
119 lines.add(row.exportValue(this.context, SInfoResultType.flowdepthtkh)); | 112 lines.add(row.exportValue(this.context, SInfoResultType.flowdepthtkh)); |
120 lines.add(row.exportValue(this.context, SInfoResultType.tkh)); | 113 lines.add(row.exportValue(this.context, SInfoResultType.tkh)); |
138 | 131 |
139 @Override | 132 @Override |
140 protected final void addJRMetaData(final MetaAndTableJRDataSource source, final FlowDepthCalculationResults results) { | 133 protected final void addJRMetaData(final MetaAndTableJRDataSource source, final FlowDepthCalculationResults results) { |
141 | 134 |
142 /* general metadata */ | 135 /* general metadata */ |
143 super.addJRMetaDataDefaults(source, results); | 136 super.addJRMetaData(source, results); |
144 | 137 |
145 /* column headings */ | 138 /* column headings */ |
146 source.addMetaData("station_header", SInfoResultType.station.getPdfHeader(this.context.getMeta())); | 139 source.addMetaData("station_header", GeneralResultType.station.getPdfHeader(this.context.getMeta())); |
147 source.addMetaData("flowdepth_header", SInfoResultType.flowdepth.getPdfHeader(this.context.getMeta())); | 140 source.addMetaData("flowdepth_header", SInfoResultType.flowdepth.getPdfHeader(this.context.getMeta())); |
148 source.addMetaData("flowdepth_tkh_header", SInfoResultType.flowdepthtkh.getPdfHeader(this.context.getMeta())); | 141 source.addMetaData("flowdepth_tkh_header", SInfoResultType.flowdepthtkh.getPdfHeader(this.context.getMeta())); |
149 source.addMetaData("tkh_header", SInfoResultType.tkh.getPdfHeader(this.context.getMeta())); | 142 source.addMetaData("tkh_header", SInfoResultType.tkh.getPdfHeader(this.context.getMeta())); |
150 source.addMetaData("waterlevel_header", SInfoResultType.waterlevel.getPdfHeader(this.context.getMeta())); | 143 source.addMetaData("waterlevel_header", SInfoResultType.waterlevel.getPdfHeader(this.context.getMeta())); |
151 source.addMetaData("discharge_header", SInfoResultType.discharge.getPdfHeader(this.context.getMeta())); | 144 source.addMetaData("discharge_header", SInfoResultType.discharge.getPdfHeader(this.context.getMeta())); |
154 source.addMetaData("bedheight_header", SInfoResultType.meanBedHeight.getPdfHeader(this.context.getMeta())); | 147 source.addMetaData("bedheight_header", SInfoResultType.meanBedHeight.getPdfHeader(this.context.getMeta())); |
155 source.addMetaData("sounding_name_header", SInfoResultType.soundingLabel.getPdfHeader(this.context.getMeta())); | 148 source.addMetaData("sounding_name_header", SInfoResultType.soundingLabel.getPdfHeader(this.context.getMeta())); |
156 source.addMetaData("location_header", SInfoResultType.location.getPdfHeader(this.context.getMeta())); | 149 source.addMetaData("location_header", SInfoResultType.location.getPdfHeader(this.context.getMeta())); |
157 } | 150 } |
158 | 151 |
159 @Override | |
160 protected String[] formatPDFRow(final FlowDepthCalculationResults results, final SInfoResultRow row) { | |
161 return formatRow(row, ExportMode.pdf); | |
162 } | |
163 } | 152 } |