Skip to content

Instantly share code, notes, and snippets.

@axeda
Created July 26, 2011 14:33
Show Gist options
  • Select an option

  • Save axeda/1106902 to your computer and use it in GitHub Desktop.

Select an option

Save axeda/1106902 to your computer and use it in GitHub Desktop.
Get DataItems and Alarms for selected Asset
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