package org.oliot.epcis.service.subscription;
import java.util.Iterator;
import org.apache.log4j.Level;
import org.bson.BsonDocument;
import org.oliot.epcis.configuration.Configuration;
import org.oliot.epcis.service.query.mongodb.MongoQueryService;
import org.oliot.model.epcis.SubscriptionType;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import com.mongodb.client.MongoCollection;
/**
* Copyright (C) 2014 Jaewook Jack 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 MongoSubscription {
public static SchedulerFactory schedFact;
public static Scheduler sched;
public void init() {
try {
schedFact = new org.quartz.impl.StdSchedulerFactory();
sched = schedFact.getScheduler();
if (sched.isStarted() == false)
sched.start();
MongoCollection<BsonDocument> collection = Configuration.mongoDatabase.getCollection("Subscription",
BsonDocument.class);
Iterator<BsonDocument> subIterator = collection.find(BsonDocument.class).iterator();
MongoQueryService queryService = new MongoQueryService();
while (subIterator.hasNext()) {
BsonDocument sub = subIterator.next();
SubscriptionType subscription = new SubscriptionType(sub);
if (subscription.isScheduledSubscription() == true){
queryService.addScheduleToQuartz(subscription);
}else{
TriggerEngine.addTriggerSubscription(sub.getString("subscriptionID").getValue(), subscription);
}
}
} catch (SchedulerException e) {
Configuration.logger.log(Level.ERROR, e.toString());
}
}
}