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.servlet; |
2303 |
02 Apr 14 |
olle |
26 |
|
4527 |
20 Jun 17 |
nicklas |
27 |
import java.io.BufferedReader; |
2303 |
02 Apr 14 |
olle |
28 |
import java.io.IOException; |
4527 |
20 Jun 17 |
nicklas |
29 |
import java.io.InputStreamReader; |
2303 |
02 Apr 14 |
olle |
30 |
import java.io.PrintWriter; |
4527 |
20 Jun 17 |
nicklas |
31 |
import java.io.Reader; |
4527 |
20 Jun 17 |
nicklas |
32 |
import java.nio.charset.Charset; |
2303 |
02 Apr 14 |
olle |
33 |
import java.text.SimpleDateFormat; |
2303 |
02 Apr 14 |
olle |
34 |
import java.util.Date; |
2303 |
02 Apr 14 |
olle |
35 |
import java.util.List; |
2303 |
02 Apr 14 |
olle |
36 |
|
2303 |
02 Apr 14 |
olle |
37 |
import javax.servlet.ServletException; |
2303 |
02 Apr 14 |
olle |
38 |
import javax.servlet.http.HttpServlet; |
2303 |
02 Apr 14 |
olle |
39 |
import javax.servlet.http.HttpServletRequest; |
2303 |
02 Apr 14 |
olle |
40 |
import javax.servlet.http.HttpServletResponse; |
2303 |
02 Apr 14 |
olle |
41 |
|
2303 |
02 Apr 14 |
olle |
42 |
import net.sf.basedb.core.Application; |
2415 |
09 May 14 |
olle |
43 |
import net.sf.basedb.core.DbControl; |
2303 |
02 Apr 14 |
olle |
44 |
import net.sf.basedb.core.SessionControl; |
2415 |
09 May 14 |
olle |
45 |
import net.sf.basedb.core.User; |
2303 |
02 Apr 14 |
olle |
46 |
import net.sf.basedb.labenv.LabEnvironment; |
2303 |
02 Apr 14 |
olle |
47 |
import net.sf.basedb.labenv.LabEnvironmentConfiguration; |
2303 |
02 Apr 14 |
olle |
48 |
import net.sf.basedb.labenv.converter.StringToDateConverter; |
2303 |
02 Apr 14 |
olle |
49 |
import net.sf.basedb.labenv.dao.LabEnvironmentData; |
2415 |
09 May 14 |
olle |
50 |
import net.sf.basedb.labenv.dao.LabSensorAlarmConfig; |
2424 |
14 May 14 |
olle |
51 |
import net.sf.basedb.labenv.dao.LabSensorAlarmUserConfig; |
2303 |
02 Apr 14 |
olle |
52 |
import net.sf.basedb.labenv.dao.LabSensorConfig; |
2303 |
02 Apr 14 |
olle |
53 |
import net.sf.basedb.labenv.util.LabEnvironmentStorageUtil; |
2303 |
02 Apr 14 |
olle |
54 |
import net.sf.basedb.labenv.util.LabSensorUtil; |
2303 |
02 Apr 14 |
olle |
55 |
import net.sf.basedb.util.Values; |
2303 |
02 Apr 14 |
olle |
56 |
import net.sf.basedb.util.error.ThrowableUtil; |
2303 |
02 Apr 14 |
olle |
57 |
import net.sf.basedb.util.formatter.DateFormatter; |
2303 |
02 Apr 14 |
olle |
58 |
|
2303 |
02 Apr 14 |
olle |
59 |
import org.json.simple.JSONObject; |
4527 |
20 Jun 17 |
nicklas |
60 |
import org.json.simple.parser.JSONParser; |
2303 |
02 Apr 14 |
olle |
61 |
import org.json.simple.JSONArray; |
2303 |
02 Apr 14 |
olle |
62 |
|
2328 |
08 Apr 14 |
olle |
63 |
import org.slf4j.Logger; |
2328 |
08 Apr 14 |
olle |
64 |
import org.slf4j.LoggerFactory; |
2303 |
02 Apr 14 |
olle |
65 |
|
2303 |
02 Apr 14 |
olle |
66 |
public class LabEnvironmentServlet |
2303 |
02 Apr 14 |
olle |
67 |
extends HttpServlet |
2303 |
02 Apr 14 |
olle |
68 |
{ |
3013 |
05 Dec 14 |
nicklas |
69 |
|
3013 |
05 Dec 14 |
nicklas |
70 |
private static final long serialVersionUID = 7199127151554044351L; |
3013 |
05 Dec 14 |
nicklas |
71 |
|
2328 |
08 Apr 14 |
olle |
72 |
private static final Logger log = LoggerFactory.getLogger(LabEnvironmentServlet.class); |
2303 |
02 Apr 14 |
olle |
73 |
/** |
2303 |
02 Apr 14 |
olle |
Default converter for string values to date+time values: yyyyMMdd HHmm |
2303 |
02 Apr 14 |
olle |
@since 1.0 |
2303 |
02 Apr 14 |
olle |
76 |
*/ |
2303 |
02 Apr 14 |
olle |
77 |
public static final StringToDateConverter CONVERTER_STRING_TO_DATETIME = new StringToDateConverter(new SimpleDateFormat("yyyyMMdd HHmm")); |
2303 |
02 Apr 14 |
olle |
78 |
|
2303 |
02 Apr 14 |
olle |
79 |
|
2303 |
02 Apr 14 |
olle |
80 |
public LabEnvironmentServlet() |
2303 |
02 Apr 14 |
olle |
81 |
{} |
2303 |
02 Apr 14 |
olle |
82 |
|
2303 |
02 Apr 14 |
olle |
83 |
@Override |
2303 |
02 Apr 14 |
olle |
84 |
protected void doGet(HttpServletRequest req, HttpServletResponse resp) |
2303 |
02 Apr 14 |
olle |
85 |
throws ServletException, IOException |
2303 |
02 Apr 14 |
olle |
86 |
{ |
2303 |
02 Apr 14 |
olle |
87 |
String ID = req.getParameter("ID"); |
2303 |
02 Apr 14 |
olle |
88 |
String cmd = req.getParameter("cmd"); |
2303 |
02 Apr 14 |
olle |
89 |
resp.setContentType("application/json"); |
2303 |
02 Apr 14 |
olle |
90 |
resp.setCharacterEncoding("UTF-8"); |
2303 |
02 Apr 14 |
olle |
91 |
|
4519 |
13 Jun 17 |
nicklas |
92 |
final SessionControl sc = Application.getSessionControl(ID, null, req.getRemoteAddr(), true); |
2431 |
16 May 14 |
olle |
93 |
DbControl dc = sc.newDbControl(); |
2303 |
02 Apr 14 |
olle |
94 |
log.debug("Start " + new Date() + " cmd = " + cmd); |
2303 |
02 Apr 14 |
olle |
95 |
JSONObject json = new JSONObject(); |
2303 |
02 Apr 14 |
olle |
96 |
json.put("status", "ok"); |
2303 |
02 Apr 14 |
olle |
97 |
try |
2303 |
02 Apr 14 |
olle |
98 |
{ |
2401 |
06 May 14 |
olle |
99 |
if ("GetLabEnvDatabaseConfig".equals(cmd)) |
2303 |
02 Apr 14 |
olle |
100 |
{ |
2401 |
06 May 14 |
olle |
101 |
json = createLabEnvDatabaseConfig(json); |
2433 |
16 May 14 |
olle |
//log.debug("json = " + json); |
2401 |
06 May 14 |
olle |
103 |
} |
2401 |
06 May 14 |
olle |
104 |
else if ("GetLabSensorConfigList".equals(cmd)) |
2401 |
06 May 14 |
olle |
105 |
{ |
2431 |
16 May 14 |
olle |
106 |
json = createLabSensorConfigList(json, sc, dc); |
2433 |
16 May 14 |
olle |
//log.debug("json = " + json); |
2415 |
09 May 14 |
olle |
108 |
} |
4524 |
15 Jun 17 |
nicklas |
109 |
else if ("GetSensorInfo".equals(cmd)) |
2303 |
02 Apr 14 |
olle |
110 |
{ |
4524 |
15 Jun 17 |
nicklas |
111 |
LabEnvironment labEnvironment = LabEnvironment.getInstance(); |
4524 |
15 Jun 17 |
nicklas |
112 |
LabEnvironmentConfiguration labConfig = labEnvironment.getLabEnvironmentConfiguration(); |
4524 |
15 Jun 17 |
nicklas |
113 |
int timeoutInSeconds = labConfig.getTimeoutInSeconds(); |
4524 |
15 Jun 17 |
nicklas |
114 |
LabSensorUtil sensorUtil = new LabSensorUtil(timeoutInSeconds); |
2303 |
02 Apr 14 |
olle |
115 |
DateFormatter dateFormat = new DateFormatter("yyyy-MM-dd HH:mm:ss"); |
4524 |
15 Jun 17 |
nicklas |
116 |
|
4524 |
15 Jun 17 |
nicklas |
117 |
JSONArray jsonSensors = new JSONArray(); |
4524 |
15 Jun 17 |
nicklas |
118 |
for (LabSensorConfig sensorCfg : labConfig.getLabSensorConfigList()) |
2303 |
02 Apr 14 |
olle |
119 |
{ |
4524 |
15 Jun 17 |
nicklas |
120 |
JSONObject jsonSensor = new JSONObject(); |
4524 |
15 Jun 17 |
nicklas |
121 |
jsonSensor.put("id", sensorCfg.getNumber()); |
4524 |
15 Jun 17 |
nicklas |
122 |
jsonSensor.put("name", sensorCfg.getName()); |
4524 |
15 Jun 17 |
nicklas |
123 |
jsonSensor.put("url", sensorCfg.getUrl()); |
4525 |
15 Jun 17 |
nicklas |
124 |
jsonSensor.put("active", false); |
4524 |
15 Jun 17 |
nicklas |
125 |
|
4524 |
15 Jun 17 |
nicklas |
126 |
String startDate = Values.getStringOrNull(sensorCfg.getStartDate()); |
4524 |
15 Jun 17 |
nicklas |
// Get data from sensor |
4524 |
15 Jun 17 |
nicklas |
128 |
if (startDate != null) |
2303 |
02 Apr 14 |
olle |
129 |
{ |
4524 |
15 Jun 17 |
nicklas |
130 |
LabEnvironmentData sensorData = sensorUtil.createLabEnvironmentData(sensorCfg.getUrl(), true); |
4524 |
15 Jun 17 |
nicklas |
131 |
if (sensorData != null) |
2303 |
02 Apr 14 |
olle |
132 |
{ |
4525 |
15 Jun 17 |
nicklas |
133 |
jsonSensor.put("active", true); |
4524 |
15 Jun 17 |
nicklas |
134 |
jsonSensor.put("alternateName", sensorData.getSensorName()); |
4524 |
15 Jun 17 |
nicklas |
135 |
jsonSensor.put("serial", sensorData.getSerialNumber()); |
4524 |
15 Jun 17 |
nicklas |
136 |
jsonSensor.put("time", dateFormat.format(sensorData.getDateTime())); |
4524 |
15 Jun 17 |
nicklas |
137 |
jsonSensor.put("temperature", sensorData.getTemperature()); |
4524 |
15 Jun 17 |
nicklas |
138 |
jsonSensor.put("humidity", sensorData.getHumidity()); |
2303 |
02 Apr 14 |
olle |
139 |
} |
2303 |
02 Apr 14 |
olle |
140 |
} |
4527 |
20 Jun 17 |
nicklas |
141 |
|
4534 |
21 Jun 17 |
nicklas |
// Get alarms |
4534 |
21 Jun 17 |
nicklas |
143 |
List<LabSensorAlarmConfig> alarms = sensorCfg.getAlarmList(); |
4534 |
21 Jun 17 |
nicklas |
144 |
JSONArray jsonAlarms = new JSONArray(); |
4534 |
21 Jun 17 |
nicklas |
145 |
if (alarms != null) |
4534 |
21 Jun 17 |
nicklas |
146 |
{ |
4534 |
21 Jun 17 |
nicklas |
147 |
for (LabSensorAlarmConfig alarm: alarms) |
4534 |
21 Jun 17 |
nicklas |
148 |
{ |
4534 |
21 Jun 17 |
nicklas |
149 |
if (alarm.getAlarmText() != null) |
4534 |
21 Jun 17 |
nicklas |
150 |
{ |
4534 |
21 Jun 17 |
nicklas |
151 |
jsonAlarms.add(alarm.getAlarmText()); |
4534 |
21 Jun 17 |
nicklas |
152 |
} |
4534 |
21 Jun 17 |
nicklas |
153 |
} |
4534 |
21 Jun 17 |
nicklas |
154 |
} |
4534 |
21 Jun 17 |
nicklas |
155 |
jsonSensor.put("alarms", jsonAlarms); |
4534 |
21 Jun 17 |
nicklas |
156 |
|
4524 |
15 Jun 17 |
nicklas |
157 |
jsonSensors.add(jsonSensor); |
2303 |
02 Apr 14 |
olle |
158 |
} |
4524 |
15 Jun 17 |
nicklas |
159 |
json.put("sensors", jsonSensors); |
2303 |
02 Apr 14 |
olle |
160 |
} |
2303 |
02 Apr 14 |
olle |
161 |
else if ("LabEnvironmentDatabaseQuery".equals(cmd)) |
2303 |
02 Apr 14 |
olle |
162 |
{ |
2303 |
02 Apr 14 |
olle |
// Get sensor(s) |
2303 |
02 Apr 14 |
olle |
164 |
String sensorUrl = "http://givare2.onk.lu.se/"; |
2303 |
02 Apr 14 |
olle |
165 |
String sensorUrlParameter = Values.getString(req.getParameter("sensorurl"), null); |
2303 |
02 Apr 14 |
olle |
166 |
if (sensorUrlParameter != null) |
2303 |
02 Apr 14 |
olle |
167 |
{ |
2303 |
02 Apr 14 |
olle |
168 |
sensorUrl = sensorUrlParameter; |
2303 |
02 Apr 14 |
olle |
169 |
} |
2303 |
02 Apr 14 |
olle |
170 |
log.debug("sensorUrl = " + sensorUrl); |
2303 |
02 Apr 14 |
olle |
// Get query time interval |
2303 |
02 Apr 14 |
olle |
172 |
String startDateStr = Values.getString(req.getParameter("fdate"), null); |
2303 |
02 Apr 14 |
olle |
173 |
String startTimeStr = Values.getString(req.getParameter("ftime"), null); |
2303 |
02 Apr 14 |
olle |
174 |
String endDateStr = Values.getString(req.getParameter("tdate"), null); |
2303 |
02 Apr 14 |
olle |
175 |
String endTimeStr = Values.getString(req.getParameter("ttime"), null); |
2303 |
02 Apr 14 |
olle |
176 |
String startDateTimeStr = dateAndTimeStringsToDateTimeString(startDateStr, startTimeStr); |
2303 |
02 Apr 14 |
olle |
177 |
String endDateTimeStr = dateAndTimeStringsToDateTimeString(endDateStr, endTimeStr); |
2303 |
02 Apr 14 |
olle |
178 |
Date startTime = dateTimeStringToDate(startDateTimeStr); |
2303 |
02 Apr 14 |
olle |
179 |
Date endTime = dateTimeStringToDate(endDateTimeStr); |
2303 |
02 Apr 14 |
olle |
180 |
String displayIndexStr = Values.getString(req.getParameter("displayindex"), null); |
2303 |
02 Apr 14 |
olle |
181 |
boolean displayIndex = false; |
2303 |
02 Apr 14 |
olle |
182 |
if (displayIndexStr != null && displayIndexStr.equals("true")) |
2303 |
02 Apr 14 |
olle |
183 |
{ |
2303 |
02 Apr 14 |
olle |
184 |
displayIndex = true; |
2303 |
02 Apr 14 |
olle |
185 |
} |
2303 |
02 Apr 14 |
olle |
186 |
log.debug("displayIndexStr = " + displayIndexStr + " displayIndex = " + displayIndex); |
2303 |
02 Apr 14 |
olle |
// Get return type |
2303 |
02 Apr 14 |
olle |
188 |
String returnType = "export"; |
2303 |
02 Apr 14 |
olle |
189 |
String returnTypeStr = Values.getString(req.getParameter("returntype"), null); |
2303 |
02 Apr 14 |
olle |
190 |
if (returnTypeStr != null && !returnTypeStr.equals("")) |
2303 |
02 Apr 14 |
olle |
191 |
{ |
2303 |
02 Apr 14 |
olle |
192 |
returnType = returnTypeStr; |
2303 |
02 Apr 14 |
olle |
193 |
} |
2303 |
02 Apr 14 |
olle |
194 |
log.debug("returnTypeStr = " + returnTypeStr + " returnType = " + returnType); |
2303 |
02 Apr 14 |
olle |
// Get sensor name for export filename |
2303 |
02 Apr 14 |
olle |
196 |
String sensorName = "Lab ?"; |
2303 |
02 Apr 14 |
olle |
197 |
String sensorNameParameter = Values.getString(req.getParameter("sensorname"), null); |
2303 |
02 Apr 14 |
olle |
198 |
if (sensorNameParameter != null) |
2303 |
02 Apr 14 |
olle |
199 |
{ |
2303 |
02 Apr 14 |
olle |
200 |
sensorName = sensorNameParameter; |
2303 |
02 Apr 14 |
olle |
201 |
} |
2303 |
02 Apr 14 |
olle |
202 |
log.debug("sensorName = " + sensorName); |
2303 |
02 Apr 14 |
olle |
// Get lab environment configuration from singleton LabEnvironment |
2303 |
02 Apr 14 |
olle |
204 |
LabEnvironment labEnvironment = LabEnvironment.getInstance(); |
2303 |
02 Apr 14 |
olle |
205 |
LabEnvironmentConfiguration labEnvironmentConfiguration = labEnvironment.getLabEnvironmentConfiguration(); |
2303 |
02 Apr 14 |
olle |
// Get lab sensor number from lab sensor url |
2303 |
02 Apr 14 |
olle |
207 |
LabSensorConfig labSensorConfig = labEnvironmentConfiguration.findByUrl(sensorUrl); |
2303 |
02 Apr 14 |
olle |
208 |
log.debug("labSensorConfig = " + labSensorConfig); |
2303 |
02 Apr 14 |
olle |
209 |
Integer labSensorNumber = null; |
2303 |
02 Apr 14 |
olle |
210 |
if (labSensorConfig != null) |
2303 |
02 Apr 14 |
olle |
211 |
{ |
2303 |
02 Apr 14 |
olle |
212 |
labSensorNumber = labSensorConfig.getNumber(); |
2303 |
02 Apr 14 |
olle |
213 |
} |
2303 |
02 Apr 14 |
olle |
214 |
log.debug("labSensorNumber = " + labSensorNumber + " startTime = " + startTime + " endTime = " + endTime); |
2303 |
02 Apr 14 |
olle |
// Perform database query |
3018 |
09 Dec 14 |
nicklas |
216 |
LabEnvironmentStorageUtil storage = new LabEnvironmentStorageUtil(); |
3018 |
09 Dec 14 |
nicklas |
217 |
List<LabEnvironmentData> lthdlist = storage.queryLabEnvDb(labSensorNumber, startTime, endTime); |
2303 |
02 Apr 14 |
olle |
218 |
if (returnType.equals("export")) |
2303 |
02 Apr 14 |
olle |
219 |
{ |
2303 |
02 Apr 14 |
olle |
// Create export filename |
2303 |
02 Apr 14 |
olle |
221 |
String filename = createExportFilename(sensorName, startTime, endTime); |
2303 |
02 Apr 14 |
olle |
222 |
log.debug("labSensorNumber = " + labSensorNumber + " startTime = " + startTime + " endTime = " + endTime + " filename = " + filename); |
2303 |
02 Apr 14 |
olle |
// Create table header |
2303 |
02 Apr 14 |
olle |
224 |
String tableHeaderStart = "Sensor\tSerial Number\tDateTime\tTemp(C)\tHumidity(%)"; |
2303 |
02 Apr 14 |
olle |
// Check if database index should be displayed |
2303 |
02 Apr 14 |
olle |
226 |
if (displayIndex) |
2303 |
02 Apr 14 |
olle |
227 |
{ |
2303 |
02 Apr 14 |
olle |
228 |
tableHeaderStart = "Id\t" + tableHeaderStart; |
2303 |
02 Apr 14 |
olle |
229 |
} |
2303 |
02 Apr 14 |
olle |
// Write labSensor file |
2303 |
02 Apr 14 |
olle |
231 |
resp.setHeader("Content-Disposition", "attachment; filename=" + filename); |
2303 |
02 Apr 14 |
olle |
232 |
resp.setContentType("text/plain"); |
2303 |
02 Apr 14 |
olle |
233 |
resp.setCharacterEncoding("UTF-8"); |
2303 |
02 Apr 14 |
olle |
234 |
PrintWriter os = resp.getWriter(); |
2303 |
02 Apr 14 |
olle |
235 |
os.write(tableHeaderStart); |
2303 |
02 Apr 14 |
olle |
236 |
os.write("\n"); |
2303 |
02 Apr 14 |
olle |
237 |
for (LabEnvironmentData lthd : lthdlist) |
2303 |
02 Apr 14 |
olle |
238 |
{ |
2303 |
02 Apr 14 |
olle |
// Check if database index should be displayed |
2303 |
02 Apr 14 |
olle |
240 |
if (displayIndex) |
2303 |
02 Apr 14 |
olle |
241 |
{ |
2303 |
02 Apr 14 |
olle |
242 |
Long id = lthd.getId(); |
2303 |
02 Apr 14 |
olle |
243 |
os.write(id + "\t" + lthd.toString()); |
2303 |
02 Apr 14 |
olle |
244 |
} |
2303 |
02 Apr 14 |
olle |
245 |
else |
2303 |
02 Apr 14 |
olle |
246 |
{ |
2303 |
02 Apr 14 |
olle |
247 |
os.write(lthd.toString()); |
2303 |
02 Apr 14 |
olle |
248 |
} |
2303 |
02 Apr 14 |
olle |
249 |
os.write("\n"); |
2303 |
02 Apr 14 |
olle |
250 |
} |
2303 |
02 Apr 14 |
olle |
251 |
os.flush(); |
2303 |
02 Apr 14 |
olle |
252 |
os.close(); |
2303 |
02 Apr 14 |
olle |
253 |
} |
2303 |
02 Apr 14 |
olle |
254 |
else if (returnType.equals("json")) |
2303 |
02 Apr 14 |
olle |
255 |
{ |
2303 |
02 Apr 14 |
olle |
256 |
json = createLabEnvironmentJsonObject(json, lthdlist); |
2303 |
02 Apr 14 |
olle |
257 |
} |
2303 |
02 Apr 14 |
olle |
258 |
} |
2303 |
02 Apr 14 |
olle |
259 |
} |
2303 |
02 Apr 14 |
olle |
260 |
catch (Throwable t) |
2303 |
02 Apr 14 |
olle |
261 |
{ |
2303 |
02 Apr 14 |
olle |
262 |
t.printStackTrace(); |
2303 |
02 Apr 14 |
olle |
263 |
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, t.getMessage()); |
2303 |
02 Apr 14 |
olle |
264 |
json.clear(); |
2303 |
02 Apr 14 |
olle |
265 |
json.put("status", "error"); |
2303 |
02 Apr 14 |
olle |
266 |
json.put("message", t.getMessage()); |
2303 |
02 Apr 14 |
olle |
267 |
json.put("stacktrace", ThrowableUtil.stackTraceToString(t)); |
2303 |
02 Apr 14 |
olle |
268 |
} |
2303 |
02 Apr 14 |
olle |
269 |
finally |
2303 |
02 Apr 14 |
olle |
270 |
{ |
2431 |
16 May 14 |
olle |
271 |
if (dc != null) |
2431 |
16 May 14 |
olle |
272 |
{ |
2431 |
16 May 14 |
olle |
273 |
dc.close(); |
2431 |
16 May 14 |
olle |
274 |
} |
2303 |
02 Apr 14 |
olle |
275 |
json.writeJSONString(resp.getWriter()); |
2303 |
02 Apr 14 |
olle |
276 |
} |
2303 |
02 Apr 14 |
olle |
277 |
} |
4527 |
20 Jun 17 |
nicklas |
278 |
|
4527 |
20 Jun 17 |
nicklas |
279 |
@Override |
4527 |
20 Jun 17 |
nicklas |
280 |
protected void doPost(HttpServletRequest req, HttpServletResponse resp) |
4527 |
20 Jun 17 |
nicklas |
281 |
throws ServletException, IOException |
4527 |
20 Jun 17 |
nicklas |
282 |
{ |
4527 |
20 Jun 17 |
nicklas |
283 |
String ID = req.getParameter("ID"); |
4527 |
20 Jun 17 |
nicklas |
284 |
String cmd = req.getParameter("cmd"); |
4527 |
20 Jun 17 |
nicklas |
285 |
resp.setContentType("application/json"); |
4527 |
20 Jun 17 |
nicklas |
286 |
resp.setCharacterEncoding("UTF-8"); |
4527 |
20 Jun 17 |
nicklas |
287 |
|
4527 |
20 Jun 17 |
nicklas |
288 |
final SessionControl sc = Application.getSessionControl(ID, null, req.getRemoteAddr(), true); |
4527 |
20 Jun 17 |
nicklas |
289 |
|
4527 |
20 Jun 17 |
nicklas |
290 |
JSONObject json = new JSONObject(); |
4527 |
20 Jun 17 |
nicklas |
291 |
json.put("status", "ok"); |
4527 |
20 Jun 17 |
nicklas |
292 |
JSONArray jsonMessages = new JSONArray(); |
4527 |
20 Jun 17 |
nicklas |
293 |
|
4527 |
20 Jun 17 |
nicklas |
294 |
DbControl dc = null; |
4527 |
20 Jun 17 |
nicklas |
295 |
try |
4527 |
20 Jun 17 |
nicklas |
296 |
{ |
4527 |
20 Jun 17 |
nicklas |
297 |
if ("SetLabEnvAlarmConfig".equals(cmd)) |
4527 |
20 Jun 17 |
nicklas |
298 |
{ |
4527 |
20 Jun 17 |
nicklas |
299 |
dc = sc.newDbControl(); |
4527 |
20 Jun 17 |
nicklas |
300 |
Reader reader = new BufferedReader(new InputStreamReader(req.getInputStream(), Charset.forName("UTF-8"))); |
4527 |
20 Jun 17 |
nicklas |
301 |
JSONObject jsonReq = (JSONObject)new JSONParser().parse(reader); |
2303 |
02 Apr 14 |
olle |
302 |
|
4527 |
20 Jun 17 |
nicklas |
// Get lab environment configuration from singleton LabEnvironment |
4527 |
20 Jun 17 |
nicklas |
304 |
LabEnvironment labEnvironment = LabEnvironment.getInstance(); |
4527 |
20 Jun 17 |
nicklas |
305 |
LabEnvironmentConfiguration labEnvironmentConfiguration = labEnvironment.getLabEnvironmentConfiguration(); |
4527 |
20 Jun 17 |
nicklas |
306 |
List<LabSensorConfig> labSensorConfigList = labEnvironmentConfiguration.getLabSensorConfigList(); |
4527 |
20 Jun 17 |
nicklas |
307 |
for (LabSensorConfig labSensorConfig: labSensorConfigList) |
4527 |
20 Jun 17 |
nicklas |
308 |
{ |
4527 |
20 Jun 17 |
nicklas |
309 |
if (labSensorConfig != null) |
4527 |
20 Jun 17 |
nicklas |
310 |
{ |
4527 |
20 Jun 17 |
nicklas |
311 |
List<LabSensorAlarmConfig> alarmList = labSensorConfig.getAlarmList(); |
4527 |
20 Jun 17 |
nicklas |
312 |
if (alarmList != null) |
4527 |
20 Jun 17 |
nicklas |
313 |
{ |
4527 |
20 Jun 17 |
nicklas |
314 |
for (LabSensorAlarmConfig alarm: alarmList) |
4527 |
20 Jun 17 |
nicklas |
315 |
{ |
4527 |
20 Jun 17 |
nicklas |
316 |
JSONObject jsonAlarm = (JSONObject)jsonReq.get("alarm." + alarm.getNo()); |
4527 |
20 Jun 17 |
nicklas |
317 |
boolean currentBlocked = alarm.isAlarmBlocked(); |
4527 |
20 Jun 17 |
nicklas |
318 |
boolean alarmBlocked = Boolean.TRUE.equals(jsonAlarm.get("blocked")); |
4527 |
20 Jun 17 |
nicklas |
319 |
|
4527 |
20 Jun 17 |
nicklas |
320 |
if (currentBlocked != alarmBlocked) |
4527 |
20 Jun 17 |
nicklas |
321 |
{ |
4527 |
20 Jun 17 |
nicklas |
// Check if logged-in user has permission to edit current alarm |
4527 |
20 Jun 17 |
nicklas |
323 |
boolean alarmPermission = fetchAlarmPermission(alarm, sc, dc); |
4527 |
20 Jun 17 |
nicklas |
324 |
if (alarmPermission) |
4527 |
20 Jun 17 |
nicklas |
325 |
{ |
4527 |
20 Jun 17 |
nicklas |
326 |
alarm.setAlarmBlocked(alarmBlocked); |
4527 |
20 Jun 17 |
nicklas |
327 |
jsonMessages.add("Alarm " + alarm.getNo() + " is now " + (alarmBlocked ? "blocked" : "unblocked")); |
4527 |
20 Jun 17 |
nicklas |
328 |
if (!alarmBlocked) |
4527 |
20 Jun 17 |
nicklas |
329 |
{ |
4527 |
20 Jun 17 |
nicklas |
330 |
alarm.setAlarmBlockType(null); |
4527 |
20 Jun 17 |
nicklas |
331 |
alarm.setAlarmText(null); |
4527 |
20 Jun 17 |
nicklas |
332 |
} |
4527 |
20 Jun 17 |
nicklas |
333 |
} |
4527 |
20 Jun 17 |
nicklas |
334 |
} |
4527 |
20 Jun 17 |
nicklas |
335 |
} |
4527 |
20 Jun 17 |
nicklas |
336 |
} |
4527 |
20 Jun 17 |
nicklas |
337 |
} |
4527 |
20 Jun 17 |
nicklas |
338 |
} |
4527 |
20 Jun 17 |
nicklas |
339 |
|
4527 |
20 Jun 17 |
nicklas |
340 |
if (jsonMessages.size() == 0) jsonMessages.add("No changes"); |
4527 |
20 Jun 17 |
nicklas |
341 |
} |
4527 |
20 Jun 17 |
nicklas |
342 |
|
4527 |
20 Jun 17 |
nicklas |
343 |
json.put("messages", jsonMessages); |
4527 |
20 Jun 17 |
nicklas |
344 |
} |
4527 |
20 Jun 17 |
nicklas |
345 |
catch (Throwable t) |
4527 |
20 Jun 17 |
nicklas |
346 |
{ |
4527 |
20 Jun 17 |
nicklas |
347 |
t.printStackTrace(); |
4527 |
20 Jun 17 |
nicklas |
348 |
json.clear(); |
4527 |
20 Jun 17 |
nicklas |
349 |
json.put("status", "error"); |
4527 |
20 Jun 17 |
nicklas |
350 |
json.put("message", t.getMessage()); |
4527 |
20 Jun 17 |
nicklas |
351 |
json.put("stacktrace", ThrowableUtil.stackTraceToString(t)); |
4527 |
20 Jun 17 |
nicklas |
352 |
} |
4527 |
20 Jun 17 |
nicklas |
353 |
finally |
4527 |
20 Jun 17 |
nicklas |
354 |
{ |
4527 |
20 Jun 17 |
nicklas |
355 |
if (dc != null) dc.close(); |
4527 |
20 Jun 17 |
nicklas |
356 |
json.writeJSONString(resp.getWriter()); |
4527 |
20 Jun 17 |
nicklas |
357 |
} |
4527 |
20 Jun 17 |
nicklas |
358 |
} |
2303 |
02 Apr 14 |
olle |
359 |
|
2401 |
06 May 14 |
olle |
360 |
private JSONObject createLabEnvDatabaseConfig(JSONObject json) |
2401 |
06 May 14 |
olle |
361 |
throws ServletException, IOException |
2401 |
06 May 14 |
olle |
362 |
{ |
2401 |
06 May 14 |
olle |
363 |
log.debug("Start " + new Date()); |
2401 |
06 May 14 |
olle |
// Get lab environment configuration from singleton LabEnvironment |
2401 |
06 May 14 |
olle |
365 |
LabEnvironment labEnvironment = LabEnvironment.getInstance(); |
2401 |
06 May 14 |
olle |
366 |
LabEnvironmentConfiguration labEnvironmentConfiguration = labEnvironment.getLabEnvironmentConfiguration(); |
2401 |
06 May 14 |
olle |
367 |
long storageIntervalInSeconds = labEnvironmentConfiguration.getStorageIntervalInSeconds(); |
2401 |
06 May 14 |
olle |
368 |
JSONObject jsonConfig = new JSONObject(); |
2401 |
06 May 14 |
olle |
369 |
jsonConfig.put("storageIntervalInSeconds", storageIntervalInSeconds); |
2401 |
06 May 14 |
olle |
370 |
// |
2401 |
06 May 14 |
olle |
371 |
json.put("labEnvDatabaseConfig", jsonConfig); |
2401 |
06 May 14 |
olle |
372 |
return json; |
2401 |
06 May 14 |
olle |
373 |
} |
2401 |
06 May 14 |
olle |
374 |
|
2401 |
06 May 14 |
olle |
375 |
|
2431 |
16 May 14 |
olle |
376 |
/** |
2431 |
16 May 14 |
olle |
* Returns a JSON object with a lab sensor configuration JSONArray. |
2431 |
16 May 14 |
olle |
378 |
* |
2431 |
16 May 14 |
olle |
* @param json JSONObject The JSONObject to add the lab sensor configuration JSONArray to. |
2431 |
16 May 14 |
olle |
* @param sc SessionControl The SessionControl object to use for the current session. |
2431 |
16 May 14 |
olle |
* @param dc DbControl The DbControl object to use for the current session. |
2431 |
16 May 14 |
olle |
* @return JSONObject Returns a JSON object with a lab sensor configuration JSONArray. |
2431 |
16 May 14 |
olle |
383 |
*/ |
2431 |
16 May 14 |
olle |
384 |
private JSONObject createLabSensorConfigList(JSONObject json, SessionControl sc, DbControl dc) |
2303 |
02 Apr 14 |
olle |
385 |
throws ServletException, IOException |
2303 |
02 Apr 14 |
olle |
386 |
{ |
2303 |
02 Apr 14 |
olle |
387 |
log.debug("Start " + new Date()); |
2303 |
02 Apr 14 |
olle |
// Get lab environment configuration from singleton LabEnvironment |
2326 |
07 Apr 14 |
olle |
389 |
LabEnvironment labEnvironment = LabEnvironment.getInstance(); |
2303 |
02 Apr 14 |
olle |
390 |
LabEnvironmentConfiguration labEnvironmentConfiguration = labEnvironment.getLabEnvironmentConfiguration(); |
2303 |
02 Apr 14 |
olle |
391 |
List<LabSensorConfig> labSensorConfigList = labEnvironmentConfiguration.getLabSensorConfigList(); |
4527 |
20 Jun 17 |
nicklas |
392 |
JSONArray jsonSensors = new JSONArray(); |
2303 |
02 Apr 14 |
olle |
393 |
for (LabSensorConfig labSensorConfig: labSensorConfigList) |
2303 |
02 Apr 14 |
olle |
394 |
{ |
2303 |
02 Apr 14 |
olle |
395 |
if (labSensorConfig != null) |
2303 |
02 Apr 14 |
olle |
396 |
{ |
4527 |
20 Jun 17 |
nicklas |
397 |
JSONObject jsonSensor = new JSONObject(); |
4527 |
20 Jun 17 |
nicklas |
398 |
jsonSensor.put("url", labSensorConfig.getUrl()); |
4527 |
20 Jun 17 |
nicklas |
399 |
jsonSensor.put("name", labSensorConfig.getName()); |
2415 |
09 May 14 |
olle |
400 |
List<LabSensorAlarmConfig> alarmList = labSensorConfig.getAlarmList(); |
4527 |
20 Jun 17 |
nicklas |
401 |
JSONArray jsonAlarms = new JSONArray(); |
2415 |
09 May 14 |
olle |
402 |
if (alarmList != null) |
2415 |
09 May 14 |
olle |
403 |
{ |
2415 |
09 May 14 |
olle |
404 |
for (LabSensorAlarmConfig alarm: alarmList) |
2415 |
09 May 14 |
olle |
405 |
{ |
4527 |
20 Jun 17 |
nicklas |
406 |
JSONObject jsonAlarm = new JSONObject(); |
4527 |
20 Jun 17 |
nicklas |
407 |
jsonAlarm.put("no", alarm.getNo()); |
4527 |
20 Jun 17 |
nicklas |
408 |
jsonAlarm.put("startTime", alarm.getStartTime()); |
4527 |
20 Jun 17 |
nicklas |
409 |
jsonAlarm.put("endTime", alarm.getEndTime()); |
4527 |
20 Jun 17 |
nicklas |
410 |
jsonAlarm.put("weekdayFilter", alarm.getWeekdayFilter()); |
4527 |
20 Jun 17 |
nicklas |
411 |
jsonAlarm.put("temperatureMin", alarm.getTemperatureMin()); |
4527 |
20 Jun 17 |
nicklas |
412 |
jsonAlarm.put("temperatureMax", alarm.getTemperatureMax()); |
4527 |
20 Jun 17 |
nicklas |
413 |
jsonAlarm.put("humidityMin", alarm.getHumidityMin()); |
4527 |
20 Jun 17 |
nicklas |
414 |
jsonAlarm.put("humidityMax", alarm.getHumidityMax()); |
4527 |
20 Jun 17 |
nicklas |
415 |
jsonAlarm.put("blocked", alarm.isAlarmBlocked()); |
4527 |
20 Jun 17 |
nicklas |
416 |
jsonAlarm.put("alarmText", alarm.getAlarmText()); |
2419 |
13 May 14 |
olle |
// Check if logged-in user has permission to edit current alarm |
2431 |
16 May 14 |
olle |
418 |
boolean alarmPermission = fetchAlarmPermission(alarm, sc, dc); |
4527 |
20 Jun 17 |
nicklas |
419 |
jsonAlarm.put("alarmPermission", alarmPermission); |
4527 |
20 Jun 17 |
nicklas |
420 |
jsonAlarms.add(jsonAlarm); |
2415 |
09 May 14 |
olle |
421 |
} |
2415 |
09 May 14 |
olle |
422 |
} |
4527 |
20 Jun 17 |
nicklas |
423 |
jsonSensor.put("alarms", jsonAlarms); |
4527 |
20 Jun 17 |
nicklas |
424 |
jsonSensors.add(jsonSensor); |
2433 |
16 May 14 |
olle |
//log.debug("Adding url = " + labSensorConfig.getUrl() + " name = \"" + labSensorConfig.getName() + "\" to JSONArray"); |
2303 |
02 Apr 14 |
olle |
426 |
} |
2303 |
02 Apr 14 |
olle |
427 |
} |
2303 |
02 Apr 14 |
olle |
428 |
// |
4527 |
20 Jun 17 |
nicklas |
429 |
json.put("sensors", jsonSensors); |
2303 |
02 Apr 14 |
olle |
430 |
return json; |
2303 |
02 Apr 14 |
olle |
431 |
} |
2303 |
02 Apr 14 |
olle |
432 |
|
2303 |
02 Apr 14 |
olle |
433 |
|
2415 |
09 May 14 |
olle |
434 |
/** |
2419 |
13 May 14 |
olle |
* Returns `true` if the alarm user list contains |
2419 |
13 May 14 |
olle |
* the logged-in user log-in id, else `false`. |
2419 |
13 May 14 |
olle |
437 |
* |
2419 |
13 May 14 |
olle |
* @param alarm LabSensorAlarmConfig The lab sensor alarm configuration to check permission for. |
2431 |
16 May 14 |
olle |
* @param sc SessionControl The SessionControl object to use for the current session. |
2431 |
16 May 14 |
olle |
* @param dc DbControl The DbControl object to use for the current session. |
2419 |
13 May 14 |
olle |
* @return boolean Returns `true` if the alarm user list contains the logged-in user log-in id, else `false`. |
2419 |
13 May 14 |
olle |
442 |
*/ |
2431 |
16 May 14 |
olle |
443 |
private boolean fetchAlarmPermission(LabSensorAlarmConfig alarm, SessionControl sc, DbControl dc) |
2419 |
13 May 14 |
olle |
444 |
{ |
2419 |
13 May 14 |
olle |
445 |
boolean alarmPermission = false; |
2424 |
14 May 14 |
olle |
446 |
if (alarm != null) |
2419 |
13 May 14 |
olle |
447 |
{ |
2424 |
14 May 14 |
olle |
// Get logged-in user log-in id |
2431 |
16 May 14 |
olle |
449 |
String loggedInUserLogInId = fetchLoggedInUserLogInId(sc, dc); |
2424 |
14 May 14 |
olle |
450 |
if (loggedInUserLogInId != null && !loggedInUserLogInId.equals("")) |
2419 |
13 May 14 |
olle |
451 |
{ |
2424 |
14 May 14 |
olle |
// Get alarm user list |
2424 |
14 May 14 |
olle |
453 |
List<LabSensorAlarmUserConfig> alarmUserList = alarm.getUserList(); |
2424 |
14 May 14 |
olle |
454 |
if (alarmUserList != null) |
2419 |
13 May 14 |
olle |
455 |
{ |
2424 |
14 May 14 |
olle |
456 |
for (LabSensorAlarmUserConfig alarmUser: alarmUserList) |
2424 |
14 May 14 |
olle |
457 |
{ |
2424 |
14 May 14 |
olle |
458 |
if (alarmUser != null) |
2424 |
14 May 14 |
olle |
459 |
{ |
2424 |
14 May 14 |
olle |
460 |
if (loggedInUserLogInId.equals(alarmUser.getId())) |
2424 |
14 May 14 |
olle |
461 |
{ |
2424 |
14 May 14 |
olle |
462 |
alarmPermission = true; |
2424 |
14 May 14 |
olle |
463 |
} |
2424 |
14 May 14 |
olle |
464 |
} |
2424 |
14 May 14 |
olle |
465 |
} |
2419 |
13 May 14 |
olle |
466 |
} |
2419 |
13 May 14 |
olle |
467 |
} |
2419 |
13 May 14 |
olle |
468 |
} |
2419 |
13 May 14 |
olle |
469 |
return alarmPermission; |
2419 |
13 May 14 |
olle |
470 |
} |
2419 |
13 May 14 |
olle |
471 |
|
2419 |
13 May 14 |
olle |
472 |
|
2419 |
13 May 14 |
olle |
473 |
/** |
2415 |
09 May 14 |
olle |
* Returns the log-in id for the logged-in user, |
2415 |
09 May 14 |
olle |
* or `null` if the id could not be obtained. |
2415 |
09 May 14 |
olle |
476 |
* |
2431 |
16 May 14 |
olle |
* @param sc SessionControl The SessionControl object to use for the current session. |
2431 |
16 May 14 |
olle |
* @param dc DbControl The DbControl object to use for the current session. |
2415 |
09 May 14 |
olle |
* @return String The log-in id for the logged-in user, or `null` if the id could not be obtained. |
2415 |
09 May 14 |
olle |
480 |
*/ |
2431 |
16 May 14 |
olle |
481 |
private String fetchLoggedInUserLogInId(SessionControl sc, DbControl dc) |
2415 |
09 May 14 |
olle |
482 |
{ |
2415 |
09 May 14 |
olle |
483 |
int userId = sc.getLoggedInUserId(); |
2415 |
09 May 14 |
olle |
484 |
User loggedInUser = User.getById(dc, userId); |
2415 |
09 May 14 |
olle |
485 |
String loggedInUserLogInId = null; |
2415 |
09 May 14 |
olle |
486 |
if (loggedInUser != null) |
2415 |
09 May 14 |
olle |
487 |
{ |
2415 |
09 May 14 |
olle |
488 |
loggedInUserLogInId = loggedInUser.getLogin(); |
2415 |
09 May 14 |
olle |
489 |
} |
2415 |
09 May 14 |
olle |
490 |
return loggedInUserLogInId; |
2415 |
09 May 14 |
olle |
491 |
} |
2415 |
09 May 14 |
olle |
492 |
|
2415 |
09 May 14 |
olle |
493 |
|
2303 |
02 Apr 14 |
olle |
494 |
String createExportFilename(String sensorName, Date startTime, Date endTime) |
2303 |
02 Apr 14 |
olle |
495 |
{ |
2303 |
02 Apr 14 |
olle |
// Default settings for lab temperature and humidity report export filename |
2303 |
02 Apr 14 |
olle |
497 |
String filenamePrefix = "lab_env-"; |
2303 |
02 Apr 14 |
olle |
// Get lab sensor name string to use in filename |
2303 |
02 Apr 14 |
olle |
499 |
String labSensorName = "Lab"; |
2303 |
02 Apr 14 |
olle |
500 |
if (sensorName != null && !sensorName.equals("")) |
2303 |
02 Apr 14 |
olle |
501 |
{ |
2303 |
02 Apr 14 |
olle |
502 |
labSensorName = "" + sensorName; |
2303 |
02 Apr 14 |
olle |
// Remove parentheses |
2303 |
02 Apr 14 |
olle |
504 |
labSensorName = labSensorName.replaceAll("\\(", ""); |
2303 |
02 Apr 14 |
olle |
505 |
labSensorName = labSensorName.replaceAll("\\)", ""); |
2303 |
02 Apr 14 |
olle |
// Replace spaces with underscores |
2303 |
02 Apr 14 |
olle |
507 |
labSensorName = labSensorName.replaceAll("\\ ", "_"); |
2303 |
02 Apr 14 |
olle |
508 |
} |
2303 |
02 Apr 14 |
olle |
509 |
DateFormatter filenameDateFormat = new DateFormatter("yyyyMMdd_HHmmss"); |
2303 |
02 Apr 14 |
olle |
// Set current date |
2303 |
02 Apr 14 |
olle |
//Date today = new Date(); |
2303 |
02 Apr 14 |
olle |
512 |
String dateStringFrom = "first"; |
2303 |
02 Apr 14 |
olle |
513 |
if (startTime != null) |
2303 |
02 Apr 14 |
olle |
514 |
{ |
2303 |
02 Apr 14 |
olle |
515 |
dateStringFrom = filenameDateFormat.format(startTime); |
2303 |
02 Apr 14 |
olle |
516 |
} |
2303 |
02 Apr 14 |
olle |
517 |
String dateStringTo = "last"; |
2303 |
02 Apr 14 |
olle |
518 |
if (endTime != null) |
2303 |
02 Apr 14 |
olle |
519 |
{ |
2303 |
02 Apr 14 |
olle |
520 |
dateStringTo = filenameDateFormat.format(endTime); |
2303 |
02 Apr 14 |
olle |
521 |
} |
2303 |
02 Apr 14 |
olle |
522 |
String intervalString = dateStringFrom + "-" + dateStringTo; |
2303 |
02 Apr 14 |
olle |
523 |
String filename= filenamePrefix + labSensorName + "-" + intervalString + ".tsv"; |
2303 |
02 Apr 14 |
olle |
524 |
return filename; |
2303 |
02 Apr 14 |
olle |
525 |
} |
2303 |
02 Apr 14 |
olle |
526 |
|
2303 |
02 Apr 14 |
olle |
527 |
|
2303 |
02 Apr 14 |
olle |
528 |
private JSONObject createLabEnvironmentJsonObject(JSONObject json, List<LabEnvironmentData> lthdlist) |
2303 |
02 Apr 14 |
olle |
529 |
{ |
2303 |
02 Apr 14 |
olle |
530 |
DateFormatter dateFormat = new DateFormatter("yyyy-MM-dd HH:mm:ss"); |
2303 |
02 Apr 14 |
olle |
531 |
JSONArray jsonArray = new JSONArray(); |
2303 |
02 Apr 14 |
olle |
532 |
for (LabEnvironmentData lthd : lthdlist) |
2303 |
02 Apr 14 |
olle |
533 |
{ |
2303 |
02 Apr 14 |
olle |
534 |
JSONObject labenv = new JSONObject(); |
2303 |
02 Apr 14 |
olle |
535 |
labenv.put("index", lthd.getId()); |
2303 |
02 Apr 14 |
olle |
536 |
labenv.put("url", lthd.getSensorUrl()); |
2303 |
02 Apr 14 |
olle |
537 |
labenv.put("sensorname", lthd.getSensorName()); |
2303 |
02 Apr 14 |
olle |
538 |
labenv.put("unixtime", lthd.getUnixTime()); |
2303 |
02 Apr 14 |
olle |
539 |
labenv.put("date", dateFormat.format(lthd.getDateTime())); |
2303 |
02 Apr 14 |
olle |
540 |
labenv.put("temperature", lthd.getTemperature()); |
2303 |
02 Apr 14 |
olle |
541 |
labenv.put("humidity", lthd.getHumidity()); |
2303 |
02 Apr 14 |
olle |
542 |
jsonArray.add(labenv); |
2303 |
02 Apr 14 |
olle |
543 |
} |
2303 |
02 Apr 14 |
olle |
544 |
json.put("labenvarray", jsonArray); |
2303 |
02 Apr 14 |
olle |
545 |
return json; |
2303 |
02 Apr 14 |
olle |
546 |
} |
2303 |
02 Apr 14 |
olle |
547 |
|
2303 |
02 Apr 14 |
olle |
548 |
/** |
2303 |
02 Apr 14 |
olle |
* Returns a Date object from input dateTime string in format (yyyyMMdd HHmm). |
2303 |
02 Apr 14 |
olle |
* Returns `null` if input dateTime string is |
2303 |
02 Apr 14 |
olle |
* `null` or blank. |
2303 |
02 Apr 14 |
olle |
552 |
* |
2303 |
02 Apr 14 |
olle |
* @param dateTimeStr String Input dateTime string in (yyyyMMdd HHmm) format. |
2303 |
02 Apr 14 |
olle |
* @return Date Date object from input dateTime string. |
2303 |
02 Apr 14 |
olle |
555 |
*/ |
2303 |
02 Apr 14 |
olle |
556 |
private Date dateTimeStringToDate(String dateTimeStr) |
2303 |
02 Apr 14 |
olle |
557 |
{ |
2303 |
02 Apr 14 |
olle |
558 |
Date date = null; |
2303 |
02 Apr 14 |
olle |
559 |
if (dateTimeStr != null && !dateTimeStr.equals("")) |
2303 |
02 Apr 14 |
olle |
560 |
{ |
2303 |
02 Apr 14 |
olle |
561 |
date = CONVERTER_STRING_TO_DATETIME.convert(dateTimeStr); |
2303 |
02 Apr 14 |
olle |
562 |
} |
2303 |
02 Apr 14 |
olle |
563 |
return date; |
2303 |
02 Apr 14 |
olle |
564 |
} |
2303 |
02 Apr 14 |
olle |
565 |
|
2303 |
02 Apr 14 |
olle |
566 |
|
2303 |
02 Apr 14 |
olle |
567 |
/** |
2303 |
02 Apr 14 |
olle |
* Returns a dateTime string in format (yyyyMMdd HHmm) from input |
2303 |
02 Apr 14 |
olle |
* date and time strings. Returns `null` if input date string is |
2303 |
02 Apr 14 |
olle |
* `null` or blank. Provided input date string is OK; if input time |
2303 |
02 Apr 14 |
olle |
* string is `null` or blank, time is set to "0000". |
2303 |
02 Apr 14 |
olle |
572 |
* |
2303 |
02 Apr 14 |
olle |
* @param dateStr String Input date string in (yyyyMMdd) format. |
2303 |
02 Apr 14 |
olle |
* @param timeStr String Input time string in (HHmm) format. |
2303 |
02 Apr 14 |
olle |
* @return String DateTime string in format (yyyyMMdd HHmm) from input date and time strings. |
2303 |
02 Apr 14 |
olle |
576 |
*/ |
2303 |
02 Apr 14 |
olle |
577 |
private String dateAndTimeStringsToDateTimeString(String dateStr, String timeStr) |
2303 |
02 Apr 14 |
olle |
578 |
{ |
2303 |
02 Apr 14 |
olle |
579 |
String dateTimeStr = null; |
2303 |
02 Apr 14 |
olle |
580 |
if (dateStr != null && !dateStr.equals("")) |
2303 |
02 Apr 14 |
olle |
581 |
{ |
2303 |
02 Apr 14 |
olle |
582 |
dateStr.replaceAll("-", ""); |
2303 |
02 Apr 14 |
olle |
583 |
dateTimeStr = "" + dateStr; |
2303 |
02 Apr 14 |
olle |
584 |
if (timeStr != null && !timeStr.equals("")) |
2303 |
02 Apr 14 |
olle |
585 |
{ |
2303 |
02 Apr 14 |
olle |
586 |
timeStr.replaceAll(":", ""); |
2303 |
02 Apr 14 |
olle |
587 |
} |
2303 |
02 Apr 14 |
olle |
588 |
else |
2303 |
02 Apr 14 |
olle |
589 |
{ |
2303 |
02 Apr 14 |
olle |
590 |
timeStr = "0000"; |
2303 |
02 Apr 14 |
olle |
591 |
} |
2303 |
02 Apr 14 |
olle |
592 |
dateTimeStr += " " + timeStr; |
2303 |
02 Apr 14 |
olle |
593 |
} |
2303 |
02 Apr 14 |
olle |
594 |
return dateTimeStr; |
2303 |
02 Apr 14 |
olle |
595 |
} |
2303 |
02 Apr 14 |
olle |
596 |
} |