KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > exoplatform > services > jcr > impl > core > nodetype > NodeTypeManagerImpl


1 /***************************************************************************
2  * Copyright 2001-2003 The eXo Platform SARL All rights reserved. *
3  * Please look at license.txt in info directory for more license detail. *
4  **************************************************************************/

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 JavaDoc;
13
14
15 import java.util.Collection JavaDoc;
16
17
18 import java.util.ArrayList JavaDoc;
19 import java.util.HashMap JavaDoc;
20 import javax.jcr.RepositoryException;
21 import org.exoplatform.services.jcr.impl.Constants;
22 import org.exoplatform.services.jcr.impl.util.EntityCollection;
23
24 /**
25  * Created by The eXo Platform SARL .
26  *
27  * @author <a HREF="mailto:geaz@users.sourceforge.net">Gennady Azarenkov</a>
28  * @version $Id: NodeTypeManagerImpl.java,v 1.7 2004/08/05 15:55:15 benjmestrallet Exp $
29  */

30
31 /**
32  * 6.10.4
33  * Discovering which node types are available in a particular
34  * implementation begins with the NodeTypeManager object, which is
35  * acquired via the Workspace:
36  */

37
38 public class NodeTypeManagerImpl implements NodeTypeManager {
39
40   private static NodeTypeManager instance;
41   private HashMap JavaDoc types;
42   private HashMap JavaDoc mixTypes;
43
44   private NodeTypeManagerImpl() {
45
46     types = new HashMap JavaDoc();
47     mixTypes = new HashMap JavaDoc();
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   /**
78    * 6.10.4
79    * Returns all available node types.
80    */

81   public NodeTypeIterator getAllNodeTypes() {
82     EntityCollection ec = new EntityCollection(new ArrayList JavaDoc(types.values()));
83     ec.addAll(new ArrayList JavaDoc(mixTypes.values()));
84     return ec;
85   }
86
87   /**
88    * 6.10.4
89    * Returns the NodeType specified by nodeTypeName. If no
90    * node type by that name is registered, a NoSuchNodeTypeException is thrown.
91    */

92   public NodeType getNodeType(String JavaDoc 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   /**
104    * Returns an iterator over all available primary node types.
105    *
106    * @return An <code>NodeTypeIterator</code>.
107    * @throws RepositoryException if an error occurs.
108    */

109   public NodeTypeIterator getPrimaryNodeTypes() throws RepositoryException {
110     return new EntityCollection(new ArrayList JavaDoc(types.values()));
111   }
112
113   /**
114    * Returns an iterator over all available mixin node types.
115    *
116    * @return An <code>NodeTypeIterator</code>.
117    * @throws RepositoryException if an error occurs.
118    */

119   public NodeTypeIterator getMixinNodeTypes() throws RepositoryException {
120     return new EntityCollection(new ArrayList JavaDoc(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