annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/sq/LogSQ.java @ 6821:1c3b2f7dc9a4

S/Q relation: Added forgotten class.
author Sascha L. Teichmann <teichmann@intevation.de>
date Wed, 14 Aug 2013 11:01:16 +0200
parents
children 84929f882fa2
rev   line source
6821
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
3 *
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
7 */
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
8
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
9 package org.dive4elements.river.artifacts.model.sq;
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
10
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
11 public class LogSQ extends SQ {
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
12
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
13 public static final View LOG_SQ_VIEW = new View() {
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
14 @Override
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
15 public double getS(SQ sq) {
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
16 return ((LogSQ)sq).getLogS();
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
17 }
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
18
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
19 @Override
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
20 public double getQ(SQ sq) {
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
21 return ((LogSQ)sq).getLogQ();
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
22 }
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
23 };
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
24
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
25 public static final Factory LOG_SQ_FACTORY = new Factory() {
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
26 @Override
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
27 public SQ createSQ(double s, double q) {
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
28 return new LogSQ(s, q);
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
29 }
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
30 };
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
31
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
32 protected double logS;
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
33 protected double logQ;
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
34
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
35 protected boolean logTrans;
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
36
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
37 public LogSQ() {
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
38 }
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
39
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
40 public LogSQ(double s, double q) {
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
41 super(s, q);
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
42 }
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
43
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
44 /** important: We cannot process negative s/q. */
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
45 @Override
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
46 public boolean isValid() {
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
47 return super.isValid() && s > 0d && q > 0d;
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
48 }
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
49
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
50 protected void ensureLogTrans() {
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
51 if (!logTrans) {
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
52 logTrans = true;
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
53 logS = Math.log(s);
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
54 logQ = Math.log(q);
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
55 }
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
56 }
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
57
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
58 public double getLogS() {
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
59 ensureLogTrans();
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
60 return logS;
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
61 }
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
62
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
63 public double getLogQ() {
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
64 ensureLogTrans();
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
65 return logQ;
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
66 }
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
67 }
1c3b2f7dc9a4 S/Q relation: Added forgotten class.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
68

http://dive4elements.wald.intevation.org