comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/DischargeTables.java @ 328:07e642030172

Discharge tables: Added convenience constructors/methods to ease the access to the master discharge table of a gauge. flys-artifacts/trunk@1726 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 19 Apr 2011 10:32:31 +0000
parents 94c176fdcb89
children 0b2358bc716d
comparison
equal deleted inserted replaced
327:e09634fbf6bc 328:07e642030172
18 import de.intevation.flys.model.DischargeTableValue; 18 import de.intevation.flys.model.DischargeTableValue;
19 19
20 public class DischargeTables 20 public class DischargeTables
21 implements Serializable 21 implements Serializable
22 { 22 {
23 public static final double DEFAULT_SCALE = 100.0;
24
25 public static final int MASTER = 0;
26
23 private static Logger log = Logger.getLogger(DischargeTables.class); 27 private static Logger log = Logger.getLogger(DischargeTables.class);
24 28
25 protected List<String> gaugeNames; 29 protected List<String> gaugeNames;
26 30
27 protected String riverName; 31 protected String riverName;
28 32
29 protected double scale; 33 protected double scale;
30 34
35 protected int kind;
36
31 protected Map<String, double [][]> values; 37 protected Map<String, double [][]> values;
32 38
33 public DischargeTables() { 39 public DischargeTables() {
34 } 40 }
35 41
36 public DischargeTables(String riverName, String [] gaugeNames) { 42 public DischargeTables(String riverName, String gaugeName) {
37 this(riverName, Arrays.asList(gaugeNames)); 43 this(riverName, gaugeName, MASTER);
38 } 44 }
39 45
40 public DischargeTables(String riverName, List<String> gaugeNames) { 46 public DischargeTables(String riverName, String gaugeName, int kind) {
47 this(riverName, new String [] { gaugeName }, kind);
48 }
49
50 public DischargeTables(String riverName, String [] gaugeNames) {
51 this(riverName, gaugeNames, MASTER);
52 }
53
54 public DischargeTables(String riverName, String [] gaugeNames, int kind) {
55 this(riverName, Arrays.asList(gaugeNames), kind);
56 }
57
58 public DischargeTables(
59 String riverName,
60 List<String> gaugeNames,
61 int kind
62 ) {
41 scale = Double.NaN; 63 scale = Double.NaN;
64 this.kind = kind;
42 this.riverName = riverName; 65 this.riverName = riverName;
43 this.gaugeNames = gaugeNames; 66 this.gaugeNames = gaugeNames;
67 }
68
69 public double [][] getFirstTable() {
70 return getFirstTable(DEFAULT_SCALE);
71 }
72
73 public double [][] getFirstTable(double scale) {
74 Map<String, double [][]> values = getValues(scale);
75 for (double [][] table: values.values()) {
76 return table;
77 }
78 return null;
79 }
80
81 public Map<String, double [][]> getValues() {
82 return getValues(DEFAULT_SCALE);
44 } 83 }
45 84
46 public Map<String, double [][]> getValues(double scale) { 85 public Map<String, double [][]> getValues(double scale) {
47 if (values == null || scale != this.scale) { 86 if (values == null || scale != this.scale) {
48 values = loadValues(scale); 87 values = loadValues(scale);
55 Map<String, double [][]> values = new HashMap<String, double [][]>(); 94 Map<String, double [][]> values = new HashMap<String, double [][]>();
56 95
57 Session session = SessionHolder.HOLDER.get(); 96 Session session = SessionHolder.HOLDER.get();
58 97
59 Query gaugeQuery = session.createQuery( 98 Query gaugeQuery = session.createQuery(
60 "from Gauge where name=:gauge and river.name=:river"); 99 "from Gauge where name=:gauge and river.name=:river and kind=:kind");
61 gaugeQuery.setParameter("river", riverName); 100 gaugeQuery.setParameter("river", riverName);
101 gaugeQuery.setInteger("kind", kind);
62 102
63 for (String gaugeName: gaugeNames) { 103 for (String gaugeName: gaugeNames) {
64 gaugeQuery.setParameter("gauge", gaugeName); 104 gaugeQuery.setParameter("gauge", gaugeName);
65 List<Gauge> gauges = gaugeQuery.list(); 105 List<Gauge> gauges = gaugeQuery.list();
66 if (gauges.isEmpty()) { 106 if (gauges.isEmpty()) {

http://dive4elements.wald.intevation.org