/** * Create a batch element row. * * @param context * @param devices * @param request * @return * @throws SiteWhereException */ public static IBatchElement createBatchElement(IHBaseContext context, Table devices, IBatchElement request) throws SiteWhereException { byte[] elementKey = getElementRowKey(context, request.getBatchOperationToken(), request.getIndex()); // Use common processing logic so all backend implementations work the // same. BatchElement element = SiteWherePersistence.batchElementCreateLogic(request.getBatchOperationToken(), request.getHardwareId(), request.getIndex()); // Encode batch element. byte[] payload = context.getPayloadMarshaler().encodeBatchElement(element); try { Put put = new Put(elementKey); HBaseUtils.addPayloadFields(context.getPayloadMarshaler().getEncoding(), put, payload); put.addColumn(ISiteWhereHBase.FAMILY_ID, HARDWARE_ID, Bytes.toBytes(element.getHardwareId())); put.addColumn(ISiteWhereHBase.FAMILY_ID, PROCESSING_STATUS, Bytes.toBytes(String.valueOf(request.getProcessingStatus().getCode()))); devices.put(put); } catch (IOException e) { throw new SiteWhereException("Unable to create device group element.", e); } return element; }
devices = getDeviceTableInterface(context); for (String hardwareId : request.getHardwareIds()) { BatchElement element = SiteWherePersistence.batchElementCreateLogic(batch.getToken(), hardwareId, ++index); HBaseBatchElement.createBatchElement(context, devices, element);
@Override public IBatchOperation createBatchOperation(IBatchOperationCreateRequest request) throws SiteWhereException { String uuid = ((request.getToken() != null) ? request.getToken() : UUID.randomUUID().toString()); BatchOperation batch = SiteWherePersistence.batchOperationCreateLogic(request, uuid); MongoCollection<Document> batches = getMongoClient().getBatchOperationsCollection(getTenant()); Document created = MongoBatchOperation.toDocument(batch); MongoPersistence.insert(batches, created, ErrorCode.DuplicateBatchOperationToken); // Insert element for each hardware id. long index = 0; MongoCollection<Document> elements = getMongoClient().getBatchOperationElementsCollection(getTenant()); for (String hardwareId : request.getHardwareIds()) { BatchElement element = SiteWherePersistence.batchElementCreateLogic(batch.getToken(), hardwareId, ++index); Document dbElement = MongoBatchElement.toDocument(element); MongoPersistence.insert(elements, dbElement, ErrorCode.DuplicateBatchElement); } return MongoBatchOperation.fromDocument(created); }