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() public boolean isValid()
{ {
return(headRevision.contentFileExists() || headRevision.metadataFileExists()); return(headRevision.contentFileExists() || headRevision.metadataFileExists() || hasVersionEntries());
} }
public ContentAndMetadata getHeadRevision() 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); 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(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 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) // handle versions
{
versionService.deleteVersionHistory(nodeRef);
}
for (final ImportableItem.VersionedContentAndMetadata versionEntry : importableItem.getVersionEntries()) for (final ImportableItem.VersionedContentAndMetadata versionEntry : importableItem.getVersionEntries())
{ {
MetadataLoader.Metadata metadata = loadMetadata(versionEntry); 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 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()); // handle head version, if exists
ImportableItem.ContentAndMetadata contentAndMetadata = importableItem.getHeadRevision(); ImportableItem.ContentAndMetadata headRevContentAndMetadata = importableItem.getHeadRevision();
MetadataLoader.Metadata metadata = loadMetadata(contentAndMetadata); if(headRevContentAndMetadata != null && (headRevContentAndMetadata.contentFileExists()
|| headRevContentAndMetadata.metadataFileExists()))
// 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."); if (logger.isDebugEnabled())
metadata.addAspect(ContentModel.ASPECT_VERSIONABLE); {
logger.debug("Creating head revision of node " + nodeRef.toString());
} }
importContentAndMetadata(nodeRef, importableItem.getHeadRevision(), metadata);
MetadataLoader.Metadata metadata = loadMetadata(headRevContentAndMetadata);
importContentAndMetadata(nodeRef, headRevContentAndMetadata, metadata);
versionService.createVersion(nodeRef, versionProperties); versionService.createVersion(nodeRef, versionProperties);
}
return(result); return(result);
} }

View File

@@ -462,9 +462,9 @@ public class BulkImportTest extends AbstractBulkImportTests
assertNotNull(history); 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 //compare the content of each version
ContentReader contentReader; ContentReader contentReader;
@@ -488,6 +488,23 @@ public class BulkImportTest extends AbstractBulkImportTests
assertNotNull(contentReader); assertNotNull(contentReader);
assertEquals("This is version 1 of replaced on import fileWithVersions.txt.", contentReader.getContentString()); 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.commit();
txn = transactionService.getUserTransaction(); txn = transactionService.getUserTransaction();
txn.begin(); txn.begin();