annotate flys-artifacts/src/main/java/org/dive4elements/river/artifacts/model/WWAxisTypes.java @ 5831:bd047b71ab37

Repaired internal references
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 12:06:39 +0200
parents flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WWAxisTypes.java@388cd6fc451b
children
rev   line source
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 2410
diff changeset
1 package org.dive4elements.river.artifacts.model;
2256
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 2410
diff changeset
3 import org.dive4elements.river.artifacts.math.Function;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 2410
diff changeset
4 import org.dive4elements.river.artifacts.math.Identity;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 2410
diff changeset
5 import org.dive4elements.river.artifacts.math.AddScaleFunction;
2256
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
6
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
7 public class WWAxisTypes
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
8 {
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
9 protected boolean inCm1;
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10 protected boolean inCm2;
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 public WWAxisTypes() {
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13 inCm1 = inCm2 = true;
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14 }
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 public WWAxisTypes(WW ww) {
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17 this();
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18 classify(ww);
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 }
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21 public void classify(WW ww) {
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22 if (!ww.startAtGauge()) inCm1 = false;
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23 if (!ww.endAtGauge()) inCm2 = false;
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24 }
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25
2407
dce0cc856357 'Bezugslinien': Added axis labels matching the displayed data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2401
diff changeset
26 public boolean getInCm(int index) {
dce0cc856357 'Bezugslinien': Added axis labels matching the displayed data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2401
diff changeset
27 switch (index) {
dce0cc856357 'Bezugslinien': Added axis labels matching the displayed data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2401
diff changeset
28 case 0: return inCm1;
dce0cc856357 'Bezugslinien': Added axis labels matching the displayed data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2401
diff changeset
29 case 1: return inCm2;
dce0cc856357 'Bezugslinien': Added axis labels matching the displayed data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2401
diff changeset
30 default: return false;
dce0cc856357 'Bezugslinien': Added axis labels matching the displayed data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2401
diff changeset
31 }
dce0cc856357 'Bezugslinien': Added axis labels matching the displayed data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2401
diff changeset
32 }
dce0cc856357 'Bezugslinien': Added axis labels matching the displayed data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2401
diff changeset
33
2256
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34 public boolean getInCm1() {
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35 return inCm1;
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
36 }
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
37
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
38 public void setInCm1(boolean inCm1) {
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39 this.inCm1 = inCm1;
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
40 }
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
42 public boolean getInCm2() {
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
43 return inCm2;
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
44 }
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
45
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
46 public void setInCm2(boolean inCm2) {
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
47 this.inCm2 = inCm2;
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
48 }
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
49
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
50 public WW.ApplyFunctionIterator transform(WW ww) {
2278
08bb95e1fc41 "Bezugslinienverfahren": Fetch axis types from call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
51 return transform(ww, false);
08bb95e1fc41 "Bezugslinienverfahren": Fetch axis types from call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
52 }
08bb95e1fc41 "Bezugslinienverfahren": Fetch axis types from call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
53
2410
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2407
diff changeset
54 private static final double zero(Double d) {
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2407
diff changeset
55 return d == null ? 0 : d;
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2407
diff changeset
56 }
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2407
diff changeset
57
2278
08bb95e1fc41 "Bezugslinienverfahren": Fetch axis types from call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
58 public WW.ApplyFunctionIterator transform(WW ww, boolean normalized) {
08bb95e1fc41 "Bezugslinienverfahren": Fetch axis types from call context.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2256
diff changeset
59
2281
08811a335baf "Bezugslinienverfahren": Do normalisation of reference curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2278
diff changeset
60 Function function1;
08811a335baf "Bezugslinienverfahren": Do normalisation of reference curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2278
diff changeset
61 Function function2;
2256
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
62
2281
08811a335baf "Bezugslinienverfahren": Do normalisation of reference curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2278
diff changeset
63 if (!normalized) {
08811a335baf "Bezugslinienverfahren": Do normalisation of reference curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2278
diff changeset
64 function1 = inCm1
2410
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2407
diff changeset
65 ? new AddScaleFunction(-ww.getStartDatum(), 100d)
2281
08811a335baf "Bezugslinienverfahren": Do normalisation of reference curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2278
diff changeset
66 : Identity.IDENTITY;
08811a335baf "Bezugslinienverfahren": Do normalisation of reference curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2278
diff changeset
67
08811a335baf "Bezugslinienverfahren": Do normalisation of reference curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2278
diff changeset
68 function2 = inCm2
2410
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2407
diff changeset
69 ? new AddScaleFunction(-ww.getEndDatum(), 100d)
2281
08811a335baf "Bezugslinienverfahren": Do normalisation of reference curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2278
diff changeset
70 : Identity.IDENTITY;
08811a335baf "Bezugslinienverfahren": Do normalisation of reference curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2278
diff changeset
71 }
08811a335baf "Bezugslinienverfahren": Do normalisation of reference curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2278
diff changeset
72 else {
08811a335baf "Bezugslinienverfahren": Do normalisation of reference curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2278
diff changeset
73 double minW1 = ww.minWs();
08811a335baf "Bezugslinienverfahren": Do normalisation of reference curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2278
diff changeset
74 double minW2 = ww.minWs2();
08811a335baf "Bezugslinienverfahren": Do normalisation of reference curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2278
diff changeset
75 double scale1 = inCm1 ? 100d : 1d;
08811a335baf "Bezugslinienverfahren": Do normalisation of reference curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2278
diff changeset
76 double scale2 = inCm2 ? 100d : 1d;
2410
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2407
diff changeset
77 function1 = new AddScaleFunction(-minW1, scale1);
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2407
diff changeset
78 function2 = new AddScaleFunction(-minW2, scale2);
2281
08811a335baf "Bezugslinienverfahren": Do normalisation of reference curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2278
diff changeset
79 }
08811a335baf "Bezugslinienverfahren": Do normalisation of reference curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2278
diff changeset
80
2256
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
81 return new WW.ApplyFunctionIterator(ww, function1, function2);
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
82 }
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
83 }
dd93a8e1377a First steps to serve the data in cm if we are are gauges only.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
84 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org