package hu.bme.mit.incquery.cep.api.eventprocessingstrategy; import hu.bme.mit.incquery.cep.api.runtime.EventModelManager; import hu.bme.mit.incquery.cep.metamodels.internalsm.EventProcessingContext; public class EventProcessingStrategyFactory { public static IEventProcessingStrategy getStrategy(EventProcessingContext context, EventModelManager eventModelManager) { if (context == null) { // return default return new ChronicleStrategy(eventModelManager); } switch (context) { case CHRONICLE: return new ChronicleStrategy(eventModelManager); case STRICT_IMMEDIATE: return new StrictImmediateStrategy(eventModelManager); case IMMEDIATE: return new NormalImmediateStrategy(eventModelManager); case RECENT: throw new IllegalArgumentException(); // NOT IMPLEMENTED YET case UNRESTRICTED: throw new IllegalArgumentException(); // NOT IMPLEMENTED YET default: throw new IllegalArgumentException(); // SHALL NOT HAPPEN } } }