comparison artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadDataCalculation.java @ 8053:72760ca2fc2b

Sediment load: dispatch calculation modes.
author Sascha L. Teichmann <teichmann@intevation.de>
date Fri, 18 Jul 2014 11:58:59 +0200
parents 1dae69eff79d
children cd35b76f1ef8
comparison
equal deleted inserted replaced
8052:1dae69eff79d 8053:72760ca2fc2b
11 import java.util.Set; 11 import java.util.Set;
12 12
13 import org.dive4elements.river.artifacts.access.SedimentLoadAccess; 13 import org.dive4elements.river.artifacts.access.SedimentLoadAccess;
14 import org.dive4elements.river.artifacts.model.Calculation; 14 import org.dive4elements.river.artifacts.model.Calculation;
15 import org.dive4elements.river.artifacts.model.CalculationResult; 15 import org.dive4elements.river.artifacts.model.CalculationResult;
16 import org.dive4elements.river.artifacts.model.RiverFactory;
16 import org.apache.log4j.Logger; 17 import org.apache.log4j.Logger;
17 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadData; 18 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadData;
18 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadData.Value; 19 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadData.Value;
19 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadData.Station; 20 import org.dive4elements.river.artifacts.model.minfo.SedimentLoadData.Station;
21 import org.dive4elements.river.model.River;
22 import org.dive4elements.river.utils.DoubleUtil;
20 23
21 public class SedimentLoadDataCalculation 24 public class SedimentLoadDataCalculation
22 extends Calculation 25 extends Calculation
23 { 26 {
24 private static final Logger log = Logger 27 private static final Logger log = Logger
171 this.from = from; 174 this.from = from;
172 this.to = to; 175 this.to = to;
173 return internalCalculate(); 176 return internalCalculate();
174 } 177 }
175 178
176 return new CalculationResult(); 179 return new CalculationResult(this);
177 } 180 }
178 181
179 private CalculationResult internalCalculate() { 182 private CalculationResult internalCalculate() {
183 if ("year".equals(yearEpoch)) return calculateYears();
184 if ("epoch".equals(yearEpoch)) return calculateEpochs();
185 if ("off_epoch".equals(yearEpoch)) return calculateOffEpochs();
186
187 // TODO: i18n
188 addProblem("minfo.sediment.load.unknown.calc.mode");
189
190 return new CalculationResult(this);
191 }
192
193 private CalculationResult calculateYears() {
180 // TODO: Implement me! 194 // TODO: Implement me!
181 return null; 195 return null;
182 } 196 }
183 197
184 private static final double sum(double [] values) { 198 private CalculationResult calculateEpochs() {
185 double sum = 0.0; 199 // TODO: Implement me!
186 for (double value: values) { 200 return null;
187 sum += value; 201 }
188 } 202
189 return sum; 203 private CalculationResult calculateOffEpochs() {
204 // TODO: Implement me!
205 return null;
206 }
207
208 /** Figure out flow direction of river. */
209 private boolean isKmUp() {
210 River r = RiverFactory.getRiver(river);
211 if (r == null) {
212 addProblem("minfo.missing.river");
213 return true;
214 }
215 return r.getKmUp();
190 } 216 }
191 217
192 public double[][] sum( 218 public double[][] sum(
193 SedimentLoadData sld, 219 SedimentLoadData sld,
194 int [] grainFractions, 220 int [] grainFractions,
226 } else { 252 } else {
227 values[i] = sum.getSum(); 253 values[i] = sum.getSum();
228 } 254 }
229 } 255 }
230 result[0][j] = station.getStation(); 256 result[0][j] = station.getStation();
231 result[1][j] = sum(values); 257 result[1][j] = DoubleUtil.sum(values);
232 } 258 }
233 259
234 // TODO: Handle 'virtual' measument stations 'from' and 'to'. 260 // TODO: Handle 'virtual' measument stations 'from' and 'to'.
235 261
236 return result; 262 return result;

http://dive4elements.wald.intevation.org