annotate flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/extreme/ExtremeCalculation.java @ 3877:00abcd3737f9

Some more little steps towards "Auslagerung extremer Wasserspiegellagen". flys-artifacts/trunk@5512 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 18 Sep 2012 18:36:52 +0000
parents d52c4ca93ffb
children 363445873737
rev   line source
3775
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.artifacts.model.extreme;
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
3 import de.intevation.flys.artifacts.access.ExtremeAccess;
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
4
3877
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
5 import de.intevation.flys.artifacts.math.fitting.Function;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
6 import de.intevation.flys.artifacts.math.fitting.FunctionFactory;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
7
3775
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
8 import de.intevation.flys.artifacts.model.Calculation;
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
9 import de.intevation.flys.artifacts.model.CalculationResult;
3877
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
10 import de.intevation.flys.artifacts.model.RangeWithValues;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
11 import de.intevation.flys.artifacts.model.RiverFactory;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
12 import de.intevation.flys.artifacts.model.WstValueTable;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
13 import de.intevation.flys.artifacts.model.WstValueTableFactory;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
14
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
15 import de.intevation.flys.model.River;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
16
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
17 import de.intevation.flys.utils.DoubleUtil;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
18
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
19 import java.util.List;
3775
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21 public class ExtremeCalculation
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22 extends Calculation
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23 {
3877
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
24 protected String river;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
25 protected String function;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
26 protected double from;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
27 protected double to;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
28 protected double step;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
29 protected double percent;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
30 protected List<RangeWithValues> ranges;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
31
3775
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
32 public ExtremeCalculation() {
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
33 }
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35 public ExtremeCalculation(ExtremeAccess access) {
3877
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
36 String river = access.getRiver();
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
37 String function = access.getFunction();
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
38 Double from = access.getFrom();
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
39 Double to = access.getTo();
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
40 Double step = access.getStep();
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
41 Double percent = access.getPercent();
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
42 List<RangeWithValues> ranges = access.getRanges();
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
43
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
44 if (river == null) {
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
45 // TODO: i18n
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
46 addProblem("extreme.no.river");
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
47 }
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
48
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
49 if (function == null) {
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
50 // TODO: i18n
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
51 addProblem("extreme.no.function");
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
52 }
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
53
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
54 if (from == null) {
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
55 // TODO: i18n
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
56 addProblem("extreme.no.from");
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
57 }
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
58
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
59 if (to == null) {
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
60 // TODO: i18n
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
61 addProblem("extreme.no.to");
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
62 }
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
63
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
64 if (step == null) {
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
65 // TODO: i18n
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
66 addProblem("extreme.no.step");
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
67 }
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
68
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
69 if (percent == null) {
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
70 // TODO: i18n
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
71 addProblem("extreme.no.percent");
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
72 }
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
73
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
74 if (ranges == null) {
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
75 // TODO: i18n
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
76 addProblem("extreme.no.ranges");
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
77 }
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
78
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
79 if (!hasProblems()) {
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
80 this.river = river;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
81 this.function = function;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
82 this.from = Math.min(from, to);
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
83 this.to = Math.max(from, to);
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
84 this.step = Math.max(0.001d, Math.abs(step)/1000d);
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
85 this.percent = Math.max(0d, Math.min(100d, percent));
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
86 this.ranges = ranges;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
87 }
3775
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
88 }
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
89
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
90 public CalculationResult calculate() {
3877
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
91
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
92 WstValueTable wst = null;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
93
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
94 River river = RiverFactory.getRiver(this.river);
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
95 if (river == null) {
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
96 // TODO: i18n
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
97 addProblem("extreme.no.such.river", this.river);
3775
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
98 }
3877
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
99 else {
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
100 wst = WstValueTableFactory.getTable(river);
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
101 if (wst == null) {
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
102 // TODO: i18n
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
103 addProblem("extreme.no.wst.table");
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
104 }
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
105 }
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
106
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
107 Function function =
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
108 FunctionFactory.getInstance().getFunction(this.function);
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
109 if (function == null) {
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
110 // TODO: i18n
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
111 addProblem("extreme.no.such.function", this.function);
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
112 }
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
113
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
114 return hasProblems()
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
115 ? new CalculationResult(this)
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
116 : innerCalculate(wst, function);
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
117 }
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
118
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
119 protected CalculationResult innerCalculate(
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
120 WstValueTable wst,
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
121 Function function
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
122 ) {
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
123 RangeWithValues range = null;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
124
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
125 KMs: for (double km = from; km <= to; km += step) {
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
126 double currentKm = DoubleUtil.round(km);
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
127
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
128 if (range == null || !range.inside(currentKm)) {
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
129 for (RangeWithValues r: ranges) {
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
130 if (r.inside(currentKm)) {
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
131 range = r;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
132 break;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
133 }
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
134 }
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
135 // TODO: i18n
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
136 addProblem(currentKm, "extreme.no.range");
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
137 continue KMs;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
138 }
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
139
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
140 double [][] wqs = wst.interpolateTabulated(currentKm);
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
141 if (wqs == null) {
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
142 // TODO: i18n
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
143 addProblem(currentKm, "extreme.no.raw.data");
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
144 continue;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
145 }
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
146
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
147 // XXX: This should not be necessary for model data.
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
148 if (!DoubleUtil.isValid(wqs)) {
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
149 // TODO: i18n
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
150 addProblem(currentKm, "extreme.invalid.data");
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
151 continue;
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
152 }
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
153 // TODO: Implement extraction of points for curve fitting.
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
154 // TODO: Implement curve fitting.
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
155 // TODO: Implement generating Curve object per km.
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
156 }
00abcd3737f9 Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3775
diff changeset
157
3775
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
158 ExtremeResult result = new ExtremeResult();
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
159 return new CalculationResult(result, this);
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
160 }
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
161 }
d52c4ca93ffb More infrastructure stuff for the "Auslagerung extremer Wasserspiegellagen".
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
162 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org