From 5a9066e8c5230b9adcf2735d5c13855dcea26e63 Mon Sep 17 00:00:00 2001 From: Jared Ottley Date: Fri, 30 Aug 2013 19:16:46 +0000 Subject: [PATCH] [RM-885] Copy action works incorrectly for folders and subcategories. Add policy for record categories that does not allow them to be copied into record folders. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@54726 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../model/behaviour/RecordCopyBehaviours.java | 45 ++++++++++++++++++- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordCopyBehaviours.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordCopyBehaviours.java index 04746cd141..bff880a762 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordCopyBehaviours.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordCopyBehaviours.java @@ -18,7 +18,6 @@ */ package org.alfresco.module.org_alfresco_module_rm.model.behaviour; -import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -28,7 +27,6 @@ import org.alfresco.module.org_alfresco_module_rm.RecordsManagementServiceRegist import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService; import org.alfresco.module.org_alfresco_module_rm.identifier.IdentifierService; import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; -import org.alfresco.repo.copy.AbstractCopyBehaviourCallback; import org.alfresco.repo.copy.CopyBehaviourCallback; import org.alfresco.repo.copy.CopyDetails; import org.alfresco.repo.copy.DefaultCopyBehaviourCallback; @@ -143,6 +141,10 @@ public class RecordCopyBehaviours implements RecordsManagementModel QName.createQName(NamespaceService.ALFRESCO_URI, "getCopyCallback"), RecordsManagementModel.TYPE_RECORD_FOLDER, new JavaBehaviour(this, "onCopyRecordFolderNode")); + this.policyComponent.bindClassBehaviour( + QName.createQName(NamespaceService.ALFRESCO_URI, "getCopyCallback"), + RecordsManagementModel.TYPE_RECORD_CATEGORY, + new JavaBehaviour(this, "onCopyRecordCategoryNode")); } /** @@ -223,6 +225,15 @@ public class RecordCopyBehaviours implements RecordsManagementModel } } + /** + * Record Folder Copy Behaviour + * + *
  • Do not allow copy of record folder into another record folder
  • + * + * @param classRef + * @param copyDetails + * @return + */ public CopyBehaviourCallback onCopyRecordFolderNode(final QName classRef, final CopyDetails copyDetails) { return new DefaultCopyBehaviourCallback() @@ -244,6 +255,36 @@ public class RecordCopyBehaviours implements RecordsManagementModel }; } + /** + * Record Category Copy Behaviour + * + *
  • Do not allow copy of record category into a record folder
  • + * + * @param classRef + * @param copyDetails + * @return + */ + public CopyBehaviourCallback onCopyRecordCategoryNode(final QName classRef, final CopyDetails copyDetails) + { + return new DefaultCopyBehaviourCallback() + { + final NodeService nodeService = rmServiceRegistry.getNodeService(); + + /** + * If the targets parent is a Record Folder -- Do Not Allow Copy + * + * @param classQName + * @param copyDetails + * @return boolean + */ + @Override + public boolean getMustCopy(QName classQName, CopyDetails copyDetails) + { + return nodeService.getType(copyDetails.getTargetParentNodeRef()).equals(TYPE_RECORD_FOLDER) ? false : true; + } + }; + } + /** * Removes unwanted aspects *