use of com.serotonin.m2m2.rt.dataImage.PointValueTime in project ma-core-public by infiniteautomation.
the class DataPointDetailsDwr method getHistoryTableData.
@DwrPermission(user = true)
public ProcessResult getHistoryTableData(int limit, boolean useCache) {
DataPointVO pointVO = Common.getUser().getEditPoint();
PointValueFacade facade = new PointValueFacade(pointVO.getId(), useCache);
List<PointValueTime> rawData = facade.getLatestPointValues(limit);
List<RenderedPointValueTime> renderedData = new ArrayList<RenderedPointValueTime>(rawData.size());
for (PointValueTime pvt : rawData) {
RenderedPointValueTime rpvt = new RenderedPointValueTime();
rpvt.setValue(Functions.getHtmlText(pointVO, pvt));
rpvt.setTime(Functions.getTime(pvt));
if (pvt.isAnnotated()) {
AnnotatedPointValueTime apvt = (AnnotatedPointValueTime) pvt;
rpvt.setAnnotation(apvt.getAnnotation(getTranslations()));
}
renderedData.add(rpvt);
}
ProcessResult response = new ProcessResult();
response.addData("history", renderedData);
addAsof(response);
return response;
}
use of com.serotonin.m2m2.rt.dataImage.PointValueTime in project ma-core-public by infiniteautomation.
the class DataPointDetailsDwr method getFlipbookData.
@DwrPermission(user = true)
public ProcessResult getFlipbookData(int limit) {
HttpServletRequest request = WebContextFactory.get().getHttpServletRequest();
DataPointVO vo = Common.getUser(request).getEditPoint();
PointValueFacade facade = new PointValueFacade(vo.getId());
List<PointValueTime> values = facade.getLatestPointValues(limit);
Collections.reverse(values);
List<ImageValueBean> result = new ArrayList<ImageValueBean>();
for (PointValueTime pvt : values) {
ImageValue imageValue = (ImageValue) pvt.getValue();
String uri = ImageValueServlet.servletPath + ImageValueServlet.historyPrefix + pvt.getTime() + "_" + vo.getId() + "." + imageValue.getTypeExtension();
result.add(new ImageValueBean(Functions.getTime(pvt), uri));
}
ProcessResult response = new ProcessResult();
response.addData("images", result);
addAsof(response);
return response;
}
use of com.serotonin.m2m2.rt.dataImage.PointValueTime in project ma-core-public by infiniteautomation.
the class DataPointDwr method getMostRecentValue.
/**
* Helper to get the most recent value for a point
*
* @param id
* @return
*/
@DwrPermission(user = true)
public ProcessResult getMostRecentValue(int id) {
ProcessResult result = new ProcessResult();
if (Common.runtimeManager.isDataPointRunning(id)) {
DataPointRT rt = Common.runtimeManager.getDataPoint(id);
// Check to see if the data source is running
if (Common.runtimeManager.isDataSourceRunning(rt.getDataSourceId())) {
PointValueFacade facade = new PointValueFacade(rt.getVO().getId());
PointValueTime value = facade.getPointValue();
if (value != null) {
RenderedPointValueTime rpvt = new RenderedPointValueTime();
rpvt.setValue(Functions.getHtmlText(rt.getVO(), value));
rpvt.setTime(Functions.getTime(value));
// Could return time and value?
result.getData().put("pointValue", rpvt.getValue());
} else
result.getData().put("pointValue", translate("event.setPoint.activePointValue"));
} else {
result.getData().put("pointValue", translate("common.pointWarning"));
}
} else {
result.getData().put("pointValue", translate("common.pointWarning"));
}
return result;
}
use of com.serotonin.m2m2.rt.dataImage.PointValueTime in project ma-core-public by infiniteautomation.
the class RuntimeManagerImpl method startDataPointStartup.
/**
* Only to be used at startup as synchronization has been reduced for performance
* @param vo
* @param latestValue
*/
private void startDataPointStartup(DataPointVO vo, List<PointValueTime> initialCache) {
Assert.isTrue(vo.isEnabled(), "Data point not enabled");
// Only add the data point if its data source is enabled.
DataSourceRT<? extends DataSourceVO<?>> ds = getRunningDataSource(vo.getDataSourceId());
if (ds != null) {
// Change the VO into a data point implementation.
DataPointRT dataPoint = new DataPointRT(vo, vo.getPointLocator().createRuntime(), ds.getVo(), initialCache);
// Add/update it in the data image.
synchronized (dataPoints) {
dataPoints.compute(dataPoint.getId(), (k, rt) -> {
if (rt != null) {
try {
getRunningDataSource(rt.getDataSourceId()).removeDataPoint(rt);
} catch (Exception e) {
LOG.error("Failed to stop point RT with ID: " + vo.getId() + " stopping point.", e);
}
DataPointListener l = getDataPointListeners(vo.getId());
if (l != null)
l.pointTerminated();
rt.terminate();
}
return dataPoint;
});
}
// Initialize it.
dataPoint.initialize();
// If we are a polling data source then we need to wait to start our interval logging
// until the first poll due to quantization
boolean isPolling = ds instanceof PollingDataSource;
// If we are not polling go ahead and start the interval logging, otherwise we will let the data source do it on the first poll
if (!isPolling)
dataPoint.initializeIntervalLogging(0l, false);
DataPointListener l = getDataPointListeners(vo.getId());
if (l != null)
l.pointInitialized();
// Add/update it in the data source.
try {
ds.addDataPoint(dataPoint);
} catch (Exception e) {
// This can happen if there is a corrupt DB with a point for a different
// data source type linked to this data source...
LOG.error("Failed to start point with xid: " + dataPoint.getVO().getXid() + " disabling point.", e);
// TODO Fire Alarm to warn user.
dataPoint.getVO().setEnabled(false);
// Stop it
saveDataPoint(dataPoint.getVO());
}
}
}
use of com.serotonin.m2m2.rt.dataImage.PointValueTime in project ma-core-public by infiniteautomation.
the class RuntimeManagerImpl method setDataPointValue.
/* (non-Javadoc)
* @see com.serotonin.m2m2.rt.RuntimeManager#setDataPointValue(int, com.serotonin.m2m2.rt.dataImage.PointValueTime, com.serotonin.m2m2.rt.dataImage.SetPointSource)
*/
@Override
public void setDataPointValue(int dataPointId, PointValueTime valueTime, SetPointSource source) {
DataPointRT dataPoint = dataPoints.get(dataPointId);
if (dataPoint == null)
throw new RTException("Point is not enabled");
if (!dataPoint.getPointLocator().isSettable())
throw new RTException("Point is not settable");
// Tell the data source to set the value of the point.
DataSourceRT<? extends DataSourceVO<?>> ds = getRunningDataSource(dataPoint.getDataSourceId());
// The data source may have been disabled. Just make sure.
if (ds != null)
ds.setPointValue(dataPoint, valueTime, source);
}
Aggregations