@Override public IDeviceAlert addDeviceAlert(String assignmentToken, IDeviceAlertCreateRequest request) throws SiteWhereException { IDeviceAssignment assignment = assertApiDeviceAssignment(assignmentToken); DeviceAlert alert = SiteWherePersistence.deviceAlertCreateLogic(assignment, request); MongoCollection<Document> events = getMongoClient().getEventsCollection(getTenant()); Document alertObject = MongoDeviceAlert.toDocument(alert, false); MongoPersistence.insertEvent(events, alertObject, isUseBulkEventInserts(), getEventBuffer()); // Update assignment state if requested. alert = MongoDeviceAlert.fromDocument(alertObject, false); if (request.isUpdateState()) { getAssignmentStateManager().addAlert(assignmentToken, alert); } return alert; }
/** * Create a new device alert entry for an assignment. * * @param context * @param assignment * @param request * @return * @throws SiteWhereException */ public static IDeviceAlert createDeviceAlert(IHBaseContext context, IDeviceAssignment assignment, IDeviceAlertCreateRequest request) throws SiteWhereException { long time = getEventTime(request); byte[] rowkey = getEventRowKey(context, assignment, time); byte[] qualifier = getQualifier(EventRecordType.Alert, time, context.getPayloadMarshaler().getEncoding()); // Create alert and marshal to JSON. DeviceAlert alert = SiteWherePersistence.deviceAlertCreateLogic(assignment, request); String id = getEncodedEventId(rowkey, qualifier); alert.setId(id); byte[] payload = context.getPayloadMarshaler().encodeDeviceAlert(alert); Put put = new Put(rowkey); put.addColumn(ISiteWhereHBase.FAMILY_ID, qualifier, payload); context.getDeviceEventBuffer().add(put); // Update state if requested. if (request.isUpdateState()) { context.getAssignmentStateManager().addAlert(assignment.getToken(), alert); } return alert; }