mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged HEAD-BUG-FIX (4.3/Cloud) to HEAD (4.3/Cloud)
57041: Merged V4.2-BUG-FIX (4.2.1) to HEAD-BUG-FIX (Cloud/4.3) 56508: Merged HEAD-BUG-FIX to V4.2-BUG-FIX (4.2.1) 55931: <<NOT IN 4.1.6>> Merged V4.1-BUG-FIX (4.1.7) to HEAD-BUG-FIX (4.2) 55872: Merged DEV to V4.1-BUG-FIX (4.1.7) 55854: MNT-9067: bulkimport "Replace existing files" option does not work when versioning is enabled Clear version history on import versioned file and replace existing versioned file. Remove versionable aspect on import non versioned file and replace existing versioned file. Added unit test. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@61675 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -173,30 +173,28 @@ public abstract class AbstractNodeImporter implements NodeImporter
|
||||
return(result);
|
||||
}
|
||||
|
||||
protected final int importImportableItemFile(NodeRef nodeRef, ImportableItem importableItem, MetadataLoader.Metadata metadata)
|
||||
protected final int importImportableItemFile(NodeRef nodeRef, ImportableItem importableItem, MetadataLoader.Metadata metadata, NodeState nodeState)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
if (importableItem.hasVersionEntries())
|
||||
{
|
||||
// If cm:versionable isn't listed as one of the aspects for this node, add it - cm:versionable is required for nodes that have versions
|
||||
if (!metadata.getAspects().contains(ContentModel.ASPECT_VERSIONABLE))
|
||||
{
|
||||
if (logger.isWarnEnabled()) logger.warn("Metadata for file '" + getFileName(importableItem.getHeadRevision().getContentFile()) + "' was missing the cm:versionable aspect, yet it has " + importableItem.getVersionEntries().size() + " versions. Adding cm:versionable.");
|
||||
metadata.addAspect(ContentModel.ASPECT_VERSIONABLE);
|
||||
}
|
||||
|
||||
result = importContentVersions(nodeRef, importableItem);
|
||||
result = importContentVersions(nodeRef, importableItem, nodeState);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (nodeState == NodeState.REPLACED)
|
||||
{
|
||||
nodeService.removeAspect(nodeRef, ContentModel.ASPECT_VERSIONABLE);
|
||||
}
|
||||
|
||||
importContentAndMetadata(nodeRef, importableItem.getHeadRevision(), metadata);
|
||||
}
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
protected final int importContentVersions(NodeRef nodeRef, ImportableItem importableItem)
|
||||
protected final int importContentVersions(NodeRef nodeRef, ImportableItem importableItem, NodeState nodeState)
|
||||
{
|
||||
int result = 0;
|
||||
Map<String, Serializable> versionProperties = new HashMap<String, Serializable>();
|
||||
@@ -206,6 +204,11 @@ public abstract class AbstractNodeImporter implements NodeImporter
|
||||
//versionProperties.put(ContentModel.PROP_VERSION_LABEL.toPrefixString(), String.valueOf(versionEntry.getVersion()));
|
||||
versionProperties.put(VersionModel.PROP_VERSION_TYPE, VersionType.MAJOR); // Load every version as a major version for now - see http://code.google.com/p/alfresco-bulk-filesystem-import/issues/detail?id=84
|
||||
|
||||
if(nodeState == NodeState.REPLACED)
|
||||
{
|
||||
versionService.deleteVersionHistory(nodeRef);
|
||||
}
|
||||
|
||||
for (final ImportableItem.VersionedContentAndMetadata versionEntry : importableItem.getVersionEntries())
|
||||
{
|
||||
MetadataLoader.Metadata metadata = loadMetadata(versionEntry);
|
||||
@@ -220,6 +223,13 @@ public abstract class AbstractNodeImporter implements NodeImporter
|
||||
if (logger.isDebugEnabled()) logger.debug("Creating head revision of node " + nodeRef.toString());
|
||||
ImportableItem.ContentAndMetadata contentAndMetadata = importableItem.getHeadRevision();
|
||||
MetadataLoader.Metadata metadata = loadMetadata(contentAndMetadata);
|
||||
|
||||
// If cm:versionable isn't listed as one of the aspects for this node, add it - cm:versionable is required for nodes that have versions
|
||||
if (!metadata.getAspects().contains(ContentModel.ASPECT_VERSIONABLE))
|
||||
{
|
||||
if (logger.isWarnEnabled()) logger.warn("Metadata for file '" + getFileName(importableItem.getHeadRevision().getContentFile()) + "' was missing the cm:versionable aspect, yet it has " + importableItem.getVersionEntries().size() + " versions. Adding cm:versionable.");
|
||||
metadata.addAspect(ContentModel.ASPECT_VERSIONABLE);
|
||||
}
|
||||
importContentAndMetadata(nodeRef, importableItem.getHeadRevision(), metadata);
|
||||
versionService.createVersion(nodeRef, versionProperties);
|
||||
|
||||
@@ -248,7 +258,7 @@ public abstract class AbstractNodeImporter implements NodeImporter
|
||||
|
||||
nodeRef = fileFolderService.searchSimple(target, nodeName);
|
||||
|
||||
// If we didn't find an existing item, create a new node in the repo.
|
||||
// If we didn't find an existing item, create a new node in the repo.
|
||||
if (nodeRef == null)
|
||||
{
|
||||
// But only if the content file exists - we don't create new nodes based on metadata-only importableItems
|
||||
|
@@ -125,7 +125,7 @@ public class StreamingNodeImporterFactory extends AbstractNodeImporterFactory
|
||||
}
|
||||
else
|
||||
{
|
||||
numVersionProperties = importImportableItemFile(result, importableItem, metadata);
|
||||
numVersionProperties = importImportableItemFile(result, importableItem, metadata, nodeState);
|
||||
}
|
||||
|
||||
importStatus.incrementNodesWritten(importableItem, isDirectory, nodeState, metadata.getProperties().size() + 4, numVersionProperties);
|
||||
|
Reference in New Issue
Block a user