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 }

http://dive4elements.wald.intevation.org