use of com.serotonin.m2m2.rt.script.AbstractPointWrapper in project ma-core-public by infiniteautomation.
the class DataSourceQuery method getPointsForSource.
/**
* Helper to extract points for a source
* @param ds
* @return
*/
private List<DataPointWrapper> getPointsForSource(DataSourceVO<?> ds) {
List<DataPointWrapper> points = new ArrayList<DataPointWrapper>();
List<DataPointVO> dataPoints = DataPointDao.instance.getDataPoints(ds.getId(), null, false);
for (DataPointVO vo : dataPoints) {
DataPointRT rt = Common.runtimeManager.getDataPoint(vo.getId());
AbstractPointWrapper wrapper = null;
if (rt != null)
wrapper = ScriptUtils.wrapPoint(engine, rt, setter);
points.add(new DataPointWrapper(vo, wrapper));
}
return points;
}
use of com.serotonin.m2m2.rt.script.AbstractPointWrapper in project ma-core-public by infiniteautomation.
the class ScriptUtils method coerce.
/**
* Coerce an object into a DataValue
* @param input
* @param toDataTypeId
* @return
* @throws ResultTypeException
*/
public static DataValue coerce(Object input, int toDataTypeId) throws ResultTypeException {
DataValue value;
if (input instanceof DataValue)
return (DataValue) input;
if (input == null) {
if (toDataTypeId == DataTypes.BINARY)
value = new BinaryValue(false);
else if (toDataTypeId == DataTypes.MULTISTATE)
value = new MultistateValue(0);
else if (toDataTypeId == DataTypes.NUMERIC)
value = new NumericValue(0);
else if (toDataTypeId == DataTypes.ALPHANUMERIC)
value = new AlphanumericValue("");
else
value = null;
} else if (input instanceof AbstractPointWrapper) {
value = ((AbstractPointWrapper) input).getValueImpl();
if ((value != null) && (value.getDataType() != toDataTypeId))
return throwResultTypeException(value, toDataTypeId);
} else // See if the type matches.
if (toDataTypeId == DataTypes.BINARY && input instanceof Boolean)
value = new BinaryValue((Boolean) input);
else if (toDataTypeId == DataTypes.MULTISTATE) {
if (input instanceof Number)
value = new MultistateValue(((Number) input).intValue());
else if (input instanceof String) {
try {
value = new MultistateValue(Integer.parseInt((String) input));
} catch (NumberFormatException e) {
return throwResultTypeException(input, toDataTypeId);
}
} else
return throwResultTypeException(input, toDataTypeId);
} else if (toDataTypeId == DataTypes.NUMERIC) {
if (input instanceof Number)
value = new NumericValue(((Number) input).doubleValue());
else if (input instanceof NumericValue)
value = (NumericValue) input;
else if (input instanceof String) {
try {
value = new NumericValue(Double.parseDouble((String) input));
} catch (NumberFormatException e) {
return throwResultTypeException(input, toDataTypeId);
}
} else
return throwResultTypeException(input, toDataTypeId);
} else if (toDataTypeId == DataTypes.ALPHANUMERIC)
value = new AlphanumericValue(input.toString());
else
// If not, ditch it.
return throwResultTypeException(input, toDataTypeId);
return value;
}
use of com.serotonin.m2m2.rt.script.AbstractPointWrapper in project ma-core-public by infiniteautomation.
the class DataPointQuery method byXid.
public DataPointWrapper byXid(String xid) {
DataPointVO dp = DataPointDao.getInstance().getByXid(xid);
if (dp == null)
return null;
if (permissionService.hasPermission(permissions, dp.getReadPermission())) {
DataPointRT rt = null;
AbstractPointWrapper wrapper = null;
rt = Common.runtimeManager.getDataPoint(dp.getId());
if (rt != null)
wrapper = service.wrapPoint(engine, rt, setter);
else
wrapper = null;
return new DataPointWrapper(dp, wrapper);
} else
return null;
}
use of com.serotonin.m2m2.rt.script.AbstractPointWrapper in project ma-core-public by infiniteautomation.
the class DataPointQuery method query.
/**
* Perform a query on the data points table
*/
public List<DataPointWrapper> query(String query) {
ASTNode root = RQLUtils.parseRQLtoAST(query);
List<DataPointVO> dataPoints = new ArrayList<>();
ConditionSortLimitWithTagKeys conditions = (ConditionSortLimitWithTagKeys) DataPointDao.getInstance().rqlToCondition(root, null, null, null);
DataPointDao.getInstance().customizedQuery(conditions, permissions, dataPoints::add);
List<DataPointWrapper> results = new ArrayList<DataPointWrapper>();
// Filter on permissions
DataPointRT rt = null;
AbstractPointWrapper wrapper = null;
for (DataPointVO dp : dataPoints) {
// Can we read or write to this point?
if (permissionService.hasPermission(permissions, dp.getReadPermission())) {
rt = Common.runtimeManager.getDataPoint(dp.getId());
if (rt != null)
wrapper = service.wrapPoint(engine, rt, setter);
else
wrapper = null;
results.add(new DataPointWrapper(dp, wrapper));
}
}
return results;
}
use of com.serotonin.m2m2.rt.script.AbstractPointWrapper in project ma-core-public by MangoAutomation.
the class DataPointQuery method query.
/**
* Perform a query on the data points table
*/
public List<DataPointWrapper> query(String query) {
ASTNode root = RQLUtils.parseRQLtoAST(query);
List<DataPointVO> dataPoints = new ArrayList<>();
ConditionSortLimitWithTagKeys conditions = (ConditionSortLimitWithTagKeys) DataPointDao.getInstance().rqlToCondition(root, null, null, null);
DataPointDao.getInstance().customizedQuery(conditions, permissions, dataPoints::add);
List<DataPointWrapper> results = new ArrayList<DataPointWrapper>();
// Filter on permissions
DataPointRT rt = null;
AbstractPointWrapper wrapper = null;
for (DataPointVO dp : dataPoints) {
// Can we read or write to this point?
if (permissionService.hasPermission(permissions, dp.getReadPermission())) {
rt = Common.runtimeManager.getDataPoint(dp.getId());
if (rt != null)
wrapper = service.wrapPoint(engine, rt, setter);
else
wrapper = null;
results.add(new DataPointWrapper(dp, wrapper));
}
}
return results;
}
Aggregations