/** * Get or create folder for classificationType.LIST. * * @param parent parent folder in which the list-based folder is to be found/created. * @param list list-based name of the folder * @param create flag indicating whether the folder should be created if it doesn't exist * @return node representing the list-based folder * @throws java.rmi.RemoteException for unexpected errors * @throws javax.jcr.RepositoryException for unexpected errors * @throws org.hippoecm.repository.api.WorkflowException for unexpected errors * * @deprecated use the getFolderPath and getFolder methods instead. */ @Deprecated protected HippoNode getListFolder(HippoNode parent, String list, boolean create) throws RemoteException, RepositoryException, WorkflowException { String listEncoded = getNodeNameCodec().encode(list); HippoNode resultParent = parent; if (resultParent.hasNode(listEncoded)) { resultParent = (HippoNode) resultParent.getNode(listEncoded); } else { if (create) { resultParent = createFolder(resultParent, listEncoded); } else { return null; } } return resultParent; }
protected HippoNode createFolder(HippoNode parentNode, String name) throws RepositoryException, RemoteException, WorkflowException { Session session = getSession().getJcrSession(); HippoWorkspace workspace = (HippoWorkspace) session.getWorkspace(); WorkflowManager workflowMgr = workspace.getWorkflowManager(); // get the folder node's workflow Workflow workflow = workflowMgr.getWorkflow("internal", parentNode); if (workflow instanceof FolderWorkflow) { FolderWorkflow fw = (FolderWorkflow) workflow; // create the new folder String category = "new-folder"; NodeType[] mixinNodeTypes = parentNode.getMixinNodeTypes(); for (NodeType mixinNodeType : mixinNodeTypes) { if (mixinNodeType.getName().equals(HippoTranslationNodeType.NT_TRANSLATED)) { category = "new-translated-folder"; break; } } fw.add(category, HippoStdNodeType.NT_FOLDER, name); HippoNode newFolder = (HippoNode) parentNode.getNode(name); // give the new folder the same folder types as its parent Property parentFolderType = parentNode.getProperty("hippostd:foldertype"); newFolder.setProperty("hippostd:foldertype", parentFolderType.getValues()); // try to reorder the folder reorderFolder(fw, parentNode); return newFolder; } else { throw new WorkflowException("Workflow is not an instance of FolderWorkflow"); } }