This project has retired. For details please refer to its
Attic page.
DefaultFolderTypeHandler xref
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.chemistry.opencmis.jcr.impl;
20
21 import org.apache.chemistry.opencmis.commons.data.Properties;
22 import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition;
23 import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
24 import org.apache.chemistry.opencmis.commons.exceptions.CmisStorageException;
25 import org.apache.chemistry.opencmis.commons.impl.dataobjects.FolderTypeDefinitionImpl;
26 import org.apache.chemistry.opencmis.jcr.JcrFolder;
27 import org.apache.chemistry.opencmis.jcr.JcrTypeManager;
28 import org.apache.chemistry.opencmis.jcr.query.IdentifierMap;
29 import org.apache.chemistry.opencmis.jcr.type.JcrFolderTypeHandler;
30 import org.apache.commons.logging.Log;
31 import org.apache.commons.logging.LogFactory;
32
33 import javax.jcr.Node;
34 import javax.jcr.RepositoryException;
35 import javax.jcr.nodetype.NodeType;
36
37
38
39
40 public class DefaultFolderTypeHandler extends AbstractJcrTypeHandler implements JcrFolderTypeHandler {
41
42 private static final Log log = LogFactory.getLog(DefaultFolderTypeHandler.class);
43
44 private static class FolderIdentifierMap extends DefaultIdentifierMapBase {
45
46 public FolderIdentifierMap() {
47 super("nt:folder");
48
49 }
50 }
51
52 public String getTypeId() {
53 return BaseTypeId.CMIS_FOLDER.value();
54 }
55
56 public TypeDefinition getTypeDefinition() {
57 FolderTypeDefinitionImpl folderType = new FolderTypeDefinitionImpl();
58 folderType.setBaseTypeId(BaseTypeId.CMIS_FOLDER);
59 folderType.setIsControllableAcl(false);
60 folderType.setIsControllablePolicy(false);
61 folderType.setIsCreatable(true);
62 folderType.setDescription("Folder");
63 folderType.setDisplayName("Folder");
64 folderType.setIsFileable(true);
65 folderType.setIsFulltextIndexed(false);
66 folderType.setIsIncludedInSupertypeQuery(true);
67 folderType.setLocalName("Folder");
68 folderType.setLocalNamespace(JcrTypeManager.NAMESPACE);
69 folderType.setIsQueryable(true);
70 folderType.setQueryName(JcrTypeManager.FOLDER_TYPE_ID);
71 folderType.setId(JcrTypeManager.FOLDER_TYPE_ID);
72
73 JcrTypeManager.addBasePropertyDefinitions(folderType);
74 JcrTypeManager.addFolderPropertyDefinitions(folderType);
75
76 return folderType;
77 }
78
79 public IdentifierMap getIdentifierMap() {
80 return new FolderIdentifierMap();
81 }
82
83 public JcrFolder getJcrNode(Node node) {
84 return new JcrFolder(node, typeManager, pathManager, typeHandlerManager);
85 }
86
87 public boolean canHandle(Node node) throws RepositoryException {
88 return node.isNodeType(NodeType.NT_FOLDER) || node.getDepth() == 0;
89 }
90
91 public JcrFolder createFolder(JcrFolder parentFolder, String name, Properties properties) {
92 try {
93 Node node = parentFolder.getNode().addNode(name, NodeType.NT_FOLDER);
94 node.addMixin(NodeType.MIX_CREATED);
95 node.addMixin(NodeType.MIX_LAST_MODIFIED);
96
97
98 JcrFolder.setProperties(node, getTypeDefinition(), properties);
99
100 node.getSession().save();
101 return getJcrNode(node);
102 }
103 catch (RepositoryException e) {
104 log.debug(e.getMessage(), e);
105 throw new CmisStorageException(e.getMessage(), e);
106 }
107 }
108 }