Created
July 26, 2011 14:33
-
-
Save axeda/1106902 to your computer and use it in GitHub Desktop.
Get DataItems and Alarms for selected Asset
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import com.axeda.drm.sdk.Context; | |
| import com.axeda.drm.sdk.user.User; | |
| import com.axeda.drm.sdk.device.*; | |
| import com.axeda.drm.sdk.model.*; | |
| import com.axeda.drm.sdk.data.*; | |
| import com.axeda.common.sdk.jdbc.StringQuery; | |
| import com.axeda.drm.sdk.mobilelocation.*; | |
| import java.util.*; | |
| import groovy.xml.MarkupBuilder | |
| import org.custommonkey.xmlunit.* | |
| def writer | |
| def xml | |
| writer = new StringWriter() | |
| xml = new MarkupBuilder(writer) | |
| try { | |
| String username = parameters.username | |
| String devicename = parameters.devicename | |
| Context ctx = Context.create(username); | |
| // get device from name | |
| DeviceFinder dfinder= new DeviceFinder(ctx); | |
| dfinder.setSerialNumber(devicename) | |
| Device device = dfinder.find(); | |
| // get device data | |
| CurrentDataFinder cdf = new CurrentDataFinder(ctx, device) | |
| DataValueList dvl = cdf.find(); | |
| // get history for "value1" | |
| DataItemFinder dif = new DataItemFinder(ctx) | |
| dif.setModel(device.getModel()) | |
| dif.setDataItemName("value1") | |
| DataItem di = dif.find() | |
| HistoricalDataFinder hdf = new HistoricalDataFinder(ctx, device) | |
| hdf.setSortOrder(false) | |
| xml.Response() { | |
| for(dv in dvl.getList()) { | |
| if(dv.getDataItem().getName() == "value1") { | |
| DataItem ('name': dv.getDataItem().getName(), 'val': dv.asString(), | |
| timestamp:dv.getTimestamp()) | |
| } | |
| } | |
| Device ('name':device.getSerialNumber()); | |
| if(di != null) { | |
| History () { | |
| DataValueList hdvl = hdf.find(di) | |
| if(hdvl != null) { | |
| for (dv in hdvl.getList()) | |
| Value (dv.asString(), 'tstamp':dv.getTimestamp()) | |
| } | |
| } | |
| } | |
| List dList = dfinder.findAll(); | |
| xml.Response() { | |
| AlarmFinder af = new AlarmFinder (ctx); | |
| for (d in dList) { | |
| af.setDevice(d); | |
| Alarm al = af.find(); | |
| if (al != null) { | |
| Alarm('name':al.getName(), 'date': al.getDate(), 'severity': al.getSeverity(), | |
| 'desc': al.getDescription(), 'lat':al.getMobileLocation().getLat(), | |
| 'long':al.getMobileLocation().getLng(), 'device': al.getDevice().getSerialNumber(), | |
| 'cond': al.getDevice().getCondition().getName(),'active':al.getState()) } | |
| } | |
| } | |
| } | |
| } catch (Exception ex) { | |
| xml.Response() { | |
| Fault { | |
| Code('Groovy Exception') | |
| Message(ex.getMessage()) | |
| StringWriter sw = new StringWriter(); | |
| PrintWriter pw = new PrintWriter(sw); | |
| ex.printStackTrace(pw); | |
| Detail(sw.toString()) | |
| } | |
| } | |
| } | |
| //logger.info(writer.toString()); | |
| return ['Content-Type': 'text/xml', 'Content': writer.toString()] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment