From b9963fa247ed7abe0cfd008b4f79d102e4f934d0 Mon Sep 17 00:00:00 2001 From: Roy Wetherall Date: Wed, 10 Apr 2013 09:49:44 +0000 Subject: [PATCH] RM: Users with write permission on doc that is made record can only edit doc metadata by default. * relates to RM-600 * date property handling improvement git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@49047 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../patch/RMv21InPlacePatch.java | 2 +- .../record/RecordServiceImpl.java | 15 ++++++++++++++- .../role/FilePlanRoleServiceImpl.java | 2 +- .../test/service/RecordServiceImplTest.java | 8 ++++---- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21InPlacePatch.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21InPlacePatch.java index 79f2eb2a43..8a5840561d 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21InPlacePatch.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21InPlacePatch.java @@ -122,7 +122,7 @@ public class RMv21InPlacePatch extends AbstractModuleComponent // set capabilities permissionService.setPermission(filePlan, ExtendedReaderDynamicAuthority.EXTENDED_READER, RMPermissionModel.VIEW_RECORDS, true); - permissionService.setPermission(filePlan, ExtendedReaderDynamicAuthority.EXTENDED_READER, RMPermissionModel.EDIT_RECORD_METADATA, true); + permissionService.setPermission(filePlan, ExtendedReaderDynamicAuthority.EXTENDED_READER, RMPermissionModel.EDIT_NON_RECORD_METADATA, true); // create unfiled container filePlanService.createUnfiledContainer(filePlan); diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java index f472f555de..9782c0099d 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java @@ -343,8 +343,21 @@ public class RecordServiceImpl implements RecordService, { afterValue = after.get(property); } + + boolean propertyUnchanged = false; + if (beforeValue != null && afterValue != null && + beforeValue instanceof Date && afterValue instanceof Date) + { + // deal with date values + propertyUnchanged = (((Date)beforeValue).compareTo((Date)afterValue) == 0); + } + else + { + // otherwise + propertyUnchanged = EqualsHelper.nullSafeEquals(beforeValue, afterValue); + } - if (EqualsHelper.nullSafeEquals(beforeValue, afterValue) == false && + if (propertyUnchanged == false && isPropertyEditable(nodeRef, property) == false) { // the user can't edit the record property diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java index e99c0e2cb5..2ca710a788 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/role/FilePlanRoleServiceImpl.java @@ -194,7 +194,7 @@ public class FilePlanRoleServiceImpl implements FilePlanRoleService, // set the capabilities permissionService.setPermission(rmRootNode, ExtendedReaderDynamicAuthority.EXTENDED_READER, RMPermissionModel.VIEW_RECORDS, true); - permissionService.setPermission(rmRootNode, ExtendedReaderDynamicAuthority.EXTENDED_READER, RMPermissionModel.EDIT_RECORD_METADATA, true); + permissionService.setPermission(rmRootNode, ExtendedReaderDynamicAuthority.EXTENDED_READER, RMPermissionModel.EDIT_NON_RECORD_METADATA, true); // Create the unfiled record container return filePlanService.createUnfiledContainer(rmRootNode); diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/RecordServiceImplTest.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/RecordServiceImplTest.java index 141d704655..615a54dc9e 100644 --- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/RecordServiceImplTest.java +++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/RecordServiceImplTest.java @@ -270,12 +270,12 @@ public class RecordServiceImplTest extends BaseRMTestCase assertEquals(AccessStatus.ALLOWED, permissionService.hasPermission(filePlan, RMPermissionModel.VIEW_RECORDS)); assertEquals(AccessStatus.ALLOWED, permissionService.hasPermission(filePlan, - RMPermissionModel.EDIT_RECORD_METADATA)); + RMPermissionModel.EDIT_NON_RECORD_METADATA)); Capability filling = capabilityService.getCapability("FileRecords"); assertEquals(AccessStatus.DENIED, filling.hasPermission(dmDocument)); - Capability editRecordMetadata = capabilityService.getCapability("EditRecordMetadata"); + Capability editRecordMetadata = capabilityService.getCapability("EditNonRecordMetadata"); assertEquals(AccessStatus.ALLOWED, editRecordMetadata.hasPermission(dmDocument)); Capability updateProperties = capabilityService.getCapability("UpdateProperties"); @@ -308,12 +308,12 @@ public class RecordServiceImplTest extends BaseRMTestCase assertEquals(AccessStatus.ALLOWED, permissionService.hasPermission(filePlan, RMPermissionModel.VIEW_RECORDS)); assertEquals(AccessStatus.ALLOWED, permissionService.hasPermission(filePlan, - RMPermissionModel.EDIT_RECORD_METADATA)); + RMPermissionModel.EDIT_NON_RECORD_METADATA)); Capability filling = capabilityService.getCapability("FileRecords"); assertEquals(AccessStatus.DENIED, filling.hasPermission(dmDocument)); - Capability editRecordMetadata = capabilityService.getCapability("EditRecordMetadata"); + Capability editRecordMetadata = capabilityService.getCapability("EditNonRecordMetadata"); assertEquals(AccessStatus.DENIED, editRecordMetadata.hasPermission(dmDocument)); Capability updateProperties = capabilityService.getCapability("UpdateProperties");