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,

http://dive4elements.wald.intevation.org