From e32569bd2273a55b5e9ab5c49e714f01cd8c6444 Mon Sep 17 00:00:00 2001 From: Tuna Aksoy Date: Mon, 18 Aug 2014 16:08:56 +0000 Subject: [PATCH] Merged BRANCHES/V2.2 to HEAD: 80299: RM-1652 (Classified Records capabilities are never used) 80313: RM-1652 (Classified Records capabilities are never used) 80336: RM-1636 (Disposition steps can be executed for folder with frozen record) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@80344 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- ...15-capabilities-classification-context.xml | 20 +++++----- .../rm-service-context.xml | 1 + .../disposition/DispositionServiceImpl.java | 40 ++++++++++++++++++- .../service/CapabilityServiceImplTest.java | 30 +++++++------- 4 files changed, 65 insertions(+), 26 deletions(-) diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-capabilities-classification-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-capabilities-classification-context.xml index f4dfcfb640..04f71c3fa5 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-capabilities-classification-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/dod5015/dod5015-capabilities-classification-context.xml @@ -14,12 +14,12 @@ - + - + @@ -28,25 +28,25 @@ parent="declarativeCapability"> - + - + - + - + - + @@ -55,11 +55,11 @@ parent="declarativeCapability"> - + - + @@ -69,7 +69,7 @@ - + diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml index a17e7410f5..498a5f59e1 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml @@ -93,6 +93,7 @@ + diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java index 470c66ffdd..3883e7a097 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionServiceImpl.java @@ -33,6 +33,7 @@ import org.alfresco.module.org_alfresco_module_rm.disposition.property.Dispositi import org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEvent; import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanComponentKind; import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService; +import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService; import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; import org.alfresco.module.org_alfresco_module_rm.record.RecordService; import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService; @@ -87,6 +88,9 @@ public class DispositionServiceImpl extends ServiceBaseImpl /** Record Service */ private RecordService recordService; + /** Freeze Service */ + private FreezeService freezeService; + /** Disposition properties */ private Map dispositionProperties = new HashMap(4); @@ -156,6 +160,14 @@ public class DispositionServiceImpl extends ServiceBaseImpl this.recordService = recordService; } + /** + * @param freezeService freeze service + */ + public void setFreezeService(FreezeService freezeService) + { + this.freezeService = freezeService; + } + /** * Set the dispositionSelectionStrategy bean. * @@ -965,7 +977,7 @@ public class DispositionServiceImpl extends ServiceBaseImpl if (FilePlanComponentKind.RECORD_FOLDER.equals(filePlanService.getFilePlanComponentKind(nodeRef)) || FilePlanComponentKind.RECORD.equals(filePlanService.getFilePlanComponentKind(nodeRef))) { - if (!isDisposableItemCutoff(nodeRef)) + if (!isDisposableItemCutoff(nodeRef) && !isFrozenOrHasFrozenChildren(nodeRef)) { if (recordFolderService.isRecordFolder(nodeRef)) { @@ -999,6 +1011,32 @@ public class DispositionServiceImpl extends ServiceBaseImpl } } + /** + * Helper method to determine if a node is frozen or has frozen children + * + * @param nodeRef Node to be checked + * @return true if the node is frozen or has frozen children, false otherwise + */ + private boolean isFrozenOrHasFrozenChildren(NodeRef nodeRef) + { + boolean result = false; + + if (recordFolderService.isRecordFolder(nodeRef)) + { + result = freezeService.isFrozen(nodeRef) || freezeService.hasFrozenChildren(nodeRef); + } + else if (recordService.isRecord(nodeRef)) + { + result = freezeService.isFrozen(nodeRef); + } + else + { + throw new AlfrescoRuntimeException("The nodeRef '" + nodeRef + "' is neither a record nor a record folder."); + } + + return result; + } + /** * Helper method to apply the cut off * diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/CapabilityServiceImplTest.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/CapabilityServiceImplTest.java index 19f894e944..640093da54 100644 --- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/CapabilityServiceImplTest.java +++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/legacy/service/CapabilityServiceImplTest.java @@ -109,7 +109,7 @@ public class CapabilityServiceImplTest extends BaseRMTestCase public Void run() throws Exception { int initialSize = capabilityService.getGroups().size(); - + GroupImpl testGroup = new GroupImpl(); testGroup.setId("testGroup"); testGroup.setIndex(140); @@ -155,30 +155,30 @@ public class CapabilityServiceImplTest extends BaseRMTestCase List groups = capabilityService.getGroups(); assertNotNull(groups); - Group auditGroup = groups.get(0); - assertNotNull(auditGroup); + Group recordsGroup = groups.get(0); + assertNotNull(recordsGroup); - List auditCapabilities = capabilityService.getCapabilitiesByGroup(auditGroup); - assertNotNull(auditCapabilities); + List recordCapabilities = capabilityService.getCapabilitiesByGroup(recordsGroup); + assertNotNull(recordCapabilities); - int vitalRecordCapabilitiesSize = auditCapabilities.size(); - assertTrue(vitalRecordCapabilitiesSize > 1); + int recordCapabilitiesSize = recordCapabilities.size(); + assertTrue(recordCapabilitiesSize > 1); - for (int i = 1; i == vitalRecordCapabilitiesSize; i++) + for (int i = 1; i == recordCapabilitiesSize; i++) { - Capability capability = auditCapabilities.get(i); + Capability capability = recordCapabilities.get(i); assertNotNull(capability); assertEquals(i * 10, capability.getIndex()); } - Group vitalRecordsGroup = groups.get(groups.size() - 1); - assertNotNull(vitalRecordsGroup); + Group rulesGroup = groups.get(groups.size() - 2); + assertNotNull(rulesGroup); - List vitalRecordCapabilities = capabilityService.getCapabilitiesByGroupId(vitalRecordsGroup.getId()); - assertNotNull(vitalRecordCapabilities); + List ruleCapabilities = capabilityService.getCapabilitiesByGroupId(rulesGroup.getId()); + assertNotNull(ruleCapabilities); - vitalRecordCapabilitiesSize = vitalRecordCapabilities.size(); - assertTrue(vitalRecordCapabilitiesSize > 0); + int ruleCapabilitiesSize = ruleCapabilities.size(); + assertTrue(ruleCapabilitiesSize > 0); return null; }