mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged FILE-FOLDER-API (5.2.0) to HEAD (5.2)
123495 jvonka: Nodes (FileFolder) API - add optional relativePath (to make folders) when creating a folder, empty file or other custom node RA-703 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@126542 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1278,7 +1278,7 @@ public class NodesImpl implements Nodes
|
||||
}
|
||||
|
||||
// check that requested parent node exists and it's type is a (sub-)type of folder
|
||||
final NodeRef parentNodeRef = validateOrLookupNode(parentFolderNodeId, null);
|
||||
NodeRef parentNodeRef = validateOrLookupNode(parentFolderNodeId, null);
|
||||
|
||||
if (! nodeMatches(parentNodeRef, Collections.singleton(ContentModel.TYPE_FOLDER), null, false))
|
||||
{
|
||||
@@ -1316,7 +1316,7 @@ public class NodesImpl implements Nodes
|
||||
}
|
||||
|
||||
// Existing file/folder name handling
|
||||
final boolean autoRename = Boolean.valueOf(parameters.getParameter(PARAM_AUTO_RENAME));
|
||||
boolean autoRename = Boolean.valueOf(parameters.getParameter(PARAM_AUTO_RENAME));
|
||||
if (autoRename && (isContent || isSubClass(nodeTypeQName, ContentModel.TYPE_FOLDER)))
|
||||
{
|
||||
NodeRef existingNode = nodeService.getChildByName(parentNodeRef, ContentModel.ASSOC_CONTAINS, nodeName);
|
||||
@@ -1327,6 +1327,9 @@ public class NodesImpl implements Nodes
|
||||
}
|
||||
}
|
||||
|
||||
String relativePath = nodeInfo.getRelativePath();
|
||||
parentNodeRef = getOrCreatePath(parentNodeRef, relativePath);
|
||||
|
||||
// Create the node
|
||||
NodeRef nodeRef = createNodeImpl(parentNodeRef, nodeName, nodeTypeQName, props);
|
||||
|
||||
@@ -1357,6 +1360,23 @@ public class NodesImpl implements Nodes
|
||||
return getFolderOrDocument(nodeRef.getId(), parameters);
|
||||
}
|
||||
|
||||
private NodeRef getOrCreatePath(NodeRef parentNodeRef, String relativePath)
|
||||
{
|
||||
if (relativePath != null)
|
||||
{
|
||||
List<String> pathElements = getPathElements(relativePath);
|
||||
|
||||
// Checks for the presence of, and creates as necessary,
|
||||
// the folder structure in the provided path elements list.
|
||||
if (pathElements != null && !pathElements.isEmpty())
|
||||
{
|
||||
parentNodeRef = makeFolders(parentNodeRef, pathElements);
|
||||
}
|
||||
}
|
||||
|
||||
return parentNodeRef;
|
||||
}
|
||||
|
||||
private NodeRef createNodeImpl(NodeRef parentNodeRef, String nodeName, QName nodeTypeQName, Map<QName, Serializable> props)
|
||||
{
|
||||
if (props == null)
|
||||
@@ -1835,7 +1855,7 @@ public class NodesImpl implements Nodes
|
||||
boolean overwrite = false; // If a fileName clashes for a versionable file
|
||||
Boolean majorVersion = null;
|
||||
String versionComment = null;
|
||||
List<String> pathElements = null;
|
||||
String relativePath = null;
|
||||
Map<String, Object> qnameStrProps = new HashMap<>();
|
||||
Map<QName, Serializable> properties = null;
|
||||
|
||||
@@ -1880,7 +1900,7 @@ public class NodesImpl implements Nodes
|
||||
break;
|
||||
|
||||
case "relativepath":
|
||||
pathElements = getPathElements(getStringOrNull(field.getValue()));
|
||||
relativePath = getStringOrNull(field.getValue());
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -1912,12 +1932,8 @@ public class NodesImpl implements Nodes
|
||||
throw new InvalidArgumentException("Both 'overwrite' and 'autoRename' should not be true when uploading a file");
|
||||
}
|
||||
|
||||
// Checks for the presence of, and creates as necessary,
|
||||
// the folder structure in the provided path elements list.
|
||||
if (pathElements != null && !pathElements.isEmpty())
|
||||
{
|
||||
parentNodeRef = makeFolders(parentNodeRef, pathElements);
|
||||
}
|
||||
// if requested, make (get or create) path
|
||||
parentNodeRef = getOrCreatePath(parentNodeRef, relativePath);
|
||||
|
||||
try
|
||||
{
|
||||
@@ -1938,6 +1954,8 @@ public class NodesImpl implements Nodes
|
||||
{
|
||||
// attempt to find a unique name
|
||||
fileName = findUniqueName(parentNodeRef, fileName);
|
||||
|
||||
// drop-through !
|
||||
}
|
||||
else if (overwrite && nodeService.hasAspect(existingFile, ContentModel.ASPECT_VERSIONABLE))
|
||||
{
|
||||
@@ -1987,9 +2005,6 @@ public class NodesImpl implements Nodes
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper to create a new node and writes its content to the repository.
|
||||
*/
|
||||
private Node createNewFile(NodeRef parentNodeRef, String fileName, QName nodeType, Content content, Map<QName, Serializable> props, Parameters params)
|
||||
{
|
||||
if (nodeType == null)
|
||||
|
Reference in New Issue
Block a user