comparison artifacts/src/main/java/org/dive4elements/river/exports/ComputedDischargeCurveExporter.java @ 8383:4de385d58a3e

Transform export in cm at gauge. TODO: don't transfrom twice if coming from PegelInfo.
author Tom Gottfried <tom@intevation.de>
date Mon, 06 Oct 2014 19:07:57 +0200
parents 3508d625092f
children 47199406994a
comparison
equal deleted inserted replaced
8382:15f4e4785288 8383:4de385d58a3e
45 import org.dive4elements.river.model.River; 45 import org.dive4elements.river.model.River;
46 46
47 import org.dive4elements.river.utils.RiverUtils; 47 import org.dive4elements.river.utils.RiverUtils;
48 import org.dive4elements.river.utils.Formatter; 48 import org.dive4elements.river.utils.Formatter;
49 49
50 import static org.dive4elements.river.exports.injector.InjectorConstants.PNP; 50 import static org.dive4elements.river.exports.injector.InjectorConstants.GAUGE_EPSILON;
51 51
52 /** 52 /**
53 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> 53 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
54 */ 54 */
55 public class ComputedDischargeCurveExporter extends AbstractExporter { 55 public class ComputedDischargeCurveExporter extends AbstractExporter {
110 RangeAccess rangeAccess = new RangeAccess(arti); 110 RangeAccess rangeAccess = new RangeAccess(arti);
111 111
112 double[] kms = rangeAccess.getKmRange(); 112 double[] kms = rangeAccess.getKmRange();
113 113
114 Gauge gauge = river.determineGaugeByPosition(kms[0]); 114 Gauge gauge = river.determineGaugeByPosition(kms[0]);
115 if (context.getContextValue(PNP) instanceof Number) { 115 if (Math.abs(kms[0] - gauge.getStation().doubleValue())
116 < GAUGE_EPSILON) {
116 wUnit = "cm"; 117 wUnit = "cm";
117 gaugeName = gauge.getName(); 118 gaugeName = gauge.getName();
118 gaugeDatum = gauge.getDatum().doubleValue(); 119 gaugeDatum = gauge.getDatum().doubleValue();
119 120
120 // Now convert the data to cm because we are at gauge 121 // Now convert the data to cm because we are at gauge
121 List<WQKms> newData = new ArrayList<WQKms>(); 122 List<WQKms> newData = new ArrayList<WQKms>();
122 for (WQKms d2: data) { 123 for (WQKms d2: data) {
123 newData.add(new WQKms(d2.getKms(), 124 newData.add(new WQKms(d2.getKms(),
124 WQ.getFixedWQforExportAtGauge((WQ)d2, gauge.getDatum()))); 125 WQ.getFixedWQforExportAtGauge(
126 (WQ)d2,
127 gauge.getDatum()
128 )));
125 } 129 }
126 data = newData; // All hail the garbage collector 130 data = newData; // All hail the garbage collector
127 131
128 validSince = gauge.fetchMasterDischargeTable().getTimeInterval().getStartTime(); 132 validSince = gauge.fetchMasterDischargeTable()
133 .getTimeInterval().getStartTime();
129 } else { 134 } else {
130 gaugeName = ""; 135 gaugeName = "";
131 validSince = null; 136 validSince = null;
132 gaugeDatum = Double.NaN; 137 gaugeDatum = Double.NaN;
133 } 138 }
259 RangeAccess rangeAccess = new RangeAccess(flys); 264 RangeAccess rangeAccess = new RangeAccess(flys);
260 double[] kms = rangeAccess.getKmRange(); 265 double[] kms = rangeAccess.getKmRange();
261 source.addMetaData("range", 266 source.addMetaData("range",
262 Formatter.getCalculationKm(context.getMeta()).format(kms[0])); 267 Formatter.getCalculationKm(context.getMeta()).format(kms[0]));
263 268
264 if (!(context.getContextValue(PNP) instanceof Number)) { 269 if (!"cm".equals(wUnit)) {
265 source.addMetaData("valid_since", ""); 270 source.addMetaData("valid_since", "");
266 source.addMetaData("calculation", Resources.getMsg( 271 source.addMetaData("calculation", Resources.getMsg(
267 locale, 272 locale,
268 PDF_HEADER_CALC_MODE, 273 PDF_HEADER_CALC_MODE,
269 "Computed Discharge")); 274 "Computed Discharge"));

http://dive4elements.wald.intevation.org