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 :

http://dive4elements.wald.intevation.org