Mercurial > dive4elements > river
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 : |