blob: 5321a5472c186d1a420aa4550fa22dd64f31d618 [file] [log] [blame]
/**
*
*/
package org.eclipse.sensinact.studio.model.manager.modelupdater;
import org.eclipse.sensinact.studio.http.messages.snamessage.ObjectNameTypeValue;
import org.eclipse.sensinact.studio.model.resource.utils.DeviceDescriptor;
import org.eclipse.sensinact.studio.model.resource.utils.GPScoordinates;
import org.eclipse.sensinact.studio.model.resource.utils.GPSparsingException;
import org.eclipse.sensinact.studio.model.resource.utils.ResourceDescriptor;
/**
*
*/
public class ResourceAppearing extends ModelUpdate<ResourceDescriptor> {
/**
* @param object
*/
public ResourceAppearing(ResourceDescriptor object) {
super(object);
}
@Override
protected void doApply(){
ResourceDescriptor d = super.object;
ModelUpdater.executeInThread(
() -> ModelEditor.getInstance().addResourceIfNotExist(super.object)
);
ObjectNameTypeValue ontv = d.getInitial();
if(ontv==null)
return;
String value = ontv.getValueAsString();
if(value==null || "null".equals(value))
return;
final DeviceDescriptor descriptor = new DeviceDescriptor(d.getGateway(),d.getDevice());
if("location".equals(d.getResource()) && "admin".equals(d.getService())){
GPScoordinates gps;
try {
gps = new GPScoordinates(value);
} catch (GPSparsingException e) {
e.printStackTrace();
return;
}
ModelUpdater.executeInThread(() -> ModelEditor.getInstance().setLocation(descriptor, gps));
}
if("icon".equals(d.getResource()) && "admin".equals(d.getService())){
ModelUpdater.executeInThread(() -> ModelEditor.getInstance().setIcon(descriptor, value));
}
}
@Override
protected boolean doComplete() {
return super.object.getGateway()!=null &&
super.object.getDevice()!=null &&
super.object.getService()!=null &&
super.object.getResource()!=null &&
super.existsService(super.object.getGateway(),super.object.getDevice(),super.object.getService());
}
}