public NamedWindowProcessor addProcessor( String name, String contextName, boolean singleInstanceContext, EventType eventType, StatementResultService statementResultService, ValueAddEventProcessor revisionProcessor, String eplExpression, String statementName, boolean isPrioritized, boolean isEnableSubqueryIndexShare, boolean isBatchingDataWindow, boolean isVirtualDataWindow, StatementMetricHandle statementMetricHandle, Set<String> optionalUniqueKeyProps) throws ViewProcessingException { if (processors.containsKey(name)) { throw new ViewProcessingException( "A named window by name '" + name + "' has already been created"); } NamedWindowProcessor processor = new NamedWindowProcessor( name, this, contextName, singleInstanceContext, eventType, statementResultService, revisionProcessor, eplExpression, statementName, isPrioritized, isEnableSubqueryIndexShare, enableQueryPlanLog, metricReportingService, isBatchingDataWindow, isVirtualDataWindow, statementMetricHandle, optionalUniqueKeyProps); processors.put(name, processor); if (!observers.isEmpty()) { NamedWindowLifecycleEvent theEvent = new NamedWindowLifecycleEvent( name, processor, NamedWindowLifecycleEvent.LifecycleEventType.CREATE); for (NamedWindowLifecycleObserver observer : observers) { observer.observe(theEvent); } } return processor; }
public void removeProcessor(String name) { NamedWindowProcessor processor = processors.get(name); if (processor != null) { processor.destroy(); processors.remove(name); if (!observers.isEmpty()) { NamedWindowLifecycleEvent theEvent = new NamedWindowLifecycleEvent( name, processor, NamedWindowLifecycleEvent.LifecycleEventType.DESTROY); for (NamedWindowLifecycleObserver observer : observers) { observer.observe(theEvent); } } } }