Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/DischargeTables.java @ 311:ea3a438a7021
Backend access: Static methods are using the SessionHolder, too.
flys-artifacts/trunk@1694 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 14 Apr 2011 13:15:16 +0000 |
parents | 03362976fa0f |
children | 94c176fdcb89 |
comparison
equal
deleted
inserted
replaced
310:6d2c8915e22c | 311:ea3a438a7021 |
---|---|
5 import java.util.HashMap; | 5 import java.util.HashMap; |
6 import java.util.Arrays; | 6 import java.util.Arrays; |
7 | 7 |
8 import java.io.Serializable; | 8 import java.io.Serializable; |
9 | 9 |
10 import org.hibernate.SessionFactory; | |
11 import org.hibernate.Session; | 10 import org.hibernate.Session; |
12 import org.hibernate.Query; | 11 import org.hibernate.Query; |
13 | 12 |
14 import org.apache.log4j.Logger; | 13 import org.apache.log4j.Logger; |
15 | |
16 import de.intevation.flys.backend.SessionFactoryProvider; | |
17 | 14 |
18 import de.intevation.flys.model.Gauge; | 15 import de.intevation.flys.model.Gauge; |
19 import de.intevation.flys.model.DischargeTable; | 16 import de.intevation.flys.model.DischargeTable; |
20 import de.intevation.flys.model.DischargeTableValue; | 17 import de.intevation.flys.model.DischargeTableValue; |
21 | 18 |
54 } | 51 } |
55 | 52 |
56 protected Map<String, double [][]> loadValues(double scale) { | 53 protected Map<String, double [][]> loadValues(double scale) { |
57 Map<String, double [][]> values = new HashMap<String, double [][]>(); | 54 Map<String, double [][]> values = new HashMap<String, double [][]>(); |
58 | 55 |
59 SessionFactory sf = SessionFactoryProvider.getSessionFactory(); | 56 Session session = SessionHolder.HOLDER.get(); |
60 Session session = sf.openSession(); | |
61 | 57 |
62 try { | 58 Query gaugeQuery = session.createQuery( |
63 Query gaugeQuery = session.createQuery( | 59 "from Gauge where name=:gauge and river.name=:river"); |
64 "from Gauge where name=:gauge and river.name=:river"); | 60 gaugeQuery.setParameter("river", riverName); |
65 gaugeQuery.setParameter("river", riverName); | |
66 | 61 |
67 for (String gaugeName: gaugeNames) { | 62 for (String gaugeName: gaugeNames) { |
68 gaugeQuery.setParameter("gauge", gaugeName); | 63 gaugeQuery.setParameter("gauge", gaugeName); |
69 List<Gauge> gauges = gaugeQuery.list(); | 64 List<Gauge> gauges = gaugeQuery.list(); |
70 if (gauges.isEmpty()) { | 65 if (gauges.isEmpty()) { |
71 log.warn( | 66 log.warn( |
72 "no gauge '"+gaugeName+"' at river '"+riverName+"'"); | 67 "no gauge '"+gaugeName+"' at river '"+riverName+"'"); |
73 continue; | 68 continue; |
74 } | 69 } |
75 Gauge gauge = gauges.get(0); | 70 Gauge gauge = gauges.get(0); |
76 | 71 |
77 List<DischargeTable> tables = gauge.getDischargeTables(); | 72 List<DischargeTable> tables = gauge.getDischargeTables(); |
78 | 73 |
79 if (tables.isEmpty()) { | 74 if (tables.isEmpty()) { |
80 log.warn( | 75 log.warn( |
81 "no discharge table for gauge '" + gaugeName + "'"); | 76 "no discharge table for gauge '" + gaugeName + "'"); |
82 continue; | 77 continue; |
83 } | |
84 | |
85 // TODO: Filter by time interval | |
86 DischargeTable table = tables.get(0); | |
87 | |
88 List<DischargeTableValue> dtvs = | |
89 table.getDischargeTableValues(); | |
90 | |
91 double [][] vs = new double[2][dtvs.size()]; | |
92 | |
93 int idx = 0; | |
94 for (DischargeTableValue dtv: dtvs) { | |
95 vs[0][idx] = dtv.getQ().doubleValue() * scale; | |
96 vs[1][idx] = dtv.getW().doubleValue() * scale; | |
97 ++idx; | |
98 } | |
99 | |
100 values.put(gaugeName, vs); | |
101 } | 78 } |
102 | 79 |
103 return values; | 80 // TODO: Filter by time interval |
81 DischargeTable table = tables.get(0); | |
82 | |
83 List<DischargeTableValue> dtvs = | |
84 table.getDischargeTableValues(); | |
85 | |
86 double [][] vs = new double[2][dtvs.size()]; | |
87 | |
88 int idx = 0; | |
89 for (DischargeTableValue dtv: dtvs) { | |
90 vs[0][idx] = dtv.getQ().doubleValue() * scale; | |
91 vs[1][idx] = dtv.getW().doubleValue() * scale; | |
92 ++idx; | |
93 } | |
94 | |
95 values.put(gaugeName, vs); | |
104 } | 96 } |
105 finally { | 97 |
106 session.close(); | 98 return values; |
107 } | |
108 } | 99 } |
109 } | 100 } |
110 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 101 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |