Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/QualityMeasurementFactory.java @ 3758:75bc96dd9d82
Added depth parameter to bed quality data.
flys-artifacts/trunk@5456 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Thu, 13 Sep 2012 13:43:00 +0000 |
parents | 912a398968b6 |
children | 728ecd2afa20 |
comparison
equal
deleted
inserted
replaced
3757:e8a90a5ce624 | 3758:75bc96dd9d82 |
---|---|
9 import org.hibernate.transform.BasicTransformerAdapter; | 9 import org.hibernate.transform.BasicTransformerAdapter; |
10 import org.hibernate.type.StandardBasicTypes; | 10 import org.hibernate.type.StandardBasicTypes; |
11 | 11 |
12 import de.intevation.flys.backend.SedDBSessionHolder; | 12 import de.intevation.flys.backend.SedDBSessionHolder; |
13 | 13 |
14 | |
14 public class QualityMeasurementFactory { | 15 public class QualityMeasurementFactory { |
15 | 16 |
16 private static final String SQL_BED_MEASUREMENT = | 17 private static final String SQL_BED_MEASUREMENT = |
17 "SELECT st.km as km," + | 18 "SELECT st.km as km," + |
18 " st.datum as date,"+ | 19 " st.datum as date," + |
19 " sa.d10 as d10," + | 20 " sp.tiefevon as depth1" + |
20 " sa.d16 as d16," + | 21 " sp.tiefebis as depth2" + |
21 " sa.d20 as d20," + | 22 " sa.d10 as d10," + |
22 " sa.d25 as d25," + | 23 " sa.d16 as d16," + |
23 " sa.d30 as d30," + | 24 " sa.d20 as d20," + |
24 " sa.d40 as d40," + | 25 " sa.d25 as d25," + |
25 " sa.d50 as d50," + | 26 " sa.d30 as d30," + |
26 " sa.d60 as d60," + | 27 " sa.d40 as d40," + |
27 " sa.d70 as d70," + | 28 " sa.d50 as d50," + |
28 " sa.d75 as d75," + | 29 " sa.d60 as d60," + |
29 " sa.d80 as d80," + | 30 " sa.d70 as d70," + |
30 " sa.d84 as d84," + | 31 " sa.d75 as d75," + |
31 " sa.d90 as d90," + | 32 " sa.d80 as d80," + |
32 " sa.dmin as dmin," + | 33 " sa.d84 as d84," + |
33 " sa.dmax as dmax " + | 34 " sa.d90 as d90," + |
35 " sa.dmin as dmin," + | |
36 " sa.dmax as dmax " + | |
34 "FROM sohltest st" + | 37 "FROM sohltest st" + |
35 " JOIN station sn ON sn.stationid = st.stationid" + | 38 " JOIN station sn ON sn.stationid = st.stationid" + |
36 " JOIN gewaesser gw ON gw.gewaesserid = sn.gewaesserid" + | 39 " JOIN gewaesser gw ON gw.gewaesserid = sn.gewaesserid" + |
37 " JOIN sohlprobe sp ON sp.sohltestid = st.sohltestid" + | 40 " JOIN sohlprobe sp ON sp.sohltestid = st.sohltestid" + |
38 " JOIN siebanalyse sa ON sa.sohlprobeid = sp.sohlprobeid" + | 41 " JOIN siebanalyse sa ON sa.sohlprobeid = sp.sohlprobeid " + |
39 "WHERE gw.name = :name AND " + | 42 "WHERE gw.name = :name AND " + |
40 " st.km IS NOT NULL AND " + | 43 " st.km IS NOT NULL AND " + |
41 " st.km BETWEEN :from - 0.001 AND :to + 0.001 AND" + | 44 " st.km BETWEEN :from - 0.001 AND :to + 0.001 AND" + |
42 " st.datum BETWEEN :start AND :end"; | 45 " st.datum BETWEEN :start AND :end"; |
43 | 46 |
44 private static final String SQL_BEDLOAD_MEASUREMENT = | 47 private static final String SQL_BEDLOAD_MEASUREMENT = |
45 "SELECT m.km as km," + | 48 "SELECT m.km as km," + |
46 " m.datum as date,"+ | 49 " m.datum as date," + |
47 " m.d10 as d10," + | 50 " m.d10 as d10," + |
48 " m.d16 as d16," + | 51 " m.d16 as d16," + |
49 " m.d20 as d20," + | 52 " m.d20 as d20," + |
50 " m.d25 as d25," + | 53 " m.d25 as d25," + |
51 " m.d30 as d30," + | 54 " m.d30 as d30," + |
59 " m.d90 as d90," + | 62 " m.d90 as d90," + |
60 " m.dmin as dmin," + | 63 " m.dmin as dmin," + |
61 " m.dmax as dmax " + | 64 " m.dmax as dmax " + |
62 "FROM messung m" + | 65 "FROM messung m" + |
63 " JOIN station sn ON sn.stationid = m.stationid" + | 66 " JOIN station sn ON sn.stationid = m.stationid" + |
64 " JOIN gewaesser gw ON gw.gewaesserid = sn.gewaesserid" + | 67 " JOIN gewaesser gw ON gw.gewaesserid = sn.gewaesserid " + |
65 "WHERE gw.name = :name AND " + | 68 "WHERE gw.name = :name AND " + |
66 " m.km IS NOT NULL AND " + | 69 " m.km IS NOT NULL AND " + |
67 " m.km BETWEEN :from - 0.001 AND :to + 0.001 AND" + | 70 " m.km BETWEEN :from - 0.001 AND :to + 0.001 AND" + |
68 " m.datum BETWEEN :start AND :end"; | 71 " m.datum BETWEEN :start AND :end"; |
69 | 72 |
70 public static final class QualityMeasurementResultTransformer | 73 public static final class QualityMeasurementResultTransformer |
71 extends BasicTransformerAdapter | 74 extends BasicTransformerAdapter { |
72 { | 75 |
73 public static QualityMeasurementResultTransformer INSTANCE = | 76 public static QualityMeasurementResultTransformer INSTANCE = new QualityMeasurementResultTransformer(); |
74 new QualityMeasurementResultTransformer(); | |
75 | 77 |
76 public QualityMeasurementResultTransformer() { | 78 public QualityMeasurementResultTransformer() { |
77 } | 79 } |
78 | 80 |
79 @Override | 81 @Override |
80 public Object transformTuple(Object [] tuple, String [] aliases) { | 82 public Object transformTuple(Object[] tuple, String[] aliases) { |
81 Map<String, Double> map = new HashMap<String, Double>(); | 83 Map<String, Double> map = new HashMap<String, Double>(); |
82 double km = 0; | 84 double km = 0; |
83 Date d = null; | 85 Date d = null; |
86 double depth1 = 0; | |
87 double depth2 = 0; | |
84 for (int i = 0; i < tuple.length; ++i) { | 88 for (int i = 0; i < tuple.length; ++i) { |
85 if (tuple[i] != null) { | 89 if (tuple[i] != null) { |
86 if (aliases[i].equals("km")) { | 90 if (aliases[i].equals("km")) { |
87 km = ((Number)tuple[i]).doubleValue(); | 91 km = ((Number) tuple[i]).doubleValue(); |
88 } | 92 } |
89 else if (aliases[i].equals("date")) { | 93 else if (aliases[i].equals("date")) { |
90 d = (Date)tuple[i]; | 94 d = (Date) tuple[i]; |
95 } | |
96 else if (aliases[i].equals("depth1")) { | |
97 depth1 = ((Number) tuple[i]).doubleValue(); | |
98 } | |
99 else if (aliases[i].equals("depth2")) { | |
100 depth2 = ((Number) tuple[i]).doubleValue(); | |
91 } | 101 } |
92 else { | 102 else { |
93 map.put(aliases[i], (Double)tuple[i]); | 103 map.put(aliases[i], (Double) tuple[i]); |
94 } | 104 } |
95 } | 105 } |
96 } | 106 } |
97 return new QualityMeasurement(km, d, map); | 107 return new QualityMeasurement(km, d, depth1, depth2, map); |
98 } | 108 } |
99 } // class BasicTransformerAdapter | 109 } // class BasicTransformerAdapter |
100 | 110 |
101 private QualityMeasurementFactory() { | 111 private QualityMeasurementFactory() { |
102 } | 112 } |
109 Date start, | 119 Date start, |
110 Date end, | 120 Date end, |
111 String statement | 121 String statement |
112 ) { | 122 ) { |
113 SQLQuery query = session.createSQLQuery(statement) | 123 SQLQuery query = session.createSQLQuery(statement) |
114 .addScalar("km", StandardBasicTypes.DOUBLE) | 124 .addScalar("km", StandardBasicTypes.DOUBLE) |
115 .addScalar("date", StandardBasicTypes.DATE) | 125 .addScalar("date", StandardBasicTypes.DATE) |
116 .addScalar("d10", StandardBasicTypes.DOUBLE) | 126 .addScalar("d10", StandardBasicTypes.DOUBLE) |
117 .addScalar("d16", StandardBasicTypes.DOUBLE) | 127 .addScalar("d16", StandardBasicTypes.DOUBLE) |
118 .addScalar("d20", StandardBasicTypes.DOUBLE) | 128 .addScalar("d20", StandardBasicTypes.DOUBLE) |
119 .addScalar("d25", StandardBasicTypes.DOUBLE) | 129 .addScalar("d25", StandardBasicTypes.DOUBLE) |
120 .addScalar("d30", StandardBasicTypes.DOUBLE) | 130 .addScalar("d30", StandardBasicTypes.DOUBLE) |
121 .addScalar("d40", StandardBasicTypes.DOUBLE) | 131 .addScalar("d40", StandardBasicTypes.DOUBLE) |
122 .addScalar("d50", StandardBasicTypes.DOUBLE) | 132 .addScalar("d50", StandardBasicTypes.DOUBLE) |
123 .addScalar("d60", StandardBasicTypes.DOUBLE) | 133 .addScalar("d60", StandardBasicTypes.DOUBLE) |
124 .addScalar("d70", StandardBasicTypes.DOUBLE) | 134 .addScalar("d70", StandardBasicTypes.DOUBLE) |
125 .addScalar("d75", StandardBasicTypes.DOUBLE) | 135 .addScalar("d75", StandardBasicTypes.DOUBLE) |
126 .addScalar("d80", StandardBasicTypes.DOUBLE) | 136 .addScalar("d80", StandardBasicTypes.DOUBLE) |
127 .addScalar("d84", StandardBasicTypes.DOUBLE) | 137 .addScalar("d84", StandardBasicTypes.DOUBLE) |
128 .addScalar("d90", StandardBasicTypes.DOUBLE) | 138 .addScalar("d90", StandardBasicTypes.DOUBLE) |
129 .addScalar("dmin", StandardBasicTypes.DOUBLE) | 139 .addScalar("dmin", StandardBasicTypes.DOUBLE) |
130 .addScalar("dmax", StandardBasicTypes.DOUBLE); | 140 .addScalar("dmax", StandardBasicTypes.DOUBLE); |
141 | |
142 if (statement.equals(SQL_BED_MEASUREMENT)) { | |
143 query.addScalar("depth1", StandardBasicTypes.DOUBLE); | |
144 query.addScalar("depth2", StandardBasicTypes.DOUBLE); | |
145 } | |
131 | 146 |
132 query.setString("name", river); | 147 query.setString("name", river); |
133 query.setDouble("from", from); | 148 query.setDouble("from", from); |
134 query.setDouble("to", to); | 149 query.setDouble("to", to); |
135 query.setDate("start", start); | 150 query.setDate("start", start); |
136 query.setDate("end", end); | 151 query.setDate("end", end); |
137 | 152 |
138 query.setResultTransformer( | 153 query.setResultTransformer( |
139 QualityMeasurementResultTransformer.INSTANCE); | 154 QualityMeasurementResultTransformer.INSTANCE); |
144 public static QualityMeasurements getBedMeasurements( | 159 public static QualityMeasurements getBedMeasurements( |
145 String river, | 160 String river, |
146 double from, | 161 double from, |
147 double to, | 162 double to, |
148 Date start, | 163 Date start, |
149 Date end | 164 Date end) { |
150 ) { | |
151 Session session = SedDBSessionHolder.HOLDER.get(); | 165 Session session = SedDBSessionHolder.HOLDER.get(); |
152 try { | 166 try { |
153 return load( | 167 return load(session, river, from, to, start, end, |
154 session, | 168 SQL_BED_MEASUREMENT); |
155 river, | |
156 from, | |
157 to, | |
158 start, | |
159 end, | |
160 SQL_BED_MEASUREMENT); | |
161 } | 169 } |
162 finally { | 170 finally { |
163 session.close(); | 171 session.close(); |
164 } | 172 } |
165 } | 173 } |
168 String river, | 176 String river, |
169 double from, | 177 double from, |
170 double to, | 178 double to, |
171 Date start, | 179 Date start, |
172 Date end | 180 Date end |
173 ){ | 181 ) { |
174 Session session = SedDBSessionHolder.HOLDER.get(); | 182 Session session = SedDBSessionHolder.HOLDER.get(); |
175 try { | 183 try { |
176 return load( | 184 return load( |
177 session, | 185 session, |
178 river, | 186 river, |