comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/QualityMeasurementFactory.java @ 3756:912a398968b6

The factory for minfo bed quality calculation can load bedload and bed data from seddb now. flys-artifacts/trunk@5451 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Raimund Renkert <raimund.renkert@intevation.de>
date Thu, 13 Sep 2012 10:49:49 +0000
parents 9c555ce5ca50
children 75bc96dd9d82
comparison
equal deleted inserted replaced
3755:9c555ce5ca50 3756:912a398968b6
11 11
12 import de.intevation.flys.backend.SedDBSessionHolder; 12 import de.intevation.flys.backend.SedDBSessionHolder;
13 13
14 public class QualityMeasurementFactory { 14 public class QualityMeasurementFactory {
15 15
16 private static final String SQL_MEASUREMENT = 16 private static final String SQL_BED_MEASUREMENT =
17 "SELECT st.km as km," + 17 "SELECT st.km as km," +
18 " st.datum as date,"+ 18 " st.datum as date,"+
19 " sa.d10 as d10," + 19 " sa.d10 as d10," +
20 " sa.d16 as d16," + 20 " sa.d16 as d16," +
21 " sa.d20 as d20," + 21 " sa.d20 as d20," +
38 " JOIN siebanalyse sa ON sa.sohlprobeid = sp.sohlprobeid" + 38 " JOIN siebanalyse sa ON sa.sohlprobeid = sp.sohlprobeid" +
39 "WHERE gw.name = :name AND " + 39 "WHERE gw.name = :name AND " +
40 " st.km IS NOT NULL AND " + 40 " st.km IS NOT NULL AND " +
41 " st.km BETWEEN :from - 0.001 AND :to + 0.001 AND" + 41 " st.km BETWEEN :from - 0.001 AND :to + 0.001 AND" +
42 " st.datum BETWEEN :start AND :end"; 42 " st.datum BETWEEN :start AND :end";
43
44 private static final String SQL_BEDLOAD_MEASUREMENT =
45 "SELECT m.km as km," +
46 " m.datum as date,"+
47 " m.d10 as d10," +
48 " m.d16 as d16," +
49 " m.d20 as d20," +
50 " m.d25 as d25," +
51 " m.d30 as d30," +
52 " m.d40 as d40," +
53 " m.d50 as d50," +
54 " m.d60 as d60," +
55 " m.d70 as d70," +
56 " m.d75 as d75," +
57 " m.d80 as d80," +
58 " m.d84 as d84," +
59 " m.d90 as d90," +
60 " m.dmin as dmin," +
61 " m.dmax as dmax " +
62 "FROM messung m" +
63 " JOIN station sn ON sn.stationid = m.stationid" +
64 " JOIN gewaesser gw ON gw.gewaesserid = sn.gewaesserid" +
65 "WHERE gw.name = :name AND " +
66 " m.km IS NOT NULL AND " +
67 " m.km BETWEEN :from - 0.001 AND :to + 0.001 AND" +
68 " m.datum BETWEEN :start AND :end";
43 69
44 public static final class QualityMeasurementResultTransformer 70 public static final class QualityMeasurementResultTransformer
45 extends BasicTransformerAdapter 71 extends BasicTransformerAdapter
46 { 72 {
47 public static QualityMeasurementResultTransformer INSTANCE = 73 public static QualityMeasurementResultTransformer INSTANCE =
79 Session session, 105 Session session,
80 String river, 106 String river,
81 double from, 107 double from,
82 double to, 108 double to,
83 Date start, 109 Date start,
84 Date end 110 Date end,
111 String statement
85 ) { 112 ) {
86 SQLQuery query = session.createSQLQuery(SQL_MEASUREMENT) 113 SQLQuery query = session.createSQLQuery(statement)
87 .addScalar("km", StandardBasicTypes.DOUBLE) 114 .addScalar("km", StandardBasicTypes.DOUBLE)
88 .addScalar("date", StandardBasicTypes.DATE) 115 .addScalar("date", StandardBasicTypes.DATE)
89 .addScalar("d10", StandardBasicTypes.DOUBLE) 116 .addScalar("d10", StandardBasicTypes.DOUBLE)
90 .addScalar("d16", StandardBasicTypes.DOUBLE) 117 .addScalar("d16", StandardBasicTypes.DOUBLE)
91 .addScalar("d20", StandardBasicTypes.DOUBLE) 118 .addScalar("d20", StandardBasicTypes.DOUBLE)
112 QualityMeasurementResultTransformer.INSTANCE); 139 QualityMeasurementResultTransformer.INSTANCE);
113 140
114 return new QualityMeasurements(query.list()); 141 return new QualityMeasurements(query.list());
115 } 142 }
116 143
117 public static QualityMeasurements getMeasurements( 144 public static QualityMeasurements getBedMeasurements(
118 String river, 145 String river,
119 double from, 146 double from,
120 double to, 147 double to,
121 Date start, 148 Date start,
122 Date end 149 Date end
123 ) { 150 ) {
124 Session session = SedDBSessionHolder.HOLDER.get(); 151 Session session = SedDBSessionHolder.HOLDER.get();
125 try { 152 try {
126 return load(session, river, from, to, start, end); 153 return load(
154 session,
155 river,
156 from,
157 to,
158 start,
159 end,
160 SQL_BED_MEASUREMENT);
161 }
162 finally {
163 session.close();
164 }
165 }
166
167 public static QualityMeasurements getBedloadMeasurements(
168 String river,
169 double from,
170 double to,
171 Date start,
172 Date end
173 ){
174 Session session = SedDBSessionHolder.HOLDER.get();
175 try {
176 return load(
177 session,
178 river,
179 from,
180 to,
181 start,
182 end,
183 SQL_BEDLOAD_MEASUREMENT);
127 } 184 }
128 finally { 185 finally {
129 session.close(); 186 session.close();
130 } 187 }
131 } 188 }

http://dive4elements.wald.intevation.org