2303 |
02 Apr 14 |
olle |
1 |
/** |
2303 |
02 Apr 14 |
olle |
$Id $ |
2303 |
02 Apr 14 |
olle |
3 |
|
2303 |
02 Apr 14 |
olle |
Copyright (C) 2014 Olle MÃ¥nsson |
2303 |
02 Apr 14 |
olle |
5 |
|
2303 |
02 Apr 14 |
olle |
This file is part of the LabEnv extension for BASE. |
2303 |
02 Apr 14 |
olle |
Available at http://baseplugins.thep.lu.se/ |
2303 |
02 Apr 14 |
olle |
BASE main site: http://base.thep.lu.se/ |
2303 |
02 Apr 14 |
olle |
9 |
----------------------------------------------------------- |
2303 |
02 Apr 14 |
olle |
10 |
|
2303 |
02 Apr 14 |
olle |
This is free software; you can redistribute it and/or |
2303 |
02 Apr 14 |
olle |
modify it under the terms of the GNU General Public License |
2303 |
02 Apr 14 |
olle |
as published by the Free Software Foundation; either version 3 |
2303 |
02 Apr 14 |
olle |
of the License, or (at your option) any later version. |
2303 |
02 Apr 14 |
olle |
15 |
|
2303 |
02 Apr 14 |
olle |
The software is distributed in the hope that it will be useful, |
2303 |
02 Apr 14 |
olle |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
2303 |
02 Apr 14 |
olle |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2303 |
02 Apr 14 |
olle |
GNU General Public License for more details. |
2303 |
02 Apr 14 |
olle |
20 |
|
2303 |
02 Apr 14 |
olle |
You should have received a copy of the GNU General Public License |
2303 |
02 Apr 14 |
olle |
along with BASE. If not, see <http://www.gnu.org/licenses/>. |
2303 |
02 Apr 14 |
olle |
23 |
|
2303 |
02 Apr 14 |
olle |
24 |
*/ |
2303 |
02 Apr 14 |
olle |
25 |
package net.sf.basedb.labenv.util; |
2303 |
02 Apr 14 |
olle |
26 |
|
2303 |
02 Apr 14 |
olle |
27 |
import java.util.ArrayList; |
2303 |
02 Apr 14 |
olle |
28 |
import java.util.Date; |
2303 |
02 Apr 14 |
olle |
29 |
import java.util.List; |
2303 |
02 Apr 14 |
olle |
30 |
|
4519 |
13 Jun 17 |
nicklas |
31 |
import org.hibernate.query.Query; |
4519 |
13 Jun 17 |
nicklas |
32 |
import org.hibernate.ScrollableResults; |
3017 |
08 Dec 14 |
nicklas |
33 |
import org.hibernate.Session; |
2328 |
08 Apr 14 |
olle |
34 |
import org.slf4j.Logger; |
2328 |
08 Apr 14 |
olle |
35 |
import org.slf4j.LoggerFactory; |
2303 |
02 Apr 14 |
olle |
36 |
|
2303 |
02 Apr 14 |
olle |
37 |
import net.sf.basedb.labenv.LabEnvironment; |
2303 |
02 Apr 14 |
olle |
38 |
import net.sf.basedb.labenv.LabEnvironmentConfiguration; |
2303 |
02 Apr 14 |
olle |
39 |
import net.sf.basedb.labenv.dao.LabEnvironmentData; |
2303 |
02 Apr 14 |
olle |
40 |
import net.sf.basedb.labenv.dao.LabSensorConfig; |
3017 |
08 Dec 14 |
nicklas |
41 |
import net.sf.basedb.labenv.entity.SensorData; |
3018 |
09 Dec 14 |
nicklas |
42 |
import net.sf.basedb.util.Values; |
3018 |
09 Dec 14 |
nicklas |
43 |
import net.sf.basedb.core.DbControl; |
4519 |
13 Jun 17 |
nicklas |
44 |
import net.sf.basedb.core.hibernate.TypeWrapper; |
2303 |
02 Apr 14 |
olle |
45 |
|
2303 |
02 Apr 14 |
olle |
46 |
public class LabEnvironmentStorageUtil |
2303 |
02 Apr 14 |
olle |
47 |
{ |
2328 |
08 Apr 14 |
olle |
48 |
private static final Logger log = LoggerFactory.getLogger(LabEnvironmentStorageUtil.class); |
2303 |
02 Apr 14 |
olle |
49 |
|
3018 |
09 Dec 14 |
nicklas |
50 |
public LabEnvironmentStorageUtil() |
3021 |
09 Dec 14 |
nicklas |
51 |
{} |
3021 |
09 Dec 14 |
nicklas |
52 |
|
3018 |
09 Dec 14 |
nicklas |
53 |
public void updateLabEnvDb(Session session, int sensorNumber, Date time, double temperature, double humidity) |
3018 |
09 Dec 14 |
nicklas |
54 |
{ |
3017 |
08 Dec 14 |
nicklas |
55 |
try |
3017 |
08 Dec 14 |
nicklas |
56 |
{ |
3017 |
08 Dec 14 |
nicklas |
57 |
SensorData data = new SensorData(); |
3017 |
08 Dec 14 |
nicklas |
58 |
data.setSensorNumber(sensorNumber); |
3017 |
08 Dec 14 |
nicklas |
59 |
data.setTime(time); |
3017 |
08 Dec 14 |
nicklas |
60 |
data.setTemperature((float)temperature); |
3017 |
08 Dec 14 |
nicklas |
61 |
data.setHumidity((float)humidity); |
3017 |
08 Dec 14 |
nicklas |
62 |
Object id = session.save(data); |
3017 |
08 Dec 14 |
nicklas |
63 |
log.debug("Database upd: id = " + id + " sensorNumber = " + sensorNumber + " time = " + time + " temperature = " + temperature + " humidity = " + humidity); |
2303 |
02 Apr 14 |
olle |
64 |
} |
3018 |
09 Dec 14 |
nicklas |
65 |
catch (RuntimeException ex) |
2303 |
02 Apr 14 |
olle |
66 |
{ |
3018 |
09 Dec 14 |
nicklas |
67 |
ex.printStackTrace(System.out); |
2303 |
02 Apr 14 |
olle |
68 |
} |
3018 |
09 Dec 14 |
nicklas |
69 |
} |
3018 |
09 Dec 14 |
nicklas |
70 |
|
3018 |
09 Dec 14 |
nicklas |
71 |
public List<LabEnvironmentData> queryLabEnvDb(Integer sensorNumber, Date startTime, Date endTime) |
3018 |
09 Dec 14 |
nicklas |
72 |
{ |
2303 |
02 Apr 14 |
olle |
// Get lab environment configuration from singleton LabEnvironment |
2326 |
07 Apr 14 |
olle |
74 |
LabEnvironment labEnvironment = LabEnvironment.getInstance(); |
2303 |
02 Apr 14 |
olle |
75 |
LabEnvironmentConfiguration labEnvironmentConfiguration = labEnvironment.getLabEnvironmentConfiguration(); |
3018 |
09 Dec 14 |
nicklas |
// Prepare list for storing result |
2303 |
02 Apr 14 |
olle |
77 |
List<LabEnvironmentData> labEnvironmentDataList = new ArrayList<LabEnvironmentData>(); |
3018 |
09 Dec 14 |
nicklas |
78 |
|
3018 |
09 Dec 14 |
nicklas |
79 |
DbControl dc = null; |
3018 |
09 Dec 14 |
nicklas |
80 |
Session session = null; |
4519 |
13 Jun 17 |
nicklas |
81 |
ScrollableResults rs = null; |
3018 |
09 Dec 14 |
nicklas |
82 |
try |
3018 |
09 Dec 14 |
nicklas |
83 |
{ |
3018 |
09 Dec 14 |
nicklas |
84 |
dc = labEnvironment.newDbControl(); |
3018 |
09 Dec 14 |
nicklas |
85 |
session = labEnvironment.newSession(dc); |
3018 |
09 Dec 14 |
nicklas |
86 |
|
3018 |
09 Dec 14 |
nicklas |
// Construct query string |
3018 |
09 Dec 14 |
nicklas |
88 |
String queryString = "SELECT sd FROM SensorData sd"; |
3018 |
09 Dec 14 |
nicklas |
89 |
|
3018 |
09 Dec 14 |
nicklas |
// Add filters as needed |
3018 |
09 Dec 14 |
nicklas |
91 |
List<String> filters = new ArrayList<String>(); |
3018 |
09 Dec 14 |
nicklas |
92 |
if (sensorNumber != null) filters.add("sd.sensorNumber = :sensorNumber"); |
3018 |
09 Dec 14 |
nicklas |
93 |
if (startTime != null) filters.add("sd.time >= :startTime"); |
3018 |
09 Dec 14 |
nicklas |
94 |
if (endTime != null) filters.add("sd.time <= :endTime"); |
3018 |
09 Dec 14 |
nicklas |
95 |
if (filters.size() > 0) |
3018 |
09 Dec 14 |
nicklas |
96 |
{ |
3018 |
09 Dec 14 |
nicklas |
97 |
queryString += " WHERE " + Values.getString(filters, " AND ", true); |
3018 |
09 Dec 14 |
nicklas |
98 |
} |
3018 |
09 Dec 14 |
nicklas |
99 |
|
3018 |
09 Dec 14 |
nicklas |
// Sort by time |
3018 |
09 Dec 14 |
nicklas |
101 |
queryString += " ORDER BY sd.time"; |
3018 |
09 Dec 14 |
nicklas |
102 |
|
3018 |
09 Dec 14 |
nicklas |
103 |
if (log.isDebugEnabled()) |
3018 |
09 Dec 14 |
nicklas |
104 |
{ |
3018 |
09 Dec 14 |
nicklas |
105 |
log.debug("queryString: " + queryString); |
3018 |
09 Dec 14 |
nicklas |
106 |
log.debug("sensorNumber: "+ sensorNumber); |
3018 |
09 Dec 14 |
nicklas |
107 |
log.debug("startTime: "+ startTime); |
3018 |
09 Dec 14 |
nicklas |
108 |
log.debug("endTime: "+ endTime); |
3018 |
09 Dec 14 |
nicklas |
109 |
} |
3018 |
09 Dec 14 |
nicklas |
110 |
|
4519 |
13 Jun 17 |
nicklas |
111 |
Query<SensorData> query = session.createQuery(queryString, SensorData.class); |
4519 |
13 Jun 17 |
nicklas |
112 |
if (sensorNumber != null) query.setParameter("sensorNumber", sensorNumber, TypeWrapper.H_INTEGER); |
4519 |
13 Jun 17 |
nicklas |
113 |
if (startTime != null) query.setParameter("startTime", startTime, TypeWrapper.H_TIMESTAMP); |
4519 |
13 Jun 17 |
nicklas |
114 |
if (endTime != null) query.setParameter("endTime", endTime, TypeWrapper.H_TIMESTAMP); |
4519 |
13 Jun 17 |
nicklas |
115 |
|
4519 |
13 Jun 17 |
nicklas |
116 |
rs = query.scroll(); |
4519 |
13 Jun 17 |
nicklas |
117 |
while (rs.next()) |
3018 |
09 Dec 14 |
nicklas |
118 |
{ |
4519 |
13 Jun 17 |
nicklas |
119 |
SensorData sd = (SensorData)rs.get()[0]; |
3018 |
09 Dec 14 |
nicklas |
120 |
LabSensorConfig labSensorConfig = labEnvironmentConfiguration.findByNumber(sd.getSensorNumber()); |
3018 |
09 Dec 14 |
nicklas |
121 |
LabEnvironmentData labEnvironmentData = new LabEnvironmentData(sd, labSensorConfig); |
3018 |
09 Dec 14 |
nicklas |
122 |
labEnvironmentDataList.add(labEnvironmentData); |
3018 |
09 Dec 14 |
nicklas |
123 |
} |
3018 |
09 Dec 14 |
nicklas |
124 |
} |
3018 |
09 Dec 14 |
nicklas |
125 |
finally |
3018 |
09 Dec 14 |
nicklas |
126 |
{ |
4519 |
13 Jun 17 |
nicklas |
127 |
|
4519 |
13 Jun 17 |
nicklas |
128 |
if (rs != null) rs.close(); |
4519 |
13 Jun 17 |
nicklas |
129 |
if (session != null) session.close(); |
3018 |
09 Dec 14 |
nicklas |
130 |
if (dc != null) dc.close(); |
3018 |
09 Dec 14 |
nicklas |
131 |
} |
3018 |
09 Dec 14 |
nicklas |
132 |
return labEnvironmentDataList; |
3018 |
09 Dec 14 |
nicklas |
133 |
} |
2303 |
02 Apr 14 |
olle |
134 |
} |