package org.drools.event; /* * Copyright 2010 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.util.List; import java.util.Map; import java.util.Set; import org.drools.definition.KnowledgeDefinition; import org.drools.event.knowledgeagent.BeforeResourceProcessedEvent; import org.drools.event.knowledgeagent.ResourceCompilationFailedEvent; import org.drools.event.knowledgeagent.AfterChangeSetAppliedEvent; import org.drools.event.knowledgeagent.KnowledgeBaseUpdatedEvent; import org.drools.event.knowledgeagent.AfterChangeSetProcessedEvent; import org.drools.event.knowledgeagent.KnowledgeAgentEventListener; import org.drools.event.knowledgeagent.BeforeChangeSetAppliedEvent; import org.drools.event.knowledgeagent.BeforeChangeSetProcessedEvent; import org.drools.event.knowledgeagent.AfterResourceProcessedEvent; import java.util.Iterator; import org.drools.ChangeSet; import org.drools.KnowledgeBase; import org.drools.agent.KnowledgeAgent.ResourceStatus; import org.drools.builder.KnowledgeBuilder; import org.drools.builder.ResourceType; import org.drools.io.Resource; /** * @author <a href="mailto:esteban.aliverti@gmail.com">Esteban Aliverti</a> */ public class KnowledgeAgentEventSupport extends AbstractEventSupport<KnowledgeAgentEventListener> { public KnowledgeAgentEventSupport() { } public void fireBeforeChangeSetApplied(ChangeSet changeSet) { final Iterator<KnowledgeAgentEventListener> iter = getEventListenersIterator(); if (iter.hasNext()) { final BeforeChangeSetAppliedEvent event = new BeforeChangeSetAppliedEvent(changeSet); do{ iter.next().beforeChangeSetApplied(event); } while (iter.hasNext()); } } public void fireAfterChangeSetApplied(ChangeSet changeSet) { final Iterator<KnowledgeAgentEventListener> iter = getEventListenersIterator(); if (iter.hasNext()) { final AfterChangeSetAppliedEvent event = new AfterChangeSetAppliedEvent(changeSet); do{ iter.next().afterChangeSetApplied(event); } while (iter.hasNext()); } } public void fireBeforeChangeSetProcessed(ChangeSet changeSet) { final Iterator<KnowledgeAgentEventListener> iter = getEventListenersIterator(); if (iter.hasNext()) { do{ final BeforeChangeSetProcessedEvent event = new BeforeChangeSetProcessedEvent(changeSet); iter.next().beforeChangeSetProcessed(event); } while (iter.hasNext()); } } public void fireAfterChangeSetProcessed(ChangeSet changeSet, List<Resource> addedResources, Map<Resource, Set<KnowledgeDefinition>> modifiedResourceMappings, Map<Resource, Set<KnowledgeDefinition>> removedResourceMappings) { final Iterator<KnowledgeAgentEventListener> iter = getEventListenersIterator(); if (iter.hasNext()) { do{ final AfterChangeSetProcessedEvent event = new AfterChangeSetProcessedEvent(changeSet, addedResources, modifiedResourceMappings, removedResourceMappings); iter.next().afterChangeSetProcessed(event); } while (iter.hasNext()); } } public void fireBeforeResourceProcessed(ChangeSet changeSet, Resource resource, ResourceType type, ResourceStatus status) { final Iterator<KnowledgeAgentEventListener> iter = getEventListenersIterator(); if (iter.hasNext()) { do{ final BeforeResourceProcessedEvent event = new BeforeResourceProcessedEvent(changeSet, resource, type, status); iter.next().beforeResourceProcessed(event); } while (iter.hasNext()); } } public void fireAfterResourceProcessed(ChangeSet changeSet, Resource resource, ResourceType type, ResourceStatus status) { final Iterator<KnowledgeAgentEventListener> iter = getEventListenersIterator(); if (iter.hasNext()) { do{ final AfterResourceProcessedEvent event = new AfterResourceProcessedEvent(changeSet, resource, type, status); iter.next().afterResourceProcessed(event); } while (iter.hasNext()); } } public void fireKnowledgeBaseUpdated(KnowledgeBase kbase) { final Iterator<KnowledgeAgentEventListener> iter = getEventListenersIterator(); if (iter.hasNext()) { do{ final KnowledgeBaseUpdatedEvent event = new KnowledgeBaseUpdatedEvent(kbase); iter.next().knowledgeBaseUpdated(event); } while (iter.hasNext()); } } public void fireResourceCompilationFailed(KnowledgeBuilder kbuilder, Resource resource, ResourceType type) { final Iterator<KnowledgeAgentEventListener> iter = getEventListenersIterator(); if (iter.hasNext()) { do{ final ResourceCompilationFailedEvent event = new ResourceCompilationFailedEvent(kbuilder, resource, type); iter.next().resourceCompilationFailed(event); } while (iter.hasNext()); } } public void reset() { this.clear(); } }