Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/exports/ComputedDischargeCurveExporter.java @ 8362:839032ac1523
Purge obsolete representation of reference system for discharge tables.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Wed, 01 Oct 2014 15:54:47 +0200 |
parents | e4606eae8ea5 |
children | 3508d625092f |
comparison
equal
deleted
inserted
replaced
8361:c494f9a61490 | 8362:839032ac1523 |
---|---|
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 | 51 |
51 /** | 52 /** |
52 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> | 53 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
53 */ | 54 */ |
54 public class ComputedDischargeCurveExporter extends AbstractExporter { | 55 public class ComputedDischargeCurveExporter extends AbstractExporter { |
74 | 75 |
75 protected String wUnit; | 76 protected String wUnit; |
76 protected String riverUnit; | 77 protected String riverUnit; |
77 protected String gaugeName; | 78 protected String gaugeName; |
78 protected double gaugeDatum; | 79 protected double gaugeDatum; |
79 protected boolean isCalculated; | |
80 protected Date validSince; | 80 protected Date validSince; |
81 | 81 |
82 public ComputedDischargeCurveExporter() { | 82 public ComputedDischargeCurveExporter() { |
83 data = new ArrayList<WQKms>(); | 83 data = new ArrayList<WQKms>(); |
84 } | 84 } |
102 log.warn("Can't add data for export. Unkown data type " + | 102 log.warn("Can't add data for export. Unkown data type " + |
103 d.getClass().getName()); | 103 d.getClass().getName()); |
104 return; | 104 return; |
105 } | 105 } |
106 if (referenceWQ != null) { | 106 if (referenceWQ != null) { |
107 wUnit = referenceWQ.getWUnit(); | |
108 D4EArtifact arti = (D4EArtifact)master; | 107 D4EArtifact arti = (D4EArtifact)master; |
109 River river = RiverUtils.getRiver(arti); | 108 River river = RiverUtils.getRiver(arti); |
110 riverUnit = river.getWstUnit().getName(); | 109 riverUnit = river.getWstUnit().getName(); |
111 RangeAccess rangeAccess = new RangeAccess(arti); | 110 RangeAccess rangeAccess = new RangeAccess(arti); |
112 | 111 |
113 double[] kms = rangeAccess.getKmRange(); | 112 double[] kms = rangeAccess.getKmRange(); |
114 | 113 |
115 Gauge gauge = river.determineGaugeByPosition(kms[0]); | 114 Gauge gauge = river.determineGaugeByPosition(kms[0]); |
116 log.debug("Kms 0: " + kms[0]); | 115 if (context.getContextValue(PNP) instanceof Number) { |
117 if (Math.abs(kms[0] - gauge.getStation().doubleValue()) < 1e-4) { | 116 wUnit = "cm"; |
118 gaugeName = gauge.getName(); | 117 gaugeName = gauge.getName(); |
119 gaugeDatum = gauge.getDatum().doubleValue(); | 118 gaugeDatum = gauge.getDatum().doubleValue(); |
120 | |
121 // Assumption is that values at a gauge that are in the meter | |
122 // reference system are calculated. | |
123 isCalculated = wUnit.equals("m"); | |
124 | 119 |
125 // Now convert the data to cm because we are at gauge | 120 // Now convert the data to cm because we are at gauge |
126 List<WQKms> newData = new ArrayList<WQKms>(); | 121 List<WQKms> newData = new ArrayList<WQKms>(); |
127 for (WQKms d2: data) { | 122 for (WQKms d2: data) { |
128 newData.add(new WQKms(d2.getKms(), | 123 newData.add(new WQKms(d2.getKms(), |
129 WQ.getFixedWQforExportAtGauge((WQ)d2, gauge.getDatum()))); | 124 WQ.getFixedWQforExportAtGauge((WQ)d2, gauge.getDatum()))); |
130 } | 125 } |
131 data = newData; // All hail the garbage collector | 126 data = newData; // All hail the garbage collector |
132 wUnit = "cm"; | |
133 | 127 |
134 validSince = gauge.fetchMasterDischargeTable().getTimeInterval().getStartTime(); | 128 validSince = gauge.fetchMasterDischargeTable().getTimeInterval().getStartTime(); |
135 } else { | 129 } else { |
136 gaugeName = ""; | 130 gaugeName = ""; |
137 validSince = null; | 131 validSince = null; |
258 Locale locale = Resources.getLocale(meta); | 252 Locale locale = Resources.getLocale(meta); |
259 DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale); | 253 DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale); |
260 | 254 |
261 source.addMetaData("date", df.format(new Date())); | 255 source.addMetaData("date", df.format(new Date())); |
262 | 256 |
263 source.addMetaData("wUnit", wUnit.equals("m") ? riverUnit : "cm"); | 257 source.addMetaData("wUnit", wUnit.equals("cm") ? "cm" : riverUnit); |
264 | 258 |
265 RangeAccess rangeAccess = new RangeAccess(flys); | 259 RangeAccess rangeAccess = new RangeAccess(flys); |
266 double[] kms = rangeAccess.getKmRange(); | 260 double[] kms = rangeAccess.getKmRange(); |
267 source.addMetaData("range", | 261 source.addMetaData("range", |
268 Formatter.getCalculationKm(context.getMeta()).format(kms[0])); | 262 Formatter.getCalculationKm(context.getMeta()).format(kms[0])); |
269 | 263 |
270 // When w is in meter we are not at a gauge so our values | 264 if (!(context.getContextValue(PNP) instanceof Number)) { |
271 // must be calculated | |
272 if (isCalculated || wUnit.equals("m")) { | |
273 source.addMetaData("valid_since", ""); | 265 source.addMetaData("valid_since", ""); |
274 source.addMetaData("calculation", Resources.getMsg( | 266 source.addMetaData("calculation", Resources.getMsg( |
275 locale, | 267 locale, |
276 PDF_HEADER_CALC_MODE, | 268 PDF_HEADER_CALC_MODE, |
277 "Computed Discharge")); | 269 "Computed Discharge")); |