Fixed issue where user set params on DeviceData is reset when new sensor data is registered.
This commit is contained in:
parent
7155b98934
commit
5f230a921d
1 changed files with 42 additions and 9 deletions
|
|
@ -54,23 +54,31 @@ public abstract class AbstractDevice<T> extends DBBean {
|
||||||
Class c = Class.forName(type);
|
Class c = Class.forName(type);
|
||||||
deviceData = (T) c.newInstance();
|
deviceData = (T) c.newInstance();
|
||||||
|
|
||||||
if (config != null && !config.isEmpty()) {
|
applyConfig();
|
||||||
Configurator<T> configurator = getDeviceConfig();
|
|
||||||
configurator.setValues(JSONParser.read(config));
|
|
||||||
configurator.applyConfiguration();
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.log(Level.SEVERE, "Unable to read device data", e);
|
logger.log(Level.SEVERE, "Unable instantiate DeviceData: "+type, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return deviceData;
|
return deviceData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Will replace the current DeviceData.
|
||||||
|
* And the current config will be applied on the new DeviceData.
|
||||||
|
* DeviceData will be reset if the input is set as null.
|
||||||
|
*/
|
||||||
public void setDeviceData(T data) {
|
public void setDeviceData(T data) {
|
||||||
this.deviceData = data;
|
if(data != null) {
|
||||||
if(data != null)
|
deviceData = data;
|
||||||
type = data.getClass().getName();
|
type = data.getClass().getName();
|
||||||
updateConfigString();
|
applyConfig();
|
||||||
|
} else {
|
||||||
|
deviceData = null;
|
||||||
|
type = null;
|
||||||
|
config = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void save(DBConnection db) throws SQLException {
|
public void save(DBConnection db) throws SQLException {
|
||||||
if (deviceData != null)
|
if (deviceData != null)
|
||||||
updateConfigString();
|
updateConfigString();
|
||||||
|
|
@ -78,10 +86,25 @@ public abstract class AbstractDevice<T> extends DBBean {
|
||||||
this.config = null;
|
this.config = null;
|
||||||
super.save(db);
|
super.save(db);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Will update the config String that will be stored in DB.
|
||||||
|
*/
|
||||||
protected void updateConfigString() {
|
protected void updateConfigString() {
|
||||||
Configurator<T> configurator = getDeviceConfig();
|
Configurator<T> configurator = getDeviceConfig();
|
||||||
this.config = JSONWriter.toString(configurator.getValuesAsNode());
|
this.config = JSONWriter.toString(configurator.getValuesAsNode());
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* This method will configure the current DeviceData with the
|
||||||
|
* configuration from the config String.
|
||||||
|
*/
|
||||||
|
protected void applyConfig(){
|
||||||
|
if (config != null && !config.isEmpty()) {
|
||||||
|
Configurator<T> configurator = getDeviceConfig();
|
||||||
|
configurator.setValues(JSONParser.read(config));
|
||||||
|
configurator.applyConfiguration();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -92,12 +115,22 @@ public abstract class AbstractDevice<T> extends DBBean {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a String containing the class name of the DeviceData
|
||||||
|
*/
|
||||||
public String getType() {
|
public String getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Will set the DeviceData class type. This method will
|
||||||
|
* reset set the current DeviceData if the input type is
|
||||||
|
* null or a different type from the current DeviceData class.
|
||||||
|
*/
|
||||||
public void setType(String type) {
|
public void setType(String type) {
|
||||||
if (this.type == null || !this.type.equals(type)) {
|
if (this.type == null || !this.type.equals(type)) {
|
||||||
this.type = type;
|
this.type = type;
|
||||||
|
this.config = null;
|
||||||
this.deviceData = null; // invalidate current sensor data object
|
this.deviceData = null; // invalidate current sensor data object
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue