From e6ebe6f58e86febf5f8f170dab8c9b10ee155a22 Mon Sep 17 00:00:00 2001 From: Roxana Lucanu Date: Wed, 27 May 2020 09:23:22 +0300 Subject: [PATCH] APPS-139 check capability --- .../org_alfresco_module_rm/action-context.xml | 1 + .../rm-capabilities-record-context.xml | 7 ++++- .../dm/DeclareAsVersionRecordAction.java | 26 ++++++++++++++----- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/action-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/action-context.xml index 52797d1848..e7358d2770 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/action-context.xml +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/action-context.xml @@ -28,6 +28,7 @@ + {http://www.alfresco.org/model/content/1.0}content diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-record-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-record-context.xml index 40a454449b..6fcab797ad 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-record-context.xml +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-record-context.xml @@ -158,7 +158,12 @@ parent="declarativeCapability"> - + + + RECORD_FOLDER + RECORD + + diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/dm/DeclareAsVersionRecordAction.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/dm/DeclareAsVersionRecordAction.java index da16aea68a..6cb62888db 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/dm/DeclareAsVersionRecordAction.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/dm/DeclareAsVersionRecordAction.java @@ -30,12 +30,12 @@ package org.alfresco.module.org_alfresco_module_rm.action.dm; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.model.ContentModel; import org.alfresco.module.org_alfresco_module_rm.action.AuditableActionExecuterAbstractBase; import org.alfresco.module.org_alfresco_module_rm.action.dm.RecordActionUtils.Services; +import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService; import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService; import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; import org.alfresco.module.org_alfresco_module_rm.record.RecordService; @@ -49,7 +49,6 @@ import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.namespace.QName; -import org.apache.commons.collections.map.HashedMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -73,6 +72,8 @@ public class DeclareAsVersionRecordAction extends AuditableActionExecuterAbstrac public static final String PARAM_FILE_PLAN = "file-plan"; public static final String PARAM_PATH = "path"; + private static final String FILE_UNFILED_RECORDS_CAPABILITY = "FileUnfiledRecords"; + /** Sync Model URI */ private static final String SYNC_MODEL_1_0_URI = "http://www.alfresco.org/model/sync/1.0"; @@ -88,15 +89,17 @@ public class DeclareAsVersionRecordAction extends AuditableActionExecuterAbstrac /** Dictionary service */ private DictionaryService dictionaryService; - /** recordable version service */ + /** Recordable version service */ private RecordableVersionService recordableVersionService; - /** authentication util */ + /** Authentication util */ private AuthenticationUtil authenticationUtil; /** Record service */ private RecordService recordService; + /** Capability service */ + private CapabilityService capabilityService; /** * @param nodeService node service @@ -146,6 +149,11 @@ public class DeclareAsVersionRecordAction extends AuditableActionExecuterAbstrac this.recordService = recordService; } + public void setCapabilityService(CapabilityService capabilityService) + { + this.capabilityService = capabilityService; + } + /** * @see org.alfresco.repo.action.executer.ActionExecuterAbstractBase#executeImpl(org.alfresco.service.cmr.action.Action, org.alfresco.service.cmr.repository.NodeRef) */ @@ -219,8 +227,13 @@ public class DeclareAsVersionRecordAction extends AuditableActionExecuterAbstrac // create record from latest version if (destinationRecordFolder != null) { - NodeRef recordedVersion = recordableVersionService.createRecordFromLatestVersion(destinationRecordFolder, actionedUponNodeRef); - recordService.file(recordedVersion); + boolean hasFilingCapability = capabilityService.hasCapability(destinationRecordFolder, FILE_UNFILED_RECORDS_CAPABILITY); + // validate destination record folder + if (hasFilingCapability) + { + NodeRef recordedVersion = recordableVersionService.createRecordFromLatestVersion(destinationRecordFolder, actionedUponNodeRef); + recordService.file(recordedVersion); + } } else { @@ -271,5 +284,4 @@ public class DeclareAsVersionRecordAction extends AuditableActionExecuterAbstrac } return false; } - }