package org.drools.process.builder;
import java.util.HashMap;
import java.util.Map;
import org.drools.definition.process.Node;
import org.drools.workflow.core.node.ActionNode;
import org.drools.workflow.core.node.CompositeContextNode;
import org.drools.workflow.core.node.EndNode;
import org.drools.workflow.core.node.FaultNode;
import org.drools.workflow.core.node.HumanTaskNode;
import org.drools.workflow.core.node.MilestoneNode;
import org.drools.workflow.core.node.RuleSetNode;
import org.drools.workflow.core.node.Split;
import org.drools.workflow.core.node.StartNode;
import org.drools.workflow.core.node.StateNode;
import org.drools.workflow.core.node.SubProcessNode;
import org.drools.workflow.core.node.TimerNode;
import org.drools.workflow.core.node.WorkItemNode;
public class ProcessNodeBuilderRegistry {
public static ProcessNodeBuilderRegistry INSTANCE = new ProcessNodeBuilderRegistry();
private Map<Class< ? extends Node>, ProcessNodeBuilder> registry;
public ProcessNodeBuilderRegistry() {
this.registry = new HashMap<Class< ? extends Node>, ProcessNodeBuilder>();
register( StartNode.class,
new ExtendedNodeBuilder() );
register( EndNode.class,
new ExtendedNodeBuilder() );
register( MilestoneNode.class,
new EventBasedNodeBuilder() );
register( RuleSetNode.class,
new EventBasedNodeBuilder() );
register( SubProcessNode.class,
new EventBasedNodeBuilder() );
register( HumanTaskNode.class,
new EventBasedNodeBuilder() );
register( WorkItemNode.class,
new EventBasedNodeBuilder() );
register( FaultNode.class,
new ExtendedNodeBuilder() );
register( TimerNode.class,
new ExtendedNodeBuilder() );
register( ActionNode.class,
new ActionNodeBuilder() );
register( Split.class,
new SplitNodeBuilder() );
register( CompositeContextNode.class,
new EventBasedNodeBuilder() );
register( StateNode.class,
new EventBasedNodeBuilder() );
}
public void register(Class< ? extends Node> cls,
ProcessNodeBuilder builder) {
this.registry.put( cls,
builder );
}
public ProcessNodeBuilder getNodeBuilder(Node node) {
return this.registry.get( node.getClass() );
}
}