1 5 6 package org.exoplatform.services.jcr.impl.core.nodetype; 7 8 import javax.jcr.nodetype.NodeTypeManager; 9 import javax.jcr.nodetype.NodeTypeIterator; 10 import javax.jcr.nodetype.NodeType; 11 import javax.jcr.nodetype.NoSuchNodeTypeException; 12 import java.util.Collections ; 13 14 15 import java.util.Collection ; 16 17 18 import java.util.ArrayList ; 19 import java.util.HashMap ; 20 import javax.jcr.RepositoryException; 21 import org.exoplatform.services.jcr.impl.Constants; 22 import org.exoplatform.services.jcr.impl.util.EntityCollection; 23 24 30 31 37 38 public class NodeTypeManagerImpl implements NodeTypeManager { 39 40 private static NodeTypeManager instance; 41 private HashMap types; 42 private HashMap mixTypes; 43 44 private NodeTypeManagerImpl() { 45 46 types = new HashMap (); 47 mixTypes = new HashMap (); 48 49 types.put("nt:base", new org.exoplatform.services.jcr.impl.core.nodetype.nt.Base()); 50 types.put("nt:default", new org.exoplatform.services.jcr.impl.core.nodetype.nt.Default()); 51 types.put("nt:hierarchyItem", new org.exoplatform.services.jcr.impl.core.nodetype.nt.HierarchyItem()); 52 types.put("nt:content", new org.exoplatform.services.jcr.impl.core.nodetype.nt.Content()); 53 types.put("nt:file", new org.exoplatform.services.jcr.impl.core.nodetype.nt.File()); 54 types.put("nt:folder", new org.exoplatform.services.jcr.impl.core.nodetype.nt.Folder()); 55 types.put("nt:hierarchyNode", new org.exoplatform.services.jcr.impl.core.nodetype.nt.HierarchyNode()); 56 types.put("nt:nodeType", new org.exoplatform.services.jcr.impl.core.nodetype.nt.NodeType()); 57 types.put("nt:propertyDef", new org.exoplatform.services.jcr.impl.core.nodetype.nt.PropertyDefNT()); 58 types.put("nt:childNodeDef", new org.exoplatform.services.jcr.impl.core.nodetype.nt.ChildNodeDef()); 59 types.put("nt:versionHistory", new org.exoplatform.services.jcr.impl.core.nodetype.nt.VersionHistory()); 60 types.put("nt:version", new org.exoplatform.services.jcr.impl.core.nodetype.nt.Version()); 61 types.put("nt:query", new org.exoplatform.services.jcr.impl.core.nodetype.nt.Query()); 62 types.put("nt:mimeResource", new org.exoplatform.services.jcr.impl.core.nodetype.nt.MimeResource()); 63 64 types.put("exo:jcrdocfile", new org.exoplatform.services.jcr.impl.core.nodetype.exo.JcrDocFile()); 65 types.put("exo:mockNodeType", new org.exoplatform.services.jcr.impl.core.nodetype.exo.MockNodeType()); 66 67 mixTypes.put("mix:referenceable", new org.exoplatform.services.jcr.impl.core.nodetype.mix.Referenceable()); 68 } 69 70 public static NodeTypeManager getInstance() { 71 if (instance == null) 72 instance = new NodeTypeManagerImpl(); 73 return instance; 74 } 75 76 77 81 public NodeTypeIterator getAllNodeTypes() { 82 EntityCollection ec = new EntityCollection(new ArrayList (types.values())); 83 ec.addAll(new ArrayList (mixTypes.values())); 84 return ec; 85 } 86 87 92 public NodeType getNodeType(String nodeTypeName) throws NoSuchNodeTypeException { 93 NodeType nt = (NodeType) types.get(nodeTypeName); 94 if (nt == null) 95 nt = (NodeType) mixTypes.get(nodeTypeName); 96 97 if (nt == null) 98 throw new NoSuchNodeTypeException("NodeTypeManager.getNodeType(): NodeType '" + nodeTypeName + "' not found."); 99 else 100 return nt; 101 } 102 103 109 public NodeTypeIterator getPrimaryNodeTypes() throws RepositoryException { 110 return new EntityCollection(new ArrayList (types.values())); 111 } 112 113 119 public NodeTypeIterator getMixinNodeTypes() throws RepositoryException { 120 return new EntityCollection(new ArrayList (mixTypes.values())); 121 } 122 123 public void addPrimaryNodeType(NodeTypeImpl type) throws NoSuchNodeTypeException { 124 types.put(type.getName(), type); 125 } 126 127 public void addMixinNodeType(NodeTypeImpl type) throws NoSuchNodeTypeException { 128 mixTypes.put(type.getName(), type); 129 } 130 131 } 132 | Popular Tags |