comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/flowdepthminmax/FlowDepthMinMaxExporter.java @ 8997:d5802f22e4f5

Work on uinfo
author gernotbelger
date Thu, 12 Apr 2018 19:14:19 +0200
parents 0adc6d04de95
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;
45 protected void writeCSVResultMetadata(final CSVWriter writer, final FlowDepthMinMaxCalculationResults results, 46 protected void writeCSVResultMetadata(final CSVWriter writer, final FlowDepthMinMaxCalculationResults results,
46 final FlowDepthMinMaxCalculationResult result) { 47 final FlowDepthMinMaxCalculationResult result) {
47 48
48 final BedHeightInfo sounding = result.getSounding(); 49 final BedHeightInfo sounding = result.getSounding();
49 super.writeCSVSoundingMetadata(writer, sounding); 50 super.writeCSVSoundingMetadata(writer, sounding);
50 51 writer.writeNext(new String[] { "" }); // break line
51 final WstInfo wst = result.getWst(); 52 final WstInfo wst = result.getWst();
52 writeCSVWaterlevelMetadata(writer, wst); 53 writeCSVWaterlevelMetadata(writer, wst);
53 } 54 }
54 55
55 @Override 56 @Override
56 protected void writeCSVGlobalMetadata(final CSVWriter writer, final FlowDepthMinMaxCalculationResults results) { 57 protected void writeCSVGlobalMetadata(final CSVWriter writer, final FlowDepthMinMaxCalculationResults results) {
57 58
58 super.writeCSVGlobalMetadataDefaults(writer, results); 59 super.writeCSVGlobalMetadataDefaults(writer, results);
59
60 writer.writeNext(new String[] { "" });
61 } 60 }
62 61
63 /** 62 /**
64 * Write the header, with different headings depending on whether at a 63 * Write the header, with different headings depending on whether at a
65 * gauge or at a location. 64 * gauge or at a location.
71 protected void writeCSVHeader(final CSVWriter writer, final FlowDepthMinMaxCalculationResults results, final RiverInfo river) { 70 protected void writeCSVHeader(final CSVWriter writer, final FlowDepthMinMaxCalculationResults results, final RiverInfo river) {
72 log.info("FlowDepthExporter.writeCSVHeader"); 71 log.info("FlowDepthExporter.writeCSVHeader");
73 72
74 final Collection<String> header = new ArrayList<>(11); 73 final Collection<String> header = new ArrayList<>(11);
75 74
76 header.add(msg(SInfoResultType.station.getCsvHeader())); 75 header.add(msg(GeneralResultType.station.getCsvHeader()));
77 header.add(msgUnit(SInfoResultType.flowdepthmin.getCsvHeader(), SInfoResultType.flowdepthmin.getUnit())); 76 header.add(msgUnit(SInfoResultType.flowdepthmin.getCsvHeader(), SInfoResultType.flowdepthmin.getUnit()));
78 header.add(msgUnit(SInfoResultType.flowdepthmax.getCsvHeader(), SInfoResultType.flowdepthmax.getUnit())); 77 header.add(msgUnit(SInfoResultType.flowdepthmax.getCsvHeader(), SInfoResultType.flowdepthmax.getUnit()));
79 header.add(msgUnit(SInfoResultType.waterlevel.getCsvHeader(), river.getWstUnit())); 78 header.add(msgUnit(SInfoResultType.waterlevel.getCsvHeader(), river.getWstUnit()));
80 header.add(msgUnit(SInfoResultType.discharge.getCsvHeader(), SInfoResultType.discharge.getUnit())); 79 header.add(msgUnit(SInfoResultType.discharge.getCsvHeader(), SInfoResultType.discharge.getUnit()));
81 header.add(msg(SInfoResultType.waterlevelLabel.getCsvHeader())); 80 header.add(msg(SInfoResultType.waterlevelLabel.getCsvHeader()));
85 header.add(msg(SInfoResultType.location.getCsvHeader())); 84 header.add(msg(SInfoResultType.location.getCsvHeader()));
86 85
87 writer.writeNext(header.toArray(new String[header.size()])); 86 writer.writeNext(header.toArray(new String[header.size()]));
88 } 87 }
89 88
90 @Override
91 protected String[] formatCSVRow(final FlowDepthMinMaxCalculationResults results, final FlowDepthMinMaxCalculationResult result, final SInfoResultRow row) {
92 return formatRow(result, row);
93 }
94
95 /** 89 /**
96 * Format a row of a flow depth result into an array of string, both used by csv and pdf 90 * Format a row of a flow depth result into an array of string, both used by csv and pdf
97 * 91 *
98 * @param result 92 * @param result
99 * 93 *
100 * @param useTkh 94 * @param useTkh
101 */ 95 */
102 private String[] formatRow(final FlowDepthMinMaxCalculationResult result, final SInfoResultRow row) { 96 @Override
97 protected String[] formatRow(final FlowDepthMinMaxCalculationResults results, final ResultRow row, final ExportMode mode) {
103 98
104 final Collection<String> lines = new ArrayList<>(10); 99 final Collection<String> lines = new ArrayList<>(10);
105 100
106 lines.add(row.exportValue(this.context, SInfoResultType.station)); 101 lines.add(row.exportValue(this.context, GeneralResultType.station));
107 102
108 // REMARK: null check as pdf will call this with null and in that case we show all columns (to avoid multiple jasper 103 // REMARK: null check as pdf will call this with null and in that case we show all columns (to avoid multiple jasper
109 // FIXME: does not work like this: we may have several pairs of min/max; so we need to look at all of them? 104 // FIXME: does not work like this: we may have several pairs of min/max; so we need to look at all of them?
110 // templates) 105 // templates)
111 // if (result == null || result.getMinSounding() != null) 106 // if (result == null || result.getMinSounding() != null)
131 126
132 @Override 127 @Override
133 protected final void addJRMetaData(final MetaAndTableJRDataSource source, final FlowDepthMinMaxCalculationResults results) { 128 protected final void addJRMetaData(final MetaAndTableJRDataSource source, final FlowDepthMinMaxCalculationResults results) {
134 129
135 /* general metadata */ 130 /* general metadata */
136 super.addJRMetaDataDefaults(source, results); 131 super.addJRMetaData(source, results);
137 132
138 /* column headings */ 133 /* column headings */
139 source.addMetaData("station_header", SInfoResultType.station.getPdfHeader(this.context.getMeta())); 134 source.addMetaData("station_header", GeneralResultType.station.getPdfHeader(this.context.getMeta()));
140 source.addMetaData("flowdepthmin_header", SInfoResultType.flowdepthmin.getPdfHeader(this.context.getMeta())); 135 source.addMetaData("flowdepthmin_header", SInfoResultType.flowdepthmin.getPdfHeader(this.context.getMeta()));
141 source.addMetaData("flowdepthmax_header", SInfoResultType.flowdepthmax.getPdfHeader(this.context.getMeta())); 136 source.addMetaData("flowdepthmax_header", SInfoResultType.flowdepthmax.getPdfHeader(this.context.getMeta()));
142 source.addMetaData("waterlevel_header", SInfoResultType.waterlevel.getPdfHeader(this.context.getMeta())); 137 source.addMetaData("waterlevel_header", SInfoResultType.waterlevel.getPdfHeader(this.context.getMeta()));
143 source.addMetaData("discharge_header", SInfoResultType.discharge.getPdfHeader(this.context.getMeta())); 138 source.addMetaData("discharge_header", SInfoResultType.discharge.getPdfHeader(this.context.getMeta()));
144 source.addMetaData("waterlevel_name_header", SInfoResultType.waterlevelLabel.getPdfHeader(this.context.getMeta())); 139 source.addMetaData("waterlevel_name_header", SInfoResultType.waterlevelLabel.getPdfHeader(this.context.getMeta()));
146 source.addMetaData("bedheight_header", SInfoResultType.meanBedHeight.getPdfHeader(this.context.getMeta())); 141 source.addMetaData("bedheight_header", SInfoResultType.meanBedHeight.getPdfHeader(this.context.getMeta()));
147 source.addMetaData("sounding_name_header", SInfoResultType.soundingLabel.getPdfHeader(this.context.getMeta())); 142 source.addMetaData("sounding_name_header", SInfoResultType.soundingLabel.getPdfHeader(this.context.getMeta()));
148 source.addMetaData("location_header", SInfoResultType.location.getPdfHeader(this.context.getMeta())); 143 source.addMetaData("location_header", SInfoResultType.location.getPdfHeader(this.context.getMeta()));
149 } 144 }
150 145
151 @Override
152 protected String[] formatPDFRow(final FlowDepthMinMaxCalculationResults results, final SInfoResultRow row) {
153 return formatRow(null, row);
154 }
155 } 146 }

http://dive4elements.wald.intevation.org