package org.sef4j.core.helpers.proptree.model; import java.util.HashMap; import java.util.Map; import org.sef4j.core.helpers.proptree.dto.PropTreeRootNodeDef; import org.sef4j.core.util.factorydef.AbstractSharedObjByDefFactory; import org.sef4j.core.util.factorydef.DependencyObjectCreationContext; /** * Factory implementation for registering PropTreeNode roots by name */ public class PropTreeRootNodeFactory extends AbstractSharedObjByDefFactory<PropTreeRootNodeDef,PropTreeNode> { public static final PropTreeRootNodeFactory INSTANCE = new PropTreeRootNodeFactory(); private Map<String,PropTreeNode> rootNodes = new HashMap<String,PropTreeNode>(); public PropTreeRootNodeFactory() { super("PropTreeRootNode", PropTreeRootNodeDef.class); } public void putRootNode(String treeName, PropTreeNode rootNode) { this.rootNodes.put(treeName, rootNode); } public PropTreeNode getOrCreateRootNode(String treeName) { PropTreeNode res = rootNodes.get(treeName); if (res == null) { res = PropTreeNode.newRoot(); rootNodes.put(treeName, res); } return res; } @Override public PropTreeNode create(PropTreeRootNodeDef def, DependencyObjectCreationContext ctx) { return getOrCreateRootNode(def.getTreeName()); } }