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; |
2303 |
02 Apr 14 |
olle |
26 |
|
2303 |
02 Apr 14 |
olle |
27 |
import java.net.URL; |
2303 |
02 Apr 14 |
olle |
28 |
import java.text.SimpleDateFormat; |
2303 |
02 Apr 14 |
olle |
29 |
import java.util.ArrayList; |
2303 |
02 Apr 14 |
olle |
30 |
import java.util.Date; |
2303 |
02 Apr 14 |
olle |
31 |
import java.util.List; |
2303 |
02 Apr 14 |
olle |
32 |
|
3013 |
05 Dec 14 |
nicklas |
33 |
import org.jdom2.Document; |
3013 |
05 Dec 14 |
nicklas |
34 |
import org.jdom2.Element; |
3013 |
05 Dec 14 |
nicklas |
35 |
import org.jdom2.Namespace; |
2328 |
08 Apr 14 |
olle |
36 |
import org.slf4j.Logger; |
2328 |
08 Apr 14 |
olle |
37 |
import org.slf4j.LoggerFactory; |
2303 |
02 Apr 14 |
olle |
38 |
|
2303 |
02 Apr 14 |
olle |
39 |
import net.sf.basedb.labenv.converter.StringToDateConverter; |
2303 |
02 Apr 14 |
olle |
40 |
import net.sf.basedb.util.Values; |
3013 |
05 Dec 14 |
nicklas |
41 |
import net.sf.basedb.util.XmlUtil2; |
2303 |
02 Apr 14 |
olle |
42 |
import net.sf.basedb.util.formatter.DateFormatter; |
2432 |
16 May 14 |
olle |
43 |
import net.sf.basedb.labenv.dao.EmailConfig; |
2303 |
02 Apr 14 |
olle |
44 |
import net.sf.basedb.labenv.dao.LabSensorAlarmConfig; |
2424 |
14 May 14 |
olle |
45 |
import net.sf.basedb.labenv.dao.LabSensorAlarmUserConfig; |
2303 |
02 Apr 14 |
olle |
46 |
import net.sf.basedb.labenv.dao.LabSensorConfig; |
2303 |
02 Apr 14 |
olle |
47 |
|
2303 |
02 Apr 14 |
olle |
48 |
public class LabEnvironmentConfiguration |
2303 |
02 Apr 14 |
olle |
49 |
{ |
2328 |
08 Apr 14 |
olle |
50 |
private static final Logger log = LoggerFactory.getLogger(LabEnvironmentConfiguration.class); |
2303 |
02 Apr 14 |
olle |
51 |
/** |
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 |
54 |
*/ |
2303 |
02 Apr 14 |
olle |
55 |
public static final StringToDateConverter CONVERTER_STRING_TO_DATETIME = new StringToDateConverter(new SimpleDateFormat("yyyyMMdd HHmm")); |
2337 |
08 Apr 14 |
olle |
56 |
|
2337 |
08 Apr 14 |
olle |
57 |
private static final String DEFAULT_DB_FILENAME = "labenv.db"; |
2337 |
08 Apr 14 |
olle |
58 |
private static final int DEFAULT_TIMEOUT_IN_SECONDS = 5; |
2337 |
08 Apr 14 |
olle |
59 |
private static final long DEFAULT_STORAGE_INTERVAL_IN_SECONDS = 300; |
2337 |
08 Apr 14 |
olle |
60 |
private static final int DEFAULT_NUMBER_OF_MEASUREMENTS_PER_STORED_VALUE = 5; |
2337 |
08 Apr 14 |
olle |
61 |
|
2424 |
14 May 14 |
olle |
62 |
private int alarmNo = 0; |
2337 |
08 Apr 14 |
olle |
63 |
private String dbFileName; |
2303 |
02 Apr 14 |
olle |
64 |
private int timeoutInSeconds; |
2303 |
02 Apr 14 |
olle |
65 |
private long storageIntervalInSeconds; |
2303 |
02 Apr 14 |
olle |
66 |
private int numberOfMeasurementsPerStoredValue; |
2303 |
02 Apr 14 |
olle |
67 |
private long measurementIntervalInSeconds; |
2432 |
16 May 14 |
olle |
68 |
private EmailConfig emailConfig = null; |
2303 |
02 Apr 14 |
olle |
69 |
private List<LabSensorConfig> labSensorConfigList = new ArrayList<LabSensorConfig>(); |
2303 |
02 Apr 14 |
olle |
70 |
private String configFileName = "labenv-config.xml"; |
2303 |
02 Apr 14 |
olle |
71 |
|
2424 |
14 May 14 |
olle |
72 |
public int getAlarmNo() |
2424 |
14 May 14 |
olle |
73 |
{ |
2424 |
14 May 14 |
olle |
74 |
return this.alarmNo; |
2424 |
14 May 14 |
olle |
75 |
} |
2424 |
14 May 14 |
olle |
76 |
|
2337 |
08 Apr 14 |
olle |
77 |
public String getDbFileName() |
2303 |
02 Apr 14 |
olle |
78 |
{ |
2337 |
08 Apr 14 |
olle |
79 |
return this.dbFileName; |
2303 |
02 Apr 14 |
olle |
80 |
} |
2303 |
02 Apr 14 |
olle |
81 |
|
2337 |
08 Apr 14 |
olle |
82 |
public int getTimeoutInSeconds() |
2303 |
02 Apr 14 |
olle |
83 |
{ |
2337 |
08 Apr 14 |
olle |
84 |
return this.timeoutInSeconds; |
2303 |
02 Apr 14 |
olle |
85 |
} |
2303 |
02 Apr 14 |
olle |
86 |
|
2303 |
02 Apr 14 |
olle |
87 |
public long getStorageIntervalInSeconds() |
2303 |
02 Apr 14 |
olle |
88 |
{ |
2303 |
02 Apr 14 |
olle |
89 |
return this.storageIntervalInSeconds; |
2303 |
02 Apr 14 |
olle |
90 |
} |
2303 |
02 Apr 14 |
olle |
91 |
|
2303 |
02 Apr 14 |
olle |
92 |
public int getNumberOfMeasurementsPerStoredValue() |
2303 |
02 Apr 14 |
olle |
93 |
{ |
2303 |
02 Apr 14 |
olle |
94 |
return this.numberOfMeasurementsPerStoredValue; |
2303 |
02 Apr 14 |
olle |
95 |
} |
2303 |
02 Apr 14 |
olle |
96 |
|
2303 |
02 Apr 14 |
olle |
97 |
public long getMeasurementIntervalInSeconds() |
2303 |
02 Apr 14 |
olle |
98 |
{ |
2303 |
02 Apr 14 |
olle |
99 |
return this.measurementIntervalInSeconds; |
2303 |
02 Apr 14 |
olle |
100 |
} |
2303 |
02 Apr 14 |
olle |
101 |
|
2432 |
16 May 14 |
olle |
102 |
public EmailConfig getEmailConfig() |
2432 |
16 May 14 |
olle |
103 |
{ |
2432 |
16 May 14 |
olle |
104 |
return this.emailConfig; |
2432 |
16 May 14 |
olle |
105 |
} |
2432 |
16 May 14 |
olle |
106 |
|
2303 |
02 Apr 14 |
olle |
107 |
public List<LabSensorConfig> getLabSensorConfigList() |
2303 |
02 Apr 14 |
olle |
108 |
{ |
2303 |
02 Apr 14 |
olle |
109 |
return this.labSensorConfigList; |
2303 |
02 Apr 14 |
olle |
110 |
} |
2303 |
02 Apr 14 |
olle |
111 |
|
2303 |
02 Apr 14 |
olle |
112 |
public void setTimeoutInSeconds(int timeoutInSeconds) |
2303 |
02 Apr 14 |
olle |
113 |
{ |
2303 |
02 Apr 14 |
olle |
114 |
this.timeoutInSeconds = timeoutInSeconds; |
2303 |
02 Apr 14 |
olle |
115 |
} |
2303 |
02 Apr 14 |
olle |
116 |
|
2303 |
02 Apr 14 |
olle |
117 |
public void setDbFileName(String dbFileName) |
2303 |
02 Apr 14 |
olle |
118 |
{ |
2303 |
02 Apr 14 |
olle |
119 |
this.dbFileName = dbFileName; |
2303 |
02 Apr 14 |
olle |
120 |
} |
2303 |
02 Apr 14 |
olle |
121 |
|
2303 |
02 Apr 14 |
olle |
122 |
public void setStorageIntervalInSeconds(long storageIntervalInSeconds) |
2303 |
02 Apr 14 |
olle |
123 |
{ |
2303 |
02 Apr 14 |
olle |
124 |
this.storageIntervalInSeconds = storageIntervalInSeconds; |
2303 |
02 Apr 14 |
olle |
125 |
} |
2303 |
02 Apr 14 |
olle |
126 |
|
2303 |
02 Apr 14 |
olle |
127 |
public void setNumberOfMeasurementsPerStoredValue(int numberOfMeasurementsPerStoredValue) |
2303 |
02 Apr 14 |
olle |
128 |
{ |
2303 |
02 Apr 14 |
olle |
129 |
this.numberOfMeasurementsPerStoredValue = numberOfMeasurementsPerStoredValue; |
2303 |
02 Apr 14 |
olle |
130 |
} |
2303 |
02 Apr 14 |
olle |
131 |
|
2303 |
02 Apr 14 |
olle |
132 |
public void setMeasurementIntervalInSeconds(long measurementIntervalInSeconds) |
2303 |
02 Apr 14 |
olle |
133 |
{ |
2303 |
02 Apr 14 |
olle |
134 |
this.measurementIntervalInSeconds = measurementIntervalInSeconds; |
2303 |
02 Apr 14 |
olle |
135 |
} |
2303 |
02 Apr 14 |
olle |
136 |
|
2432 |
16 May 14 |
olle |
137 |
public void setEmailConfig(EmailConfig emailConfig) |
2432 |
16 May 14 |
olle |
138 |
{ |
2432 |
16 May 14 |
olle |
139 |
this.emailConfig = emailConfig; |
2432 |
16 May 14 |
olle |
140 |
} |
2432 |
16 May 14 |
olle |
141 |
|
2303 |
02 Apr 14 |
olle |
142 |
public void setLabSensorConfigList(List<LabSensorConfig> labSensorConfigList) |
2303 |
02 Apr 14 |
olle |
143 |
{ |
2303 |
02 Apr 14 |
olle |
144 |
this.labSensorConfigList = labSensorConfigList; |
2303 |
02 Apr 14 |
olle |
145 |
} |
2303 |
02 Apr 14 |
olle |
146 |
|
2303 |
02 Apr 14 |
olle |
147 |
public LabEnvironmentConfiguration() |
2303 |
02 Apr 14 |
olle |
148 |
{ |
2303 |
02 Apr 14 |
olle |
// Get configuration from configuration file |
2303 |
02 Apr 14 |
olle |
150 |
fetchConfiguration(); |
2303 |
02 Apr 14 |
olle |
151 |
} |
2303 |
02 Apr 14 |
olle |
152 |
|
2303 |
02 Apr 14 |
olle |
153 |
/** |
2303 |
02 Apr 14 |
olle |
* Reads configuration from configuration XML file |
2303 |
02 Apr 14 |
olle |
* labenv-config.xml and stores values in instance variables. |
2303 |
02 Apr 14 |
olle |
156 |
*/ |
2303 |
02 Apr 14 |
olle |
157 |
private void fetchConfiguration() |
2303 |
02 Apr 14 |
olle |
158 |
{ |
2303 |
02 Apr 14 |
olle |
159 |
/* |
2303 |
02 Apr 14 |
olle |
Format of lab environment configuration file labenv-config.xml is: |
2303 |
02 Apr 14 |
olle |
<parameters> |
2303 |
02 Apr 14 |
olle |
<title>...</title> |
2337 |
08 Apr 14 |
olle |
<dbfilename>...</dbfilename> |
2303 |
02 Apr 14 |
olle |
<timeoutinseconds>...</timeoutinseconds> |
2303 |
02 Apr 14 |
olle |
<storageintervalinseconds>...</storageintervalinseconds> |
2303 |
02 Apr 14 |
olle |
<numberofmeasurementsperstoredvalue>...</numberofmeasurementsperstoredvalue> |
2432 |
16 May 14 |
olle |
<emailconfig> |
2432 |
16 May 14 |
olle |
<smtphost>...</smtphost> |
2432 |
16 May 14 |
olle |
<fromaddress>...</fromaddress> |
2432 |
16 May 14 |
olle |
<fromname>...</fromname> |
2432 |
16 May 14 |
olle |
</emailconfig> |
2303 |
02 Apr 14 |
olle |
<labsensors> |
2303 |
02 Apr 14 |
olle |
<labsensor> |
2303 |
02 Apr 14 |
olle |
<number>...</number> |
2303 |
02 Apr 14 |
olle |
<url>...</url> |
2303 |
02 Apr 14 |
olle |
<name>...</name> |
2303 |
02 Apr 14 |
olle |
<startdate>...</startdate> |
2303 |
02 Apr 14 |
olle |
<alarms> |
2303 |
02 Apr 14 |
olle |
<alarm> |
2303 |
02 Apr 14 |
olle |
<starttime>...</starttime> |
2303 |
02 Apr 14 |
olle |
<endtime>...</endtime> |
2415 |
09 May 14 |
olle |
<!-- "all", "mondaytofriday", "saturdaytosunday", "workdays", or "nonworkdays" --> |
2415 |
09 May 14 |
olle |
<weekdayfilter>...</weekdayfilter> |
2303 |
02 Apr 14 |
olle |
<temperaturemin>...</temperaturemin> |
2303 |
02 Apr 14 |
olle |
<temperaturemax>...</temperaturemax> |
2303 |
02 Apr 14 |
olle |
<humiditymin>...</humiditymin> |
2303 |
02 Apr 14 |
olle |
<humiditymax>...</humiditymax> |
2303 |
02 Apr 14 |
olle |
<userlist> |
2424 |
14 May 14 |
olle |
<user> |
2424 |
14 May 14 |
olle |
<id>...</id> |
2424 |
14 May 14 |
olle |
<emailaddress>...</emailaddress> |
2424 |
14 May 14 |
olle |
</user> |
2303 |
02 Apr 14 |
olle |
</userlist> |
2303 |
02 Apr 14 |
olle |
</alarm> |
2303 |
02 Apr 14 |
olle |
</alarms> |
2303 |
02 Apr 14 |
olle |
</labsensor> |
2303 |
02 Apr 14 |
olle |
197 |
... |
2303 |
02 Apr 14 |
olle |
</labsensors> |
2303 |
02 Apr 14 |
olle |
</parameters> |
2303 |
02 Apr 14 |
olle |
200 |
*/ |
2303 |
02 Apr 14 |
olle |
201 |
try |
2303 |
02 Apr 14 |
olle |
202 |
{ |
2321 |
04 Apr 14 |
olle |
203 |
URL confFileUrl = LabEnvironmentConfiguration.class.getResource("/labenv-config.xml"); |
2330 |
08 Apr 14 |
olle |
204 |
if (confFileUrl == null) |
2330 |
08 Apr 14 |
olle |
205 |
{ |
2330 |
08 Apr 14 |
olle |
206 |
log.debug("Configuration file labenv-config.xml not found."); |
2330 |
08 Apr 14 |
olle |
207 |
throw new RuntimeException("Configuration file labenv-config.xml not found."); |
2330 |
08 Apr 14 |
olle |
208 |
} |
2303 |
02 Apr 14 |
olle |
209 |
URL dtdFile = null; |
3013 |
05 Dec 14 |
nicklas |
210 |
Document dom = XmlUtil2.getValidatedXml(confFileUrl, dtdFile); |
2303 |
02 Apr 14 |
olle |
211 |
Element root = dom.getRootElement(); |
2303 |
02 Apr 14 |
olle |
212 |
Namespace ns = root.getNamespace(); |
2303 |
02 Apr 14 |
olle |
213 |
Element parametersTag = root; |
2303 |
02 Apr 14 |
olle |
// Parse XML configuration file and store configuration values in instance variables |
2303 |
02 Apr 14 |
olle |
215 |
if (parametersTag != null) |
2303 |
02 Apr 14 |
olle |
216 |
{ |
2337 |
08 Apr 14 |
olle |
217 |
String dbFileNameConf = Values.getStringOrNull(parametersTag.getChildText("dbfilename", ns)); |
2303 |
02 Apr 14 |
olle |
218 |
Integer timeoutInSecondsConf = Values.getInteger(parametersTag.getChildText("timeoutinseconds", ns), null); |
2337 |
08 Apr 14 |
olle |
219 |
Long storageIntervalInSecondsConf = Values.getLong(parametersTag.getChildText("storageintervalinseconds", ns), null); |
2303 |
02 Apr 14 |
olle |
220 |
Integer numberOfMeasurementsPerStoredValueConf = Values.getInteger(parametersTag.getChildText("numberofmeasurementsperstoredvalue", ns), null); |
2337 |
08 Apr 14 |
olle |
// Check if some default value(s) should be used |
2337 |
08 Apr 14 |
olle |
222 |
if (dbFileNameConf == null || dbFileNameConf.equals("")) |
2303 |
02 Apr 14 |
olle |
223 |
{ |
2337 |
08 Apr 14 |
olle |
224 |
dbFileNameConf = DEFAULT_DB_FILENAME; |
2303 |
02 Apr 14 |
olle |
225 |
} |
2337 |
08 Apr 14 |
olle |
226 |
if (timeoutInSecondsConf == null || timeoutInSecondsConf <= 0) |
2337 |
08 Apr 14 |
olle |
227 |
{ |
2337 |
08 Apr 14 |
olle |
228 |
timeoutInSecondsConf = DEFAULT_TIMEOUT_IN_SECONDS; |
2337 |
08 Apr 14 |
olle |
229 |
} |
2337 |
08 Apr 14 |
olle |
230 |
if (storageIntervalInSecondsConf == null || storageIntervalInSecondsConf <= 0) |
2337 |
08 Apr 14 |
olle |
231 |
{ |
2337 |
08 Apr 14 |
olle |
232 |
storageIntervalInSecondsConf = DEFAULT_STORAGE_INTERVAL_IN_SECONDS; |
2337 |
08 Apr 14 |
olle |
233 |
} |
2337 |
08 Apr 14 |
olle |
234 |
if (numberOfMeasurementsPerStoredValueConf == null || numberOfMeasurementsPerStoredValueConf <= 0) |
2337 |
08 Apr 14 |
olle |
235 |
{ |
2337 |
08 Apr 14 |
olle |
236 |
numberOfMeasurementsPerStoredValueConf = DEFAULT_NUMBER_OF_MEASUREMENTS_PER_STORED_VALUE; |
2337 |
08 Apr 14 |
olle |
237 |
} |
2337 |
08 Apr 14 |
olle |
238 |
long measurementIntervalInSecondsConf = storageIntervalInSecondsConf/numberOfMeasurementsPerStoredValueConf; |
2337 |
08 Apr 14 |
olle |
239 |
log.debug("dbFileNameConf = " + dbFileNameConf); |
2303 |
02 Apr 14 |
olle |
240 |
log.debug("timeoutInSecondsConf = " + timeoutInSecondsConf); |
2303 |
02 Apr 14 |
olle |
241 |
log.debug("storageIntervalInSecondsConf = " + storageIntervalInSecondsConf); |
2303 |
02 Apr 14 |
olle |
242 |
log.debug("numberOfMeasurementsPerStoredValueConf = " + numberOfMeasurementsPerStoredValueConf); |
2303 |
02 Apr 14 |
olle |
243 |
log.debug("measurementIntervalInSecondsConf = " + measurementIntervalInSecondsConf); |
2337 |
08 Apr 14 |
olle |
244 |
setDbFileName(dbFileNameConf); |
2303 |
02 Apr 14 |
olle |
245 |
setTimeoutInSeconds(timeoutInSecondsConf); |
2303 |
02 Apr 14 |
olle |
246 |
setStorageIntervalInSeconds(storageIntervalInSecondsConf); |
2303 |
02 Apr 14 |
olle |
247 |
setNumberOfMeasurementsPerStoredValue(numberOfMeasurementsPerStoredValueConf); |
2303 |
02 Apr 14 |
olle |
248 |
setMeasurementIntervalInSeconds(measurementIntervalInSecondsConf); |
2432 |
16 May 14 |
olle |
249 |
Element emailConfigTag = parametersTag.getChild("emailconfig", ns); |
2432 |
16 May 14 |
olle |
250 |
if (emailConfigTag != null) |
2432 |
16 May 14 |
olle |
251 |
{ |
2432 |
16 May 14 |
olle |
252 |
String smtpHostConf = Values.getStringOrNull(emailConfigTag.getChildText("smtphost", ns)); |
2432 |
16 May 14 |
olle |
253 |
String fromAddressConf = Values.getStringOrNull(emailConfigTag.getChildText("fromaddress", ns)); |
2432 |
16 May 14 |
olle |
254 |
String fromNameConf = Values.getStringOrNull(emailConfigTag.getChildText("fromname", ns)); |
2432 |
16 May 14 |
olle |
255 |
emailConfig = new EmailConfig(); |
2432 |
16 May 14 |
olle |
256 |
emailConfig.setSmtpHost(smtpHostConf); |
2432 |
16 May 14 |
olle |
257 |
emailConfig.setFromAddress(fromAddressConf); |
2432 |
16 May 14 |
olle |
258 |
emailConfig.setFromName(fromNameConf); |
2432 |
16 May 14 |
olle |
259 |
} |
2303 |
02 Apr 14 |
olle |
260 |
List<LabSensorConfig> labSensorConfigList = getLabSensorConfigList(); |
2303 |
02 Apr 14 |
olle |
261 |
Element labSensorsTag = parametersTag.getChild("labsensors", ns); |
2303 |
02 Apr 14 |
olle |
262 |
if (labSensorsTag != null) |
2303 |
02 Apr 14 |
olle |
263 |
{ |
2303 |
02 Apr 14 |
olle |
264 |
List<Element> labSensorTags = labSensorsTag.getChildren("labsensor", ns); |
2303 |
02 Apr 14 |
olle |
265 |
log.debug("Found " + labSensorTags.size() + " lab sensor(s) in file: " + configFileName); |
2303 |
02 Apr 14 |
olle |
266 |
for (Element labSensorTag : labSensorTags) |
2303 |
02 Apr 14 |
olle |
267 |
{ |
2303 |
02 Apr 14 |
olle |
268 |
LabSensorConfig labSensorConfig = new LabSensorConfig(); |
2303 |
02 Apr 14 |
olle |
269 |
if (labSensorTag != null) |
2303 |
02 Apr 14 |
olle |
270 |
{ |
2303 |
02 Apr 14 |
olle |
271 |
Integer numberConf = Values.getInteger(labSensorTag.getChildText("number", ns), null); |
2303 |
02 Apr 14 |
olle |
272 |
String urlConf = Values.getStringOrNull(labSensorTag.getChildText("url", ns)); |
2303 |
02 Apr 14 |
olle |
273 |
String nameConf = Values.getStringOrNull(labSensorTag.getChildText("name", ns)); |
2303 |
02 Apr 14 |
olle |
274 |
String startDateConf = Values.getStringOrNull(labSensorTag.getChildText("startdate", ns)); |
2532 |
26 Jun 14 |
olle |
275 |
startDateConf = convertToDateStringWithHyphens(startDateConf); |
2303 |
02 Apr 14 |
olle |
276 |
List<LabSensorAlarmConfig> alarmList = fetchLabSensorAlarmList(labSensorTag, ns); |
2303 |
02 Apr 14 |
olle |
277 |
log.debug("numberConf = " + numberConf + " urlConf = " + urlConf + " nameConf = \"" + nameConf + "\" startDateConf = " + startDateConf); |
2303 |
02 Apr 14 |
olle |
278 |
if (alarmList != null && alarmList.size() > 0) |
2303 |
02 Apr 14 |
olle |
279 |
{ |
2303 |
02 Apr 14 |
olle |
280 |
for (LabSensorAlarmConfig alarm: alarmList) |
2303 |
02 Apr 14 |
olle |
281 |
{ |
2303 |
02 Apr 14 |
olle |
282 |
if (alarm != null) |
2303 |
02 Apr 14 |
olle |
283 |
{ |
2424 |
14 May 14 |
olle |
284 |
log.debug("alarm no. " + alarm.getNo() + ": startTime = " + alarm.getStartTime()); |
2424 |
14 May 14 |
olle |
285 |
log.debug("alarm no. " + alarm.getNo() + ": startTimeSecondsFromMidnight = " + alarm.getStartTimeSecondsFromMidnight()); |
2424 |
14 May 14 |
olle |
286 |
log.debug("alarm no. " + alarm.getNo() + ": endTime = " + alarm.getEndTime()); |
2424 |
14 May 14 |
olle |
287 |
log.debug("alarm no. " + alarm.getNo() + ": endTimeSecondsFromMidnight = " + alarm.getEndTimeSecondsFromMidnight()); |
2424 |
14 May 14 |
olle |
288 |
log.debug("alarm no. " + alarm.getNo() + ": weekdayFilter = " + alarm.getWeekdayFilter()); |
2424 |
14 May 14 |
olle |
289 |
log.debug("alarm no. " + alarm.getNo() + ": temperatureMin = " + alarm.getTemperatureMin()); |
2424 |
14 May 14 |
olle |
290 |
log.debug("alarm no. " + alarm.getNo() + ": temperatureMax = " + alarm.getTemperatureMax()); |
2424 |
14 May 14 |
olle |
291 |
log.debug("alarm no. " + alarm.getNo() + ": humidityMin = " + alarm.getHumidityMin()); |
2424 |
14 May 14 |
olle |
292 |
log.debug("alarm no. " + alarm.getNo() + ": humidityMax = " + alarm.getHumidityMax()); |
2424 |
14 May 14 |
olle |
293 |
List<LabSensorAlarmUserConfig> userList = alarm.getUserList(); |
2303 |
02 Apr 14 |
olle |
294 |
if (userList != null && userList.size() > 0) |
2303 |
02 Apr 14 |
olle |
295 |
{ |
2303 |
02 Apr 14 |
olle |
296 |
int userIndex = 0; |
2424 |
14 May 14 |
olle |
297 |
for (LabSensorAlarmUserConfig user: userList) |
2303 |
02 Apr 14 |
olle |
298 |
{ |
2303 |
02 Apr 14 |
olle |
299 |
if (user != null) |
2303 |
02 Apr 14 |
olle |
300 |
{ |
2424 |
14 May 14 |
olle |
301 |
log.debug("alarm no. " + alarm.getNo() + ": user no. " + userIndex + " user = " + user.getId() + " emailAddress = " + user.getEmailAddress()); |
2424 |
14 May 14 |
olle |
302 |
userIndex++; |
2303 |
02 Apr 14 |
olle |
303 |
} |
2303 |
02 Apr 14 |
olle |
304 |
} |
2303 |
02 Apr 14 |
olle |
305 |
} |
2303 |
02 Apr 14 |
olle |
306 |
} |
2303 |
02 Apr 14 |
olle |
307 |
} |
2303 |
02 Apr 14 |
olle |
308 |
} |
2303 |
02 Apr 14 |
olle |
// Add configuration values to instance variables |
2303 |
02 Apr 14 |
olle |
310 |
labSensorConfig.setNumber(numberConf); |
2303 |
02 Apr 14 |
olle |
311 |
labSensorConfig.setUrl(urlConf); |
2303 |
02 Apr 14 |
olle |
312 |
labSensorConfig.setName(nameConf); |
2303 |
02 Apr 14 |
olle |
313 |
labSensorConfig.setStartDate(startDateConf); |
2303 |
02 Apr 14 |
olle |
314 |
labSensorConfig.setAlarmList(alarmList); |
2303 |
02 Apr 14 |
olle |
315 |
labSensorConfigList.add(labSensorConfig); |
2303 |
02 Apr 14 |
olle |
316 |
} |
2303 |
02 Apr 14 |
olle |
317 |
} |
2303 |
02 Apr 14 |
olle |
318 |
} |
2303 |
02 Apr 14 |
olle |
319 |
setLabSensorConfigList(labSensorConfigList); |
2303 |
02 Apr 14 |
olle |
320 |
} |
2303 |
02 Apr 14 |
olle |
321 |
} |
2303 |
02 Apr 14 |
olle |
322 |
catch (Exception e) |
2303 |
02 Apr 14 |
olle |
323 |
{ |
2321 |
04 Apr 14 |
olle |
324 |
log.debug("Exception thrown when accessing configuration file labenv-config.xml: " + e); |
2331 |
08 Apr 14 |
olle |
325 |
throw new RuntimeException("Exception thrown when accessing configuration file labenv-config.xml: ", e); |
2303 |
02 Apr 14 |
olle |
326 |
} |
2303 |
02 Apr 14 |
olle |
327 |
} |
2303 |
02 Apr 14 |
olle |
328 |
|
2532 |
26 Jun 14 |
olle |
329 |
|
2303 |
02 Apr 14 |
olle |
330 |
private List<LabSensorAlarmConfig> fetchLabSensorAlarmList(Element labSensorTag, Namespace ns) |
2303 |
02 Apr 14 |
olle |
331 |
{ |
2303 |
02 Apr 14 |
olle |
332 |
List<LabSensorAlarmConfig> alarmList = null; |
2303 |
02 Apr 14 |
olle |
333 |
if (labSensorTag != null) |
2303 |
02 Apr 14 |
olle |
334 |
{ |
2303 |
02 Apr 14 |
olle |
335 |
Element alarmsTag = labSensorTag.getChild("alarms", ns); |
2303 |
02 Apr 14 |
olle |
336 |
if (alarmsTag != null) |
2303 |
02 Apr 14 |
olle |
337 |
{ |
2303 |
02 Apr 14 |
olle |
338 |
List<Element> alarmTags = alarmsTag.getChildren("alarm", ns); |
2303 |
02 Apr 14 |
olle |
339 |
log.debug("Found " + alarmTags.size() + " alarm(s) in file: " + configFileName); |
2303 |
02 Apr 14 |
olle |
340 |
for (Element alarmTag : alarmTags) |
2303 |
02 Apr 14 |
olle |
341 |
{ |
2303 |
02 Apr 14 |
olle |
342 |
if (alarmTag != null) |
2303 |
02 Apr 14 |
olle |
343 |
{ |
2303 |
02 Apr 14 |
olle |
344 |
String startTimeConf = Values.getStringOrNull(alarmTag.getChildText("starttime", ns)); |
2532 |
26 Jun 14 |
olle |
345 |
startTimeConf = convertToTimeStringInFormatHHMM(startTimeConf); |
2303 |
02 Apr 14 |
olle |
346 |
String endTimeConf = Values.getStringOrNull(alarmTag.getChildText("endtime", ns)); |
2532 |
26 Jun 14 |
olle |
347 |
endTimeConf = convertToTimeStringInFormatHHMM(endTimeConf); |
2415 |
09 May 14 |
olle |
348 |
String weekdayFilterConf = Values.getStringOrNull(alarmTag.getChildText("weekdayfilter", ns)); |
2303 |
02 Apr 14 |
olle |
349 |
Double temperatureMinConf = Values.getDouble(alarmTag.getChildText("temperaturemin", ns), null); |
2303 |
02 Apr 14 |
olle |
350 |
Double temperatureMaxConf = Values.getDouble(alarmTag.getChildText("temperaturemax", ns), null); |
2303 |
02 Apr 14 |
olle |
351 |
Double humidityMinConf = Values.getDouble(alarmTag.getChildText("humiditymin", ns), null); |
2303 |
02 Apr 14 |
olle |
352 |
Double humidityMaxConf = Values.getDouble(alarmTag.getChildText("humiditymax", ns), null); |
2424 |
14 May 14 |
olle |
353 |
List<LabSensorAlarmUserConfig> userList = fetchLabSensorAlarmUserList(alarmTag, ns); |
2424 |
14 May 14 |
olle |
354 |
/* |
2303 |
02 Apr 14 |
olle |
Element userListTag = alarmTag.getChild("userlist", ns); |
2303 |
02 Apr 14 |
olle |
if (userListTag != null) |
2303 |
02 Apr 14 |
olle |
357 |
{ |
2303 |
02 Apr 14 |
olle |
List<Element> userTags = userListTag.getChildren("user", ns); |
2303 |
02 Apr 14 |
olle |
log.debug("Found " + userTags.size() + " alarm user(s) in file: " + configFileName); |
2303 |
02 Apr 14 |
olle |
for (Element userTag : userTags) |
2303 |
02 Apr 14 |
olle |
361 |
{ |
2303 |
02 Apr 14 |
olle |
if (userTag != null) |
2303 |
02 Apr 14 |
olle |
363 |
{ |
2303 |
02 Apr 14 |
olle |
String userConf = Values.getStringOrNull(userTag.getText()); |
2303 |
02 Apr 14 |
olle |
log.debug("userConf = " + userConf + " in file: " + configFileName); |
2303 |
02 Apr 14 |
olle |
if (userConf != null && !userConf.equals("")) |
2303 |
02 Apr 14 |
olle |
367 |
{ |
2303 |
02 Apr 14 |
olle |
if (userList == null) |
2303 |
02 Apr 14 |
olle |
369 |
{ |
2303 |
02 Apr 14 |
olle |
userList = new ArrayList<String>(); |
2303 |
02 Apr 14 |
olle |
371 |
} |
2303 |
02 Apr 14 |
olle |
userList.add(userConf); |
2303 |
02 Apr 14 |
olle |
373 |
} |
2303 |
02 Apr 14 |
olle |
374 |
} |
2303 |
02 Apr 14 |
olle |
375 |
} |
2303 |
02 Apr 14 |
olle |
376 |
} |
2424 |
14 May 14 |
olle |
377 |
*/ |
2303 |
02 Apr 14 |
olle |
// Create and fill LabSensorAlarmConfig object if non-null data |
2424 |
14 May 14 |
olle |
379 |
LabSensorAlarmConfig alarm = null; |
2303 |
02 Apr 14 |
olle |
380 |
if (startTimeConf != null && !startTimeConf.equals("")) |
2303 |
02 Apr 14 |
olle |
381 |
{ |
2424 |
14 May 14 |
olle |
382 |
alarm = createIfNeeded(alarm); |
2424 |
14 May 14 |
olle |
383 |
alarm.setStartTime(startTimeConf); |
2303 |
02 Apr 14 |
olle |
384 |
long startTimeSecondsFromMidnight = secondsFromMidnight(startTimeConf); |
2424 |
14 May 14 |
olle |
385 |
alarm.setStartTimeSecondsFromMidnight(startTimeSecondsFromMidnight); |
2303 |
02 Apr 14 |
olle |
386 |
} |
2303 |
02 Apr 14 |
olle |
387 |
if (endTimeConf != null && !endTimeConf.equals("")) |
2303 |
02 Apr 14 |
olle |
388 |
{ |
2424 |
14 May 14 |
olle |
389 |
alarm = createIfNeeded(alarm); |
2424 |
14 May 14 |
olle |
390 |
alarm.setEndTime(endTimeConf); |
2303 |
02 Apr 14 |
olle |
391 |
long endTimeSecondsFromMidnight = secondsFromMidnight(endTimeConf); |
2424 |
14 May 14 |
olle |
392 |
alarm.setEndTimeSecondsFromMidnight(endTimeSecondsFromMidnight); |
2303 |
02 Apr 14 |
olle |
393 |
} |
2415 |
09 May 14 |
olle |
394 |
if (weekdayFilterConf != null && !weekdayFilterConf.equals("")) |
2415 |
09 May 14 |
olle |
395 |
{ |
2424 |
14 May 14 |
olle |
396 |
alarm = createIfNeeded(alarm); |
2424 |
14 May 14 |
olle |
397 |
alarm.setWeekdayFilter(weekdayFilterConf); |
2415 |
09 May 14 |
olle |
398 |
} |
2303 |
02 Apr 14 |
olle |
399 |
if (temperatureMinConf != null) |
2303 |
02 Apr 14 |
olle |
400 |
{ |
2424 |
14 May 14 |
olle |
401 |
alarm = createIfNeeded(alarm); |
2424 |
14 May 14 |
olle |
402 |
alarm.setTemperatureMin(temperatureMinConf); |
2303 |
02 Apr 14 |
olle |
403 |
} |
2303 |
02 Apr 14 |
olle |
404 |
if (temperatureMaxConf != null) |
2303 |
02 Apr 14 |
olle |
405 |
{ |
2424 |
14 May 14 |
olle |
406 |
alarm = createIfNeeded(alarm); |
2424 |
14 May 14 |
olle |
407 |
alarm.setTemperatureMax(temperatureMaxConf); |
2303 |
02 Apr 14 |
olle |
408 |
} |
2303 |
02 Apr 14 |
olle |
409 |
if (humidityMinConf != null) |
2303 |
02 Apr 14 |
olle |
410 |
{ |
2424 |
14 May 14 |
olle |
411 |
alarm = createIfNeeded(alarm); |
2424 |
14 May 14 |
olle |
412 |
alarm.setHumidityMin(humidityMinConf); |
2303 |
02 Apr 14 |
olle |
413 |
} |
2303 |
02 Apr 14 |
olle |
414 |
if (humidityMaxConf != null) |
2303 |
02 Apr 14 |
olle |
415 |
{ |
2424 |
14 May 14 |
olle |
416 |
alarm = createIfNeeded(alarm); |
2424 |
14 May 14 |
olle |
417 |
alarm.setHumidityMax(humidityMaxConf); |
2303 |
02 Apr 14 |
olle |
418 |
} |
2303 |
02 Apr 14 |
olle |
419 |
if (userList != null) |
2303 |
02 Apr 14 |
olle |
420 |
{ |
2424 |
14 May 14 |
olle |
421 |
alarm = createIfNeeded(alarm); |
2424 |
14 May 14 |
olle |
422 |
alarm.setUserList(userList); |
2303 |
02 Apr 14 |
olle |
423 |
} |
2424 |
14 May 14 |
olle |
424 |
if (alarm != null) |
2303 |
02 Apr 14 |
olle |
425 |
{ |
2303 |
02 Apr 14 |
olle |
426 |
if (alarmList == null) |
2303 |
02 Apr 14 |
olle |
427 |
{ |
2303 |
02 Apr 14 |
olle |
428 |
alarmList = new ArrayList<LabSensorAlarmConfig>(); |
2303 |
02 Apr 14 |
olle |
429 |
} |
2424 |
14 May 14 |
olle |
430 |
alarmList.add(alarm); |
2303 |
02 Apr 14 |
olle |
431 |
} |
2303 |
02 Apr 14 |
olle |
432 |
} |
2303 |
02 Apr 14 |
olle |
433 |
} |
2303 |
02 Apr 14 |
olle |
434 |
} |
2303 |
02 Apr 14 |
olle |
435 |
} |
2303 |
02 Apr 14 |
olle |
436 |
return alarmList; |
2303 |
02 Apr 14 |
olle |
437 |
} |
2303 |
02 Apr 14 |
olle |
438 |
|
2424 |
14 May 14 |
olle |
439 |
|
2424 |
14 May 14 |
olle |
440 |
private List<LabSensorAlarmUserConfig> fetchLabSensorAlarmUserList(Element alarmTag, Namespace ns) |
2424 |
14 May 14 |
olle |
441 |
{ |
2424 |
14 May 14 |
olle |
442 |
List<LabSensorAlarmUserConfig> userList = null; |
2424 |
14 May 14 |
olle |
443 |
if (alarmTag != null) |
2424 |
14 May 14 |
olle |
444 |
{ |
2424 |
14 May 14 |
olle |
445 |
Element userlistTag = alarmTag.getChild("userlist", ns); |
2424 |
14 May 14 |
olle |
446 |
if (userlistTag != null) |
2424 |
14 May 14 |
olle |
447 |
{ |
2424 |
14 May 14 |
olle |
448 |
List<Element> userTags = userlistTag.getChildren("user", ns); |
2424 |
14 May 14 |
olle |
449 |
log.debug("Found " + userTags.size() + " user(s) in file: " + configFileName); |
2424 |
14 May 14 |
olle |
450 |
for (Element userTag : userTags) |
2424 |
14 May 14 |
olle |
451 |
{ |
2424 |
14 May 14 |
olle |
452 |
if (userTag != null) |
2424 |
14 May 14 |
olle |
453 |
{ |
2424 |
14 May 14 |
olle |
454 |
String idConf = Values.getStringOrNull(userTag.getChildText("id", ns)); |
2424 |
14 May 14 |
olle |
455 |
String emailAddressConf = Values.getStringOrNull(userTag.getChildText("emailaddress", ns)); |
2424 |
14 May 14 |
olle |
// Create and fill LabSensorAlarmUserConfig object if non-null data |
2424 |
14 May 14 |
olle |
457 |
LabSensorAlarmUserConfig labSensorAlarmUserConfig = null; |
2424 |
14 May 14 |
olle |
458 |
if (idConf != null && !idConf.equals("")) |
2424 |
14 May 14 |
olle |
459 |
{ |
2424 |
14 May 14 |
olle |
460 |
labSensorAlarmUserConfig = createIfNeeded(labSensorAlarmUserConfig); |
2424 |
14 May 14 |
olle |
461 |
labSensorAlarmUserConfig.setId(idConf); |
2424 |
14 May 14 |
olle |
462 |
} |
2424 |
14 May 14 |
olle |
463 |
if (emailAddressConf != null && !emailAddressConf.equals("")) |
2424 |
14 May 14 |
olle |
464 |
{ |
2424 |
14 May 14 |
olle |
465 |
labSensorAlarmUserConfig = createIfNeeded(labSensorAlarmUserConfig); |
2424 |
14 May 14 |
olle |
466 |
labSensorAlarmUserConfig.setEmailAddress(emailAddressConf); |
2424 |
14 May 14 |
olle |
467 |
} |
2424 |
14 May 14 |
olle |
468 |
if (labSensorAlarmUserConfig != null) |
2424 |
14 May 14 |
olle |
469 |
{ |
2424 |
14 May 14 |
olle |
470 |
if (userList == null) |
2424 |
14 May 14 |
olle |
471 |
{ |
2424 |
14 May 14 |
olle |
472 |
userList = new ArrayList<LabSensorAlarmUserConfig>(); |
2424 |
14 May 14 |
olle |
473 |
} |
2424 |
14 May 14 |
olle |
474 |
userList.add(labSensorAlarmUserConfig); |
2424 |
14 May 14 |
olle |
475 |
} |
2424 |
14 May 14 |
olle |
476 |
} |
2424 |
14 May 14 |
olle |
477 |
} |
2424 |
14 May 14 |
olle |
478 |
} |
2424 |
14 May 14 |
olle |
479 |
} |
2424 |
14 May 14 |
olle |
480 |
return userList; |
2424 |
14 May 14 |
olle |
481 |
} |
2424 |
14 May 14 |
olle |
482 |
|
2532 |
26 Jun 14 |
olle |
483 |
|
2532 |
26 Jun 14 |
olle |
484 |
/** |
2532 |
26 Jun 14 |
olle |
* Converts input date string from format YYYYMMDD to YYYY-MM-DD, |
2532 |
26 Jun 14 |
olle |
* if necessary. |
2532 |
26 Jun 14 |
olle |
487 |
* |
2532 |
26 Jun 14 |
olle |
* @param dateStr String Input date string |
2532 |
26 Jun 14 |
olle |
* @return String Date string in YYYY-MM-DD format if input in YYYYMMDD, otherwise no change |
2532 |
26 Jun 14 |
olle |
490 |
*/ |
2532 |
26 Jun 14 |
olle |
491 |
String convertToDateStringWithHyphens(String dateStr) |
2532 |
26 Jun 14 |
olle |
492 |
{ |
2532 |
26 Jun 14 |
olle |
493 |
String outDateStr = dateStr; |
2532 |
26 Jun 14 |
olle |
494 |
if (dateStr != null) |
2532 |
26 Jun 14 |
olle |
495 |
{ |
2532 |
26 Jun 14 |
olle |
496 |
if (dateStr.length() == 8) |
2532 |
26 Jun 14 |
olle |
497 |
{ |
2532 |
26 Jun 14 |
olle |
// Expected format: YYYYMMDD |
2532 |
26 Jun 14 |
olle |
499 |
String yearStr = dateStr.substring(0, 4); |
2532 |
26 Jun 14 |
olle |
500 |
String monthStr = dateStr.substring(4, 6); |
2532 |
26 Jun 14 |
olle |
501 |
String dayStr = dateStr.substring(6, 8); |
2532 |
26 Jun 14 |
olle |
502 |
outDateStr = yearStr + "-" + monthStr + "-" + dayStr; |
2532 |
26 Jun 14 |
olle |
503 |
} |
2532 |
26 Jun 14 |
olle |
504 |
} |
2532 |
26 Jun 14 |
olle |
505 |
return outDateStr; |
2532 |
26 Jun 14 |
olle |
506 |
} |
2532 |
26 Jun 14 |
olle |
507 |
|
2532 |
26 Jun 14 |
olle |
508 |
/** |
2532 |
26 Jun 14 |
olle |
* Converts input time string from formats HHMMSS, HH:MM:SS, and HH:MM to HHMM, |
2532 |
26 Jun 14 |
olle |
* if necessary. If input time contains seconds, the latter will be dropped, |
2532 |
26 Jun 14 |
olle |
* i.e. the minute entry will not be incremented if the number of seconds >= 30. |
2532 |
26 Jun 14 |
olle |
* If input time string is null or an empty string, no change. |
2532 |
26 Jun 14 |
olle |
513 |
* |
2532 |
26 Jun 14 |
olle |
* @param timeStr String Input time string |
2532 |
26 Jun 14 |
olle |
* @return String Time string in HHMM format |
2532 |
26 Jun 14 |
olle |
516 |
*/ |
2532 |
26 Jun 14 |
olle |
517 |
String convertToTimeStringInFormatHHMM(String timeStr) |
2532 |
26 Jun 14 |
olle |
518 |
{ |
2532 |
26 Jun 14 |
olle |
519 |
String outTimeStr = timeStr; |
2532 |
26 Jun 14 |
olle |
520 |
if (timeStr != null) |
2532 |
26 Jun 14 |
olle |
521 |
{ |
2532 |
26 Jun 14 |
olle |
522 |
if (timeStr.length() == 8) |
2532 |
26 Jun 14 |
olle |
523 |
{ |
2532 |
26 Jun 14 |
olle |
// Expected format: HH:MM:SS |
2532 |
26 Jun 14 |
olle |
525 |
String hourStr = timeStr.substring(0, 2); |
2532 |
26 Jun 14 |
olle |
526 |
String minuteStr = timeStr.substring(3, 5); |
2532 |
26 Jun 14 |
olle |
527 |
outTimeStr = hourStr + minuteStr; |
2532 |
26 Jun 14 |
olle |
528 |
} |
2532 |
26 Jun 14 |
olle |
529 |
else if (timeStr.length() == 6) |
2532 |
26 Jun 14 |
olle |
530 |
{ |
2532 |
26 Jun 14 |
olle |
// Expected format: HHMMSS |
2532 |
26 Jun 14 |
olle |
532 |
String hourStr = timeStr.substring(0, 2); |
2532 |
26 Jun 14 |
olle |
533 |
String minuteStr = timeStr.substring(2, 4); |
2532 |
26 Jun 14 |
olle |
534 |
outTimeStr = hourStr + minuteStr; |
2532 |
26 Jun 14 |
olle |
535 |
} |
2532 |
26 Jun 14 |
olle |
536 |
else if (timeStr.length() == 5) |
2532 |
26 Jun 14 |
olle |
537 |
{ |
2532 |
26 Jun 14 |
olle |
// Expected format: HH:MM |
2532 |
26 Jun 14 |
olle |
539 |
String hourStr = timeStr.substring(0, 2); |
2532 |
26 Jun 14 |
olle |
540 |
String minuteStr = timeStr.substring(3, 5); |
2532 |
26 Jun 14 |
olle |
541 |
outTimeStr = hourStr + minuteStr; |
2532 |
26 Jun 14 |
olle |
542 |
} |
2532 |
26 Jun 14 |
olle |
543 |
} |
2532 |
26 Jun 14 |
olle |
544 |
return outTimeStr; |
2532 |
26 Jun 14 |
olle |
545 |
} |
2532 |
26 Jun 14 |
olle |
546 |
|
2303 |
02 Apr 14 |
olle |
547 |
private LabSensorAlarmConfig createIfNeeded(LabSensorAlarmConfig labSensorAlarmConfig) |
2303 |
02 Apr 14 |
olle |
548 |
{ |
2303 |
02 Apr 14 |
olle |
549 |
if (labSensorAlarmConfig == null) |
2303 |
02 Apr 14 |
olle |
550 |
{ |
2303 |
02 Apr 14 |
olle |
551 |
labSensorAlarmConfig = new LabSensorAlarmConfig(); |
2424 |
14 May 14 |
olle |
// Update alarmNo before use, making first alarm have alarmNo equal to 1 |
2424 |
14 May 14 |
olle |
553 |
alarmNo++; |
2424 |
14 May 14 |
olle |
554 |
labSensorAlarmConfig.setNo(alarmNo); |
2303 |
02 Apr 14 |
olle |
555 |
} |
2303 |
02 Apr 14 |
olle |
556 |
return labSensorAlarmConfig; |
2303 |
02 Apr 14 |
olle |
557 |
} |
2303 |
02 Apr 14 |
olle |
558 |
|
2424 |
14 May 14 |
olle |
559 |
private LabSensorAlarmUserConfig createIfNeeded(LabSensorAlarmUserConfig labSensorAlarmUserConfig) |
2424 |
14 May 14 |
olle |
560 |
{ |
2424 |
14 May 14 |
olle |
561 |
if (labSensorAlarmUserConfig == null) |
2424 |
14 May 14 |
olle |
562 |
{ |
2424 |
14 May 14 |
olle |
563 |
labSensorAlarmUserConfig = new LabSensorAlarmUserConfig(); |
2424 |
14 May 14 |
olle |
564 |
} |
2424 |
14 May 14 |
olle |
565 |
return labSensorAlarmUserConfig; |
2424 |
14 May 14 |
olle |
566 |
} |
2424 |
14 May 14 |
olle |
567 |
|
2303 |
02 Apr 14 |
olle |
568 |
/** |
2303 |
02 Apr 14 |
olle |
* Returns the number of seconds from midnight from input Date object. |
2303 |
02 Apr 14 |
olle |
* Returns 0 if input Date object is`null`. |
2303 |
02 Apr 14 |
olle |
571 |
* |
2303 |
02 Apr 14 |
olle |
* @param date Date Input date/time Date object. |
2303 |
02 Apr 14 |
olle |
* @return long The number of seconds from midnight from input Date object. |
2303 |
02 Apr 14 |
olle |
574 |
*/ |
2303 |
02 Apr 14 |
olle |
575 |
public long secondsFromMidnight(Date date) |
2303 |
02 Apr 14 |
olle |
576 |
{ |
2303 |
02 Apr 14 |
olle |
577 |
long secondsFromMidnight = 0L; |
2303 |
02 Apr 14 |
olle |
578 |
if (date != null) |
2303 |
02 Apr 14 |
olle |
579 |
{ |
2303 |
02 Apr 14 |
olle |
580 |
DateFormatter pureDateFormat = new DateFormatter("yyyyMMdd"); |
2303 |
02 Apr 14 |
olle |
581 |
String pureDateStr = pureDateFormat.format(date); |
2303 |
02 Apr 14 |
olle |
582 |
String dateMidnightStr = pureDateStr + " 0000"; |
2303 |
02 Apr 14 |
olle |
583 |
Date dateMidnight = CONVERTER_STRING_TO_DATETIME.convert(dateMidnightStr); |
2303 |
02 Apr 14 |
olle |
584 |
secondsFromMidnight = (date.getTime() - dateMidnight.getTime())/1000L; |
2303 |
02 Apr 14 |
olle |
585 |
} |
2303 |
02 Apr 14 |
olle |
586 |
return secondsFromMidnight; |
2303 |
02 Apr 14 |
olle |
587 |
} |
2303 |
02 Apr 14 |
olle |
588 |
|
2303 |
02 Apr 14 |
olle |
589 |
/** |
2303 |
02 Apr 14 |
olle |
* Returns the number of seconds from midnight from input |
2303 |
02 Apr 14 |
olle |
* time string in format (HHmm). |
2303 |
02 Apr 14 |
olle |
* Returns 0 if input time string is`null` or blank. |
2303 |
02 Apr 14 |
olle |
593 |
* |
2303 |
02 Apr 14 |
olle |
* @param timeStr String Input time string in (HHmm) format. |
2303 |
02 Apr 14 |
olle |
* @return long The number of seconds from midnight from input time string. |
2303 |
02 Apr 14 |
olle |
596 |
*/ |
2303 |
02 Apr 14 |
olle |
597 |
private long secondsFromMidnight(String timeStr) |
2303 |
02 Apr 14 |
olle |
598 |
{ |
2303 |
02 Apr 14 |
olle |
599 |
long secondsFromMidnight = 0L; |
2303 |
02 Apr 14 |
olle |
600 |
if (timeStr != null && !timeStr.equals("")) |
2303 |
02 Apr 14 |
olle |
601 |
{ |
2303 |
02 Apr 14 |
olle |
602 |
String dummyPureDate = "10700102"; |
2303 |
02 Apr 14 |
olle |
603 |
String dateStr = dummyPureDate + " " + timeStr; |
2303 |
02 Apr 14 |
olle |
604 |
String dateMidnightStr = dummyPureDate + " 0000"; |
2303 |
02 Apr 14 |
olle |
605 |
Date dateMidnight = CONVERTER_STRING_TO_DATETIME.convert(dateMidnightStr); |
2303 |
02 Apr 14 |
olle |
606 |
Date date = CONVERTER_STRING_TO_DATETIME.convert(dateStr); |
2303 |
02 Apr 14 |
olle |
607 |
secondsFromMidnight = (date.getTime() - dateMidnight.getTime())/1000L; |
2303 |
02 Apr 14 |
olle |
608 |
} |
2303 |
02 Apr 14 |
olle |
609 |
return secondsFromMidnight; |
2303 |
02 Apr 14 |
olle |
610 |
} |
2303 |
02 Apr 14 |
olle |
611 |
|
2303 |
02 Apr 14 |
olle |
612 |
/** |
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`null` or blank. |
2303 |
02 Apr 14 |
olle |
615 |
* |
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 |
618 |
*/ |
2303 |
02 Apr 14 |
olle |
619 |
private Date dateTimeStringToDate(String dateTimeStr) |
2303 |
02 Apr 14 |
olle |
620 |
{ |
2303 |
02 Apr 14 |
olle |
621 |
Date date = null; |
2303 |
02 Apr 14 |
olle |
622 |
if (dateTimeStr != null && !dateTimeStr.equals("")) |
2303 |
02 Apr 14 |
olle |
623 |
{ |
2303 |
02 Apr 14 |
olle |
624 |
date = CONVERTER_STRING_TO_DATETIME.convert(dateTimeStr); |
2303 |
02 Apr 14 |
olle |
625 |
} |
2303 |
02 Apr 14 |
olle |
626 |
return date; |
2303 |
02 Apr 14 |
olle |
627 |
} |
2303 |
02 Apr 14 |
olle |
628 |
|
2303 |
02 Apr 14 |
olle |
629 |
/** |
2303 |
02 Apr 14 |
olle |
Find the lab sensor configuration for the given sensor number. |
2303 |
02 Apr 14 |
olle |
If no lab sensor configuration with the given number is found, |
2303 |
02 Apr 14 |
olle |
`null` is returned. |
2303 |
02 Apr 14 |
olle |
633 |
|
2303 |
02 Apr 14 |
olle |
@return A LabSensorConfig object or `null`. |
2303 |
02 Apr 14 |
olle |
635 |
*/ |
2303 |
02 Apr 14 |
olle |
636 |
public LabSensorConfig findByNumber(Integer number) |
2303 |
02 Apr 14 |
olle |
637 |
{ |
2303 |
02 Apr 14 |
olle |
638 |
LabSensorConfig s = null; |
2303 |
02 Apr 14 |
olle |
639 |
if (number != null) |
2303 |
02 Apr 14 |
olle |
640 |
{ |
2303 |
02 Apr 14 |
olle |
641 |
for (LabSensorConfig labSensorConfig: getLabSensorConfigList()) |
2303 |
02 Apr 14 |
olle |
642 |
{ |
2303 |
02 Apr 14 |
olle |
643 |
int labSensorNumber = labSensorConfig.getNumber(); |
2303 |
02 Apr 14 |
olle |
644 |
if (number == labSensorNumber) |
2303 |
02 Apr 14 |
olle |
645 |
{ |
2303 |
02 Apr 14 |
olle |
646 |
s = labSensorConfig; |
2303 |
02 Apr 14 |
olle |
647 |
break; |
2303 |
02 Apr 14 |
olle |
648 |
} |
2303 |
02 Apr 14 |
olle |
649 |
} |
2303 |
02 Apr 14 |
olle |
650 |
} |
2303 |
02 Apr 14 |
olle |
651 |
return s; |
2303 |
02 Apr 14 |
olle |
652 |
} |
2303 |
02 Apr 14 |
olle |
653 |
|
2303 |
02 Apr 14 |
olle |
654 |
/** |
2303 |
02 Apr 14 |
olle |
Find the lab sensor configuration for the given sensor URL. |
2303 |
02 Apr 14 |
olle |
If no lab sensor configuration with the given URL is found, |
2303 |
02 Apr 14 |
olle |
`null` is returned. |
2303 |
02 Apr 14 |
olle |
658 |
|
2303 |
02 Apr 14 |
olle |
@return A LabSensorConfig object or `null`. |
2303 |
02 Apr 14 |
olle |
660 |
*/ |
2303 |
02 Apr 14 |
olle |
661 |
public LabSensorConfig findByUrl(String url) |
2303 |
02 Apr 14 |
olle |
662 |
{ |
2303 |
02 Apr 14 |
olle |
663 |
LabSensorConfig s = null; |
2303 |
02 Apr 14 |
olle |
664 |
if (url != null) |
2303 |
02 Apr 14 |
olle |
665 |
{ |
2303 |
02 Apr 14 |
olle |
666 |
for (LabSensorConfig labSensorConfig: getLabSensorConfigList()) |
2303 |
02 Apr 14 |
olle |
667 |
{ |
2303 |
02 Apr 14 |
olle |
668 |
String labSensorUrl = labSensorConfig.getUrl(); |
2303 |
02 Apr 14 |
olle |
669 |
if (labSensorUrl != null) |
2303 |
02 Apr 14 |
olle |
670 |
{ |
2303 |
02 Apr 14 |
olle |
671 |
if (url.equals(labSensorUrl)) |
2303 |
02 Apr 14 |
olle |
672 |
{ |
2303 |
02 Apr 14 |
olle |
673 |
s = labSensorConfig; |
2303 |
02 Apr 14 |
olle |
674 |
break; |
2303 |
02 Apr 14 |
olle |
675 |
} |
2303 |
02 Apr 14 |
olle |
676 |
} |
2303 |
02 Apr 14 |
olle |
677 |
} |
2303 |
02 Apr 14 |
olle |
678 |
} |
2303 |
02 Apr 14 |
olle |
679 |
return s; |
2303 |
02 Apr 14 |
olle |
680 |
} |
2303 |
02 Apr 14 |
olle |
681 |
} |