From bc0a9431ce48725713e491e2da30fdb4ed1c4b40 Mon Sep 17 00:00:00 2001 From: Sara Aspery Date: Sat, 10 Jun 2017 23:50:15 +0100 Subject: [PATCH] RM-5175_Complete_record_with_missing_metadata --- .../action/impl/DeclareRecordAction.java | 41 ++++++++++++------- .../record/CompleteRecordTest.java | 14 +++---- 2 files changed, 33 insertions(+), 22 deletions(-) diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DeclareRecordAction.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DeclareRecordAction.java index a57d965306..2ccfee90cf 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DeclareRecordAction.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DeclareRecordAction.java @@ -28,8 +28,8 @@ package org.alfresco.module.org_alfresco_module_rm.action.impl; import java.io.Serializable; +import java.text.MessageFormat; import java.util.ArrayList; -import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -91,7 +91,7 @@ public class DeclareRecordAction extends RMActionExecuterAbstractBase { if (!getRecordService().isDeclared(actionedUponNodeRef)) { - List missingProperties = new ArrayList(5); + List missingProperties = new ArrayList<>(5); // Aspect not already defined - check mandatory properties then add if (!checkMandatoryPropertiesEnabled || mandatoryPropertiesSet(actionedUponNodeRef, missingProperties)) @@ -100,7 +100,7 @@ public class DeclareRecordAction extends RMActionExecuterAbstractBase try { // Add the declared aspect - Map declaredProps = new HashMap(2); + Map declaredProps = new HashMap<>(2); declaredProps.put(PROP_DECLARED_AT, new Date()); declaredProps.put(PROP_DECLARED_BY, AuthenticationUtil.getRunAsUser()); this.getNodeService().addAspect(actionedUponNodeRef, ASPECT_DECLARED_RECORD, declaredProps); @@ -195,22 +195,33 @@ public class DeclareRecordAction extends RMActionExecuterAbstractBase } // check for missing mandatory metadata from custom aspect definitions - // TODO should not apply record custom metadata for non-electronic and vice versa if (result) { - Collection aspects = this.getDictionaryService().getAspects(RM_CUSTOM_MODEL); - for (QName aspect : aspects) + QName aspect; + if (nodeRefType.equals(TYPE_NON_ELECTRONIC_DOCUMENT)) + //if (nodeRefType.getLocalName())) { - AspectDefinition aspectDef = this.getDictionaryService().getAspect(aspect); - for (PropertyDefinition propDef : aspectDef.getProperties().values()) - { - if (propDef.isMandatory() && nodeRefProps.get(propDef.getName()) == null) - { - logMissingProperty(propDef, missingProperties); + aspect = TYPE_NON_ELECTRONIC_DOCUMENT; + } + else + { + aspect = ASPECT_RECORD; + } + // get customAspectImpl + String localName = aspect.toPrefixString(getNamespaceService()).replace(":", ""); + localName = MessageFormat.format("{0}CustomProperties", localName); + QName customAspect = QName.createQName(RM_CUSTOM_URI, localName); - result = false; - break; - } + AspectDefinition aspectDef = this.getDictionaryService().getAspect(customAspect); + + for (PropertyDefinition propDef : aspectDef.getProperties().values()) + { + if (propDef.isMandatory() && nodeRefProps.get(propDef.getName()) == null) + { + logMissingProperty(propDef, missingProperties); + + result = false; + break; } } } diff --git a/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/record/CompleteRecordTest.java b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/record/CompleteRecordTest.java index 0079cc3829..b73ecc6f78 100644 --- a/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/record/CompleteRecordTest.java +++ b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/record/CompleteRecordTest.java @@ -285,7 +285,7 @@ public class CompleteRecordTest extends BaseRMTestCase defineCustomMetadata(CUSTOM_NON_ELECTRONIC_TEST, TYPE_NON_ELECTRONIC_DOCUMENT, MANDATORY_METADATA); // create a non-electronic record - nonElectronicRecord = utils.createRecord(rmFolder, "non-electronicRecord.txt", "title"); + nonElectronicRecord = utils.createNonElectronicRecord(rmFolder, "non-electronicRecord.txt", "title"); } public void when() @@ -329,10 +329,10 @@ public class CompleteRecordTest extends BaseRMTestCase action.setCheckMandatoryPropertiesEnabled(true); // create the custom metadata definition (that has a mandatory property) - defineCustomMetadata(CUSTOM_NON_ELECTRONIC_TEST, ASPECT_RECORD, MANDATORY_METADATA); + defineCustomMetadata(CUSTOM_NON_ELECTRONIC_TEST, TYPE_NON_ELECTRONIC_DOCUMENT, MANDATORY_METADATA); // create a non-electronic record - nonElectronicRecord = utils.createRecord(rmFolder, "non-electronicRecord.txt", "title"); + nonElectronicRecord = utils.createNonElectronicRecord(rmFolder, "non-electronicRecord.txt", "title"); // populate the custom metadata mandatory property for the record populateCustomMetadata(nonElectronicRecord, CUSTOM_NON_ELECTRONIC_TEST); @@ -424,11 +424,11 @@ public class CompleteRecordTest extends BaseRMTestCase // enable mandatory parameter check action.setCheckMandatoryPropertiesEnabled(true); - // create the custom metadata definition (that has a mandatory property) + // create the record custom metadata definition (that has a mandatory property) defineCustomMetadata(CUSTOM_ELECTRONIC_TEST, ASPECT_RECORD, MANDATORY_METADATA); // create a non-electronic record - nonElectronicRecord = utils.createRecord(rmFolder, "non-electronicRecord.txt", "title"); + nonElectronicRecord = utils.createNonElectronicRecord(rmFolder, "non-electronicRecord.txt", "title"); } public void when() @@ -471,8 +471,8 @@ public class CompleteRecordTest extends BaseRMTestCase // enable mandatory parameter check action.setCheckMandatoryPropertiesEnabled(true); - // create the custom metadata definition (that has a mandatory property) - defineCustomMetadata(CUSTOM_NON_ELECTRONIC_TEST, ASPECT_RECORD, MANDATORY_METADATA); + // create the non-electronic record custom metadata definition (that has a mandatory property) + defineCustomMetadata(CUSTOM_NON_ELECTRONIC_TEST, TYPE_NON_ELECTRONIC_DOCUMENT, MANDATORY_METADATA); // create a electronic record record = utils.createRecord(rmFolder, "electronicRecord.txt", "title");