comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/QualityMeasurementFactory.java @ 3769:728ecd2afa20

Implemented bed quality calculation in minfo module. flys-artifacts/trunk@5474 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Raimund Renkert <raimund.renkert@intevation.de>
date Fri, 14 Sep 2012 14:20:42 +0000
parents 75bc96dd9d82
children a5f65e8983be
comparison
equal deleted inserted replaced
3768:00aafe1fedd7 3769:728ecd2afa20
2 2
3 import java.util.Date; 3 import java.util.Date;
4 import java.util.HashMap; 4 import java.util.HashMap;
5 import java.util.Map; 5 import java.util.Map;
6 6
7 import org.apache.log4j.Logger;
7 import org.hibernate.SQLQuery; 8 import org.hibernate.SQLQuery;
8 import org.hibernate.Session; 9 import org.hibernate.Session;
9 import org.hibernate.transform.BasicTransformerAdapter; 10 import org.hibernate.transform.BasicTransformerAdapter;
10 import org.hibernate.type.StandardBasicTypes; 11 import org.hibernate.type.StandardBasicTypes;
11 12
12 import de.intevation.flys.backend.SedDBSessionHolder; 13 import de.intevation.flys.backend.SedDBSessionHolder;
13 14
14 15
15 public class QualityMeasurementFactory { 16 public class QualityMeasurementFactory {
16 17
18 private static Logger logger = Logger.getLogger(QualityMeasurementFactory.class);
19
17 private static final String SQL_BED_MEASUREMENT = 20 private static final String SQL_BED_MEASUREMENT =
18 "SELECT st.km as km," + 21 "SELECT st.km as km," +
19 " st.datum as date," + 22 " st.datum as datum," +
20 " sp.tiefevon as depth1" + 23 " sp.tiefevon as depth1," +
21 " sp.tiefebis as depth2" + 24 " sp.tiefebis as depth2," +
22 " sa.d10 as d10," + 25 " sa.d10 as d10," +
23 " sa.d16 as d16," + 26 " sa.d16 as d16," +
24 " sa.d20 as d20," + 27 " sa.d20 as d20," +
25 " sa.d25 as d25," + 28 " sa.d25 as d25," +
26 " sa.d30 as d30," + 29 " sa.d30 as d30," +
32 " sa.d80 as d80," + 35 " sa.d80 as d80," +
33 " sa.d84 as d84," + 36 " sa.d84 as d84," +
34 " sa.d90 as d90," + 37 " sa.d90 as d90," +
35 " sa.dmin as dmin," + 38 " sa.dmin as dmin," +
36 " sa.dmax as dmax " + 39 " sa.dmax as dmax " +
37 "FROM sohltest st" + 40 "FROM sohltest st " +
38 " JOIN station sn ON sn.stationid = st.stationid" + 41 " JOIN station sn ON sn.stationid = st.stationid " +
39 " JOIN gewaesser gw ON gw.gewaesserid = sn.gewaesserid" + 42 " JOIN gewaesser gw ON gw.gewaesserid = sn.gewaesserid " +
40 " JOIN sohlprobe sp ON sp.sohltestid = st.sohltestid" + 43 " JOIN sohlprobe sp ON sp.sohltestid = st.sohltestid " +
41 " JOIN siebanalyse sa ON sa.sohlprobeid = sp.sohlprobeid " + 44 " JOIN siebanalyse sa ON sa.sohlprobeid = sp.sohlprobeid " +
42 "WHERE gw.name = :name AND " + 45 "WHERE gw.name = :name AND " +
43 " st.km IS NOT NULL AND " + 46 " st.km IS NOT NULL AND " +
44 " st.km BETWEEN :from - 0.001 AND :to + 0.001 AND" + 47 " sp.tiefevon IS NOT NULL AND " +
48 " sp.tiefebis IS NOT NULL AND " +
49 " st.km BETWEEN :from - 0.001 AND :to + 0.001 AND " +
45 " st.datum BETWEEN :start AND :end"; 50 " st.datum BETWEEN :start AND :end";
46 51
47 private static final String SQL_BEDLOAD_MEASUREMENT = 52 private static final String SQL_BEDLOAD_MEASUREMENT =
48 "SELECT m.km as km," + 53 "SELECT m.km as km," +
49 " m.datum as date," + 54 " m.datum as datum," +
50 " m.d10 as d10," + 55 " m.d10 as d10," +
51 " m.d16 as d16," + 56 " m.d16 as d16," +
52 " m.d20 as d20," + 57 " m.d20 as d20," +
53 " m.d25 as d25," + 58 " m.d25 as d25," +
54 " m.d30 as d30," + 59 " m.d30 as d30," +
81 @Override 86 @Override
82 public Object transformTuple(Object[] tuple, String[] aliases) { 87 public Object transformTuple(Object[] tuple, String[] aliases) {
83 Map<String, Double> map = new HashMap<String, Double>(); 88 Map<String, Double> map = new HashMap<String, Double>();
84 double km = 0; 89 double km = 0;
85 Date d = null; 90 Date d = null;
86 double depth1 = 0; 91 double depth1 = Double.NaN;
87 double depth2 = 0; 92 double depth2 = Double.NaN;
88 for (int i = 0; i < tuple.length; ++i) { 93 for (int i = 0; i < tuple.length; ++i) {
89 if (tuple[i] != null) { 94 if (tuple[i] != null) {
90 if (aliases[i].equals("km")) { 95 if (aliases[i].equals("km")) {
91 km = ((Number) tuple[i]).doubleValue(); 96 km = ((Number) tuple[i]).doubleValue();
92 } 97 }
93 else if (aliases[i].equals("date")) { 98 else if (aliases[i].equals("datum")) {
94 d = (Date) tuple[i]; 99 d = (Date) tuple[i];
95 } 100 }
96 else if (aliases[i].equals("depth1")) { 101 else if (aliases[i].equals("depth1")) {
97 depth1 = ((Number) tuple[i]).doubleValue(); 102 depth1 = ((Number) tuple[i]).doubleValue();
98 } 103 }
99 else if (aliases[i].equals("depth2")) { 104 else if (aliases[i].equals("depth2")) {
100 depth2 = ((Number) tuple[i]).doubleValue(); 105 depth2 = ((Number) tuple[i]).doubleValue();
101 } 106 }
102 else { 107 else {
103 map.put(aliases[i], (Double) tuple[i]); 108 map.put(aliases[i], ((Double) tuple[i])/1000);
104 } 109 }
105 } 110 }
106 } 111 }
107 return new QualityMeasurement(km, d, depth1, depth2, map); 112 return new QualityMeasurement(km, d, depth1, depth2, map);
108 } 113 }
120 Date end, 125 Date end,
121 String statement 126 String statement
122 ) { 127 ) {
123 SQLQuery query = session.createSQLQuery(statement) 128 SQLQuery query = session.createSQLQuery(statement)
124 .addScalar("km", StandardBasicTypes.DOUBLE) 129 .addScalar("km", StandardBasicTypes.DOUBLE)
125 .addScalar("date", StandardBasicTypes.DATE) 130 .addScalar("datum", StandardBasicTypes.DATE)
126 .addScalar("d10", StandardBasicTypes.DOUBLE) 131 .addScalar("d10", StandardBasicTypes.DOUBLE)
127 .addScalar("d16", StandardBasicTypes.DOUBLE) 132 .addScalar("d16", StandardBasicTypes.DOUBLE)
128 .addScalar("d20", StandardBasicTypes.DOUBLE) 133 .addScalar("d20", StandardBasicTypes.DOUBLE)
129 .addScalar("d25", StandardBasicTypes.DOUBLE) 134 .addScalar("d25", StandardBasicTypes.DOUBLE)
130 .addScalar("d30", StandardBasicTypes.DOUBLE) 135 .addScalar("d30", StandardBasicTypes.DOUBLE)
166 try { 171 try {
167 return load(session, river, from, to, start, end, 172 return load(session, river, from, to, start, end,
168 SQL_BED_MEASUREMENT); 173 SQL_BED_MEASUREMENT);
169 } 174 }
170 finally { 175 finally {
171 session.close(); 176 //session.close();
172 } 177 }
173 } 178 }
174 179
175 public static QualityMeasurements getBedloadMeasurements( 180 public static QualityMeasurements getBedloadMeasurements(
176 String river, 181 String river,

http://dive4elements.wald.intevation.org