use of org.eclipse.kapua.service.device.management.snapshot.DeviceSnapshots in project kapua by eclipse.
the class Devices method getSnapshots.
/**
* Returns the list of all the Snapshots available on the device.
*
* @return The list of Snapshot Ids.
*/
@GET
@Path("{deviceId}/snapshots")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public DeviceSnapshots getSnapshots(@PathParam("deviceId") String deviceId) {
DeviceSnapshots deviceSnapshots = snapshotFactory.newDeviceSnapshots();
try {
KapuaId scopeId = KapuaSecurityUtils.getSession().getScopeId();
KapuaId id = KapuaEid.parseShortId(deviceId);
deviceSnapshots = snapshotService.get(scopeId, id, null);
} catch (Throwable t) {
handleException(t);
}
return returnNotNullEntity(deviceSnapshots);
}
use of org.eclipse.kapua.service.device.management.snapshot.DeviceSnapshots in project kapua by eclipse.
the class DeviceSnapshotManagementServiceImpl method get.
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public DeviceSnapshots get(KapuaId scopeId, KapuaId deviceId, Long timeout) throws KapuaException {
//
// Argument Validation
ArgumentValidator.notNull(scopeId, "scopeId");
ArgumentValidator.notNull(deviceId, "deviceId");
//
// Check Access
KapuaLocator locator = KapuaLocator.getInstance();
AuthorizationService authorizationService = locator.getService(AuthorizationService.class);
PermissionFactory permissionFactory = locator.getFactory(PermissionFactory.class);
authorizationService.checkPermission(permissionFactory.newPermission(DeviceManagementDomain.DEVICE_MANAGEMENT, Actions.read, scopeId));
//
// Prepare the request
SnapshotRequestChannel snapshotRequestChannel = new SnapshotRequestChannel();
snapshotRequestChannel.setAppName(DeviceConfigurationAppProperties.APP_NAME);
snapshotRequestChannel.setVersion(DeviceConfigurationAppProperties.APP_VERSION);
snapshotRequestChannel.setMethod(KapuaMethod.READ);
SnapshotRequestPayload snapshotRequestPayload = new SnapshotRequestPayload();
SnapshotRequestMessage snapshotRequestMessage = new SnapshotRequestMessage();
snapshotRequestMessage.setScopeId(scopeId);
snapshotRequestMessage.setDeviceId(deviceId);
snapshotRequestMessage.setCapturedOn(new Date());
snapshotRequestMessage.setPayload(snapshotRequestPayload);
snapshotRequestMessage.setChannel(snapshotRequestChannel);
//
// Do get
DeviceCallExecutor deviceApplicationCall = new DeviceCallExecutor(snapshotRequestMessage, timeout);
SnapshotResponseMessage responseMessage = (SnapshotResponseMessage) deviceApplicationCall.send();
SnapshotResponsePayload responsePayload = responseMessage.getPayload();
DeviceManagementSetting config = DeviceManagementSetting.getInstance();
String charEncoding = config.getString(DeviceManagementSettingKey.CHAR_ENCODING);
String body = null;
try {
body = new String(responsePayload.getBody(), charEncoding);
} catch (Exception e) {
throw new DeviceManagementException(DeviceManagementErrorCodes.RESPONSE_PARSE_EXCEPTION, e, responsePayload.getBody());
}
DeviceSnapshots deviceSnapshots = null;
try {
deviceSnapshots = XmlUtil.unmarshal(body, DeviceSnapshotsImpl.class);
} catch (Exception e) {
throw new DeviceManagementException(DeviceManagementErrorCodes.RESPONSE_PARSE_EXCEPTION, e, body);
}
//
// Create event
DeviceEventService deviceEventService = locator.getService(DeviceEventService.class);
DeviceEventFactory deviceEventFactory = locator.getFactory(DeviceEventFactory.class);
DeviceEventCreator deviceEventCreator = deviceEventFactory.newCreator(scopeId, deviceId, responseMessage.getReceivedOn(), DeviceSnapshotAppProperties.APP_NAME.getValue());
deviceEventCreator.setPosition(responseMessage.getPosition());
deviceEventCreator.setSentOn(responseMessage.getSentOn());
deviceEventCreator.setAction(KapuaMethod.READ);
deviceEventCreator.setResponseCode(responseMessage.getResponseCode());
deviceEventCreator.setEventMessage(responseMessage.getPayload().toDisplayString());
deviceEventService.create(deviceEventCreator);
return deviceSnapshots;
}
use of org.eclipse.kapua.service.device.management.snapshot.DeviceSnapshots in project kapua by eclipse.
the class GwtDeviceManagementServiceImpl method findDeviceSnapshots.
//
// Snapshots
//
@Override
public ListLoadResult<GwtSnapshot> findDeviceSnapshots(GwtDevice gwtDevice) throws GwtKapuaException {
List<GwtSnapshot> snapshots = new ArrayList<GwtSnapshot>();
try {
// execute the command
KapuaLocator locator = KapuaLocator.getInstance();
DeviceSnapshotManagementService deviceSnapshotManagementService = locator.getService(DeviceSnapshotManagementService.class);
KapuaId scopeId = KapuaEid.parseShortId(gwtDevice.getScopeId());
KapuaId deviceId = KapuaEid.parseShortId(gwtDevice.getId());
DeviceSnapshots snapshotIds = deviceSnapshotManagementService.get(scopeId, deviceId, null);
// sort them by most recent first
// sort the list alphabetically by service name
Collections.sort(snapshotIds.getSnapshots(), new Comparator<DeviceSnapshot>() {
@Override
public int compare(DeviceSnapshot arg0, DeviceSnapshot arg1) {
DeviceSnapshot snapshotId0 = arg0;
DeviceSnapshot snapshotId1 = arg1;
// Descending order
return -1 * snapshotId0.getTimestamp().compareTo(snapshotId1.getTimestamp());
}
});
for (DeviceSnapshot snapshot : snapshotIds.getSnapshots()) {
Long timestamp = snapshot.getTimestamp();
GwtSnapshot gwtSnapshot = new GwtSnapshot();
gwtSnapshot.setCreatedOn(new Date(timestamp));
snapshots.add(gwtSnapshot);
}
} catch (Throwable t) {
KapuaExceptionHandler.handle(t);
}
return new BaseListLoadResult<GwtSnapshot>(snapshots);
}
use of org.eclipse.kapua.service.device.management.snapshot.DeviceSnapshots in project kapua by eclipse.
the class TranslatorAppSnapshotKuraKapua method translateBody.
private void translateBody(SnapshotResponsePayload snapshotResponsePayload, String charEncoding, KuraSnapshotIds kuraSnapshotIdResult) throws TranslatorException {
try {
if (kuraSnapshotIdResult != null) {
KapuaLocator locator = KapuaLocator.getInstance();
DeviceSnapshotFactory deviceSnapshotFactory = locator.getFactory(DeviceSnapshotFactory.class);
DeviceSnapshots deviceSnapshots = deviceSnapshotFactory.newDeviceSnapshots();
List<Long> snapshotIds = kuraSnapshotIdResult.getSnapshotIds();
for (Long snapshotId : snapshotIds) {
DeviceSnapshot snapshot = deviceSnapshotFactory.newDeviceSnapshot();
snapshot.setId(Long.toString(snapshotId));
snapshot.setTimestamp(snapshotId);
deviceSnapshots.getSnapshots().add(snapshot);
}
StringWriter sw = new StringWriter();
XmlUtil.marshal(deviceSnapshots, sw);
byte[] requestBody = sw.toString().getBytes(charEncoding);
snapshotResponsePayload.setBody(requestBody);
}
} catch (Exception e) {
throw new TranslatorException(TranslatorErrorCodes.INVALID_BODY, e, // null for now
kuraSnapshotIdResult);
}
}
Aggregations