annotate flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WWAxisTypes.java @ 4187:21f4e4b79121

Refactor GaugeDischargeCurveFacet to be able to set a facet name For adding another output of the GaugeDischargeCurveArtifact it is necessary to provide to facet instances with different names. Therefore the GaugeDischargeCurveFacet is extended to set the facet name in the constructor.
author Björn Ricks <bjoern.ricks@intevation.de>
date Fri, 19 Oct 2012 13:25:49 +0200
parents 388cd6fc451b
children
rev   line source
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
1 package de.intevation.flys.artifacts.model;
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
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
3 import de.intevation.flys.artifacts.math.Function;
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
4 import de.intevation.flys.artifacts.math.Identity;
2410
388cd6fc451b 'Reduzierte Bezugslinien' make the code more self explaining.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2407
diff changeset
5 import de.intevation.flys.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