comparison artifacts/src/main/java/org/dive4elements/river/artifacts/model/sq/SQ.java @ 6780:b8f94e865875

S/Q relation: Part I of 'faking' fitting linear data. S/Qs can now be subclassed and processed through views. TODO: Add knob to setup a linear data path.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 08 Aug 2013 12:17:03 +0200
parents af13ceeba52a
children 84929f882fa2
comparison
equal deleted inserted replaced
6779:8e5adc56385c 6780:b8f94e865875
9 package org.dive4elements.river.artifacts.model.sq; 9 package org.dive4elements.river.artifacts.model.sq;
10 10
11 import java.io.Serializable; 11 import java.io.Serializable;
12 12
13 13
14 /** Represents S/Q pairs. They are immutable! */
14 public class SQ implements Serializable { 15 public class SQ implements Serializable {
16
17 public interface Factory {
18 SQ createSQ(double s, double q);
19 }
20
21 public static final Factory SQ_FACTORY = new Factory() {
22 @Override
23 public SQ createSQ(double s, double q) {
24 return new SQ(s, q);
25 }
26 };
27
28 public interface View {
29 double getS(SQ sq);
30 double getQ(SQ sq);
31 }
32
33 public static final View SQ_VIEW = new View() {
34 @Override
35 public double getS(SQ sq) {
36 return sq.getS();
37 }
38
39 @Override
40 public double getQ(SQ sq) {
41 return sq.getQ();
42 }
43 };
15 44
16 protected double s; 45 protected double s;
17 protected double q; 46 protected double q;
18 47
19 public SQ() { 48 public SQ() {
27 56
28 public double getS() { 57 public double getS() {
29 return s; 58 return s;
30 } 59 }
31 60
32 public void setS(double s) {
33 this.s = s;
34 }
35
36
37 public double getQ() { 61 public double getQ() {
38 return q; 62 return q;
39 }
40
41 public void setQ(double q) {
42 this.q = q;
43 } 63 }
44 64
45 public boolean isValid() { 65 public boolean isValid() {
46 return !Double.isNaN(s) && !Double.isNaN(q); 66 return !Double.isNaN(s) && !Double.isNaN(q);
47 } 67 }

http://dive4elements.wald.intevation.org