package org.oliot.epcis.service.capture.mongodb; import org.bson.BsonDocument; import org.bson.BsonString; import org.json.JSONObject; import org.oliot.epcis.configuration.Configuration; import org.oliot.epcis.serde.mongodb.AggregationEventWriteConverter; import org.oliot.epcis.serde.mongodb.MasterDataWriteConverter; import org.oliot.epcis.serde.mongodb.ObjectEventWriteConverter; import org.oliot.epcis.serde.mongodb.QuantityEventWriteConverter; import org.oliot.epcis.serde.mongodb.TransactionEventWriteConverter; import org.oliot.epcis.serde.mongodb.TransformationEventWriteConverter; import org.oliot.epcis.service.subscription.TriggerEngine; import org.oliot.model.epcis.AggregationEventType; import org.oliot.model.epcis.ObjectEventType; import org.oliot.model.epcis.QuantityEventType; import org.oliot.model.epcis.TransactionEventType; import org.oliot.model.epcis.TransformationEventType; import org.oliot.model.epcis.VocabularyType; import com.mongodb.client.MongoCollection; import com.mongodb.util.JSON; /** * Copyright (C) 2014 Jaewook Byun * * This project is part of Oliot (oliot.org), pursuing the implementation of * Electronic Product Code Information Service(EPCIS) v1.1 specification in * EPCglobal. * [http://www.gs1.org/gsmp/kc/epcglobal/epcis/epcis_1_1-standard-20140520.pdf] * * * @author Jaewook Jack Byun, Ph.D student * * Korea Advanced Institute of Science and Technology (KAIST) * * Real-time Embedded System Laboratory(RESL) * * bjw0829@kaist.ac.kr, bjw0829@gmail.com */ public class MongoCaptureUtil { public void capture(AggregationEventType event, String userID, String accessModifier, Integer gcpLength) { MongoCollection<BsonDocument> collection = Configuration.mongoDatabase.getCollection("AggregationEvent", BsonDocument.class); // Utilize Aggregation Event Write Converter itself AggregationEventWriteConverter wc = new AggregationEventWriteConverter(); BsonDocument object2Save = wc.convert(event, gcpLength); if (userID != null && accessModifier != null) { object2Save.put("userID", new BsonString(userID)); object2Save.put("accessModifier", new BsonString(accessModifier)); } if (Configuration.isTriggerSupported == true) { TriggerEngine.examineAndFire("AggregationEvent", object2Save); } collection.insertOne(object2Save); Configuration.logger.info(" Event Saved "); } public void capture(ObjectEventType event, String userID, String accessModifier, Integer gcpLength) { MongoCollection<BsonDocument> collection = Configuration.mongoDatabase.getCollection("ObjectEvent", BsonDocument.class); // Utilize Object Event Write Converter itself ObjectEventWriteConverter wc = new ObjectEventWriteConverter(); BsonDocument object2Save = wc.convert(event, gcpLength); if (userID != null && accessModifier != null) { object2Save.put("userID", new BsonString(userID)); object2Save.put("accessModifier", new BsonString(accessModifier)); } if (Configuration.isTriggerSupported == true) { TriggerEngine.examineAndFire("ObjectEvent", object2Save); } collection.insertOne(object2Save); Configuration.logger.info(" Event Saved "); } public void capture(QuantityEventType event, String userID, String accessModifier, Integer gcpLength) { MongoCollection<BsonDocument> collection = Configuration.mongoDatabase.getCollection("QuantityEvent", BsonDocument.class); // Utilize Quantity Event Write Converter itself QuantityEventWriteConverter wc = new QuantityEventWriteConverter(); BsonDocument object2Save = wc.convert(event, gcpLength); if (userID != null && accessModifier != null) { object2Save.put("userID", new BsonString(userID)); object2Save.put("accessModifier", new BsonString(accessModifier)); } if (Configuration.isTriggerSupported == true) { TriggerEngine.examineAndFire("QuantityEvent", object2Save); } collection.insertOne(object2Save); Configuration.logger.info(" Event Saved "); } public void capture(TransactionEventType event, String userID, String accessModifier, Integer gcpLength) { MongoCollection<BsonDocument> collection = Configuration.mongoDatabase.getCollection("TransactionEvent", BsonDocument.class); // Utilize Transaction Event Write Converter itself TransactionEventWriteConverter wc = new TransactionEventWriteConverter(); BsonDocument object2Save = wc.convert(event, gcpLength); if (userID != null && accessModifier != null) { object2Save.put("userID", new BsonString(userID)); object2Save.put("accessModifier", new BsonString(accessModifier)); } if (Configuration.isTriggerSupported == true) { TriggerEngine.examineAndFire("TransactionEvent", object2Save); } collection.insertOne(object2Save); Configuration.logger.info(" Event Saved "); } public void capture(TransformationEventType event, String userID, String accessModifier, Integer gcpLength) { MongoCollection<BsonDocument> collection = Configuration.mongoDatabase.getCollection("TransformationEvent", BsonDocument.class); // Utilize Transaction Event Write Converter itself TransformationEventWriteConverter wc = new TransformationEventWriteConverter(); BsonDocument object2Save = wc.convert(event, gcpLength); if (userID != null && accessModifier != null) { object2Save.put("userID", new BsonString(userID)); object2Save.put("accessModifier", new BsonString(accessModifier)); } if (Configuration.isTriggerSupported == true) { TriggerEngine.examineAndFire("TransformationEvent", object2Save); } collection.insertOne(object2Save); Configuration.logger.info(" Event Saved "); } public void capture(VocabularyType vocabulary) { MongoCollection<BsonDocument> collection = Configuration.mongoDatabase.getCollection("MasterData", BsonDocument.class); MasterDataWriteConverter converter = new MasterDataWriteConverter(); BsonDocument voc = converter.convert(vocabulary); collection.insertOne(voc); Configuration.logger.info(" Vocabulary Saved "); } // JsonObject event capture series.. public void captureObjectEvent(JSONObject event) { MongoCollection<BsonDocument> collection = Configuration.mongoDatabase.getCollection("ObjectEvent", BsonDocument.class); BsonDocument dbObject = BsonDocument.parse(event.toString()); if (Configuration.isTriggerSupported == true) { TriggerEngine.examineAndFire("ObjectEvent", dbObject); } collection.insertOne(dbObject); Configuration.logger.info(" Event Saved "); } public void captureAggregationEvent(JSONObject event) { MongoCollection<BsonDocument> collection = Configuration.mongoDatabase.getCollection("AggregationEvent", BsonDocument.class); BsonDocument dbObject = (BsonDocument) JSON.parse(event.toString()); if (Configuration.isTriggerSupported == true) { TriggerEngine.examineAndFire("AggregationEvent", dbObject); } collection.insertOne(dbObject); Configuration.logger.info(" Event Saved "); } public void captureTransformationEvent(JSONObject event) { MongoCollection<BsonDocument> collection = Configuration.mongoDatabase.getCollection("TransformationEvent", BsonDocument.class); BsonDocument dbObject = (BsonDocument) JSON.parse(event.toString()); if (Configuration.isTriggerSupported == true) { TriggerEngine.examineAndFire("TransformationEvent", dbObject); } collection.insertOne(dbObject); Configuration.logger.info(" Event Saved "); } public void captureTransactionEvent(JSONObject event) { MongoCollection<BsonDocument> collection = Configuration.mongoDatabase.getCollection("TransactionEvent", BsonDocument.class); BsonDocument dbObject = (BsonDocument) JSON.parse(event.toString()); if (Configuration.isTriggerSupported == true) { TriggerEngine.examineAndFire("TransactionEvent", dbObject); } collection.insertOne(dbObject); Configuration.logger.info(" Event Saved "); } public void masterdata_capture(JSONObject event) { MongoCollection<BsonDocument> collection = Configuration.mongoDatabase.getCollection("MasterData", BsonDocument.class); BsonDocument dbObject = (BsonDocument) JSON.parse(event.toString()); collection.insertOne(dbObject); Configuration.logger.info(" Event Saved "); } }