Merged 5.1.N (5.1.1) to HEAD (5.2)

122735 adragoi: Merged 5.0.N (5.0.4) to 5.1.N (5.1.1)
      122668 aleahu: Merged V4.2-BUG-FIX (4.2.7) to 5.0.N (5.0.4)
         122625 aleahu: Merged V4.2.6 (4.2.6) to V4.2-BUG-FIX (4.2.7)
            122548 rmunteanu: Merged DEV to V4.2.6 (4.2.6)
               122546: MNT-14204: Enterprise bulkimport tool is not versioning for inplace import from two different batches
                  - If only version files are imported, version history is no longer removed and the version number is incremented
                  - Added new in-place import test and updated one streaming import test


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@123684 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Alan Davis
2016-03-11 22:32:08 +00:00
parent b6bec0669e
commit c6eef005f3
3 changed files with 40 additions and 18 deletions

View File

@@ -58,7 +58,7 @@ public final class ImportableItem
public boolean isValid()
{
return(headRevision.contentFileExists() || headRevision.metadataFileExists());
return(headRevision.contentFileExists() || headRevision.metadataFileExists() || hasVersionEntries());
}
public ContentAndMetadata getHeadRevision()

View File

@@ -170,6 +170,13 @@ public abstract class AbstractNodeImporter implements NodeImporter
}
}
// Step 3: read the parent filename from the item itself
if (result == null &&
importableItem != null)
{
result = importableItem.getHeadRevision().getContentFile().getName();
}
return(result);
}
@@ -204,11 +211,7 @@ 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);
}
// handle versions
for (final ImportableItem.VersionedContentAndMetadata versionEntry : importableItem.getVersionEntries())
{
MetadataLoader.Metadata metadata = loadMetadata(versionEntry);
@@ -220,18 +223,20 @@ public abstract class AbstractNodeImporter implements NodeImporter
result += metadata.getProperties().size() + 4; // Add 4 for "standard" metadata properties read from filesystem
}
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))
// handle head version, if exists
ImportableItem.ContentAndMetadata headRevContentAndMetadata = importableItem.getHeadRevision();
if(headRevContentAndMetadata != null && (headRevContentAndMetadata.contentFileExists()
|| headRevContentAndMetadata.metadataFileExists()))
{
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);
if (logger.isDebugEnabled())
{
logger.debug("Creating head revision of node " + nodeRef.toString());
}
MetadataLoader.Metadata metadata = loadMetadata(headRevContentAndMetadata);
importContentAndMetadata(nodeRef, headRevContentAndMetadata, metadata);
versionService.createVersion(nodeRef, versionProperties);
}
importContentAndMetadata(nodeRef, importableItem.getHeadRevision(), metadata);
versionService.createVersion(nodeRef, versionProperties);
return(result);
}

View File

@@ -462,9 +462,9 @@ public class BulkImportTest extends AbstractBulkImportTests
assertNotNull(history);
assertEquals("Imported file should have 5 versions:", 5, history.getAllVersions().size());
assertEquals("Imported file should have 9 versions:", 9, history.getAllVersions().size());
Version[] versions = history.getAllVersions().toArray(new Version[5]);
Version[] versions = history.getAllVersions().toArray(new Version[9]);
//compare the content of each version
ContentReader contentReader;
@@ -488,6 +488,23 @@ public class BulkImportTest extends AbstractBulkImportTests
assertNotNull(contentReader);
assertEquals("This is version 1 of replaced on import fileWithVersions.txt.", contentReader.getContentString());
// versions from bulkimport3/initial
contentReader = this.contentService.getReader(versions[5].getFrozenStateNodeRef(), ContentModel.PROP_CONTENT);
assertNotNull(contentReader);
assertEquals("This is the final version of fileWithVersions.txt.", contentReader.getContentString());
contentReader = this.contentService.getReader(versions[6].getFrozenStateNodeRef(), ContentModel.PROP_CONTENT);
assertNotNull(contentReader);
assertEquals("This is version 3 of fileWithVersions.txt.", contentReader.getContentString());
contentReader = this.contentService.getReader(versions[7].getFrozenStateNodeRef(), ContentModel.PROP_CONTENT);
assertNotNull(contentReader);
assertEquals("This is version 2 of fileWithVersions.txt.", contentReader.getContentString());
contentReader = this.contentService.getReader(versions[8].getFrozenStateNodeRef(), ContentModel.PROP_CONTENT);
assertNotNull(contentReader);
assertEquals("This is version 1 of fileWithVersions.txt.", contentReader.getContentString());
txn.commit();
txn = transactionService.getUserTransaction();
txn.begin();