diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/messages/hold-service.properties b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/messages/hold-service.properties index 35662dcd2c..0c8921f747 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/messages/hold-service.properties +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/messages/hold-service.properties @@ -7,4 +7,4 @@ rm.hold.delete-node-frozen-children=Can't delete folder because it contains froz rm.hold.move-frozen-node=Frozen content can't be moved. rm.hold.update-frozen-node=Frozen content can't be updated. rm.hold.generic-permission-error=Can't delete hold, because you don't have the correct permissions for all the items within the hold. -rm.hold.detailed-permission-error=Can't delete hold, because filing permissions for the following items are needed: \ No newline at end of file +rm.hold.detailed-permission-error=Can't delete hold, because filing permissions for at least the following items are needed: \ No newline at end of file diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml index a6bb75c2c1..ccaba88ffc 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml @@ -940,6 +940,7 @@ + cm:lastThumbnailModification diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java index f30f93e59b..ab7aeff6ed 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java @@ -82,6 +82,7 @@ import org.alfresco.service.cmr.repository.MLText; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.security.AccessStatus; +import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.cmr.site.SiteInfo; import org.alfresco.service.cmr.site.SiteService; import org.alfresco.service.namespace.NamespaceService; @@ -206,6 +207,7 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean private FilePlanService filePlanService; private NamespaceService namespaceService; protected CapabilityService capabilityService; + protected PermissionService permissionService; private boolean shutdown = false; @@ -322,6 +324,15 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean this.ignoredAuditProperties = ignoredAuditProperties; } + /** + * + * @param permissionService + */ + public void setPermissionService(PermissionService permissionService) + { + this.permissionService = permissionService; + } + /** * @see org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService#registerAuditEvent(java.lang.String, java.lang.String) */ @@ -988,9 +999,10 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean } if (nodeRef != null && nodeService.exists(nodeRef) && - filePlanService.isFilePlanComponent(nodeRef) && - !AccessStatus.ALLOWED.equals( - capabilityService.getCapabilityAccessState(nodeRef, ACCESS_AUDIT_CAPABILITY))) + ((filePlanService.isFilePlanComponent(nodeRef) && + !AccessStatus.ALLOWED.equals( + capabilityService.getCapabilityAccessState(nodeRef, ACCESS_AUDIT_CAPABILITY))) + || (!AccessStatus.ALLOWED.equals(permissionService.hasPermission(nodeRef, PermissionService.READ))))) { return true; } @@ -1522,12 +1534,6 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean setNodeName(entry, json); - // TODO: Find another way for checking the event - if (entry.getEvent().equals("Delete RM Object")) - { - json.put("deleteObject", true); - } - json.put("nodeType", entry.getNodeType() == null ? "": entry.getNodeType()); json.put("event", entry.getEvent() == null ? "": getAuditEventLabel(entry.getEvent())); json.put("identifier", entry.getIdentifier() == null ? "": entry.getIdentifier()); @@ -1626,6 +1632,12 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean nodeName = getNodeName(entry.getBeforeProperties(), PARENT_GROUP); break; + case "Delete RM Object": + case "Delete Hold": + nodeName = entry.getNodeName(); + json.put("deleteObject", true); + break; + default: nodeName = entry.getNodeName(); break; diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/hold/HoldServiceImpl.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/hold/HoldServiceImpl.java index 258d3124b6..756dda7b85 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/hold/HoldServiceImpl.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/hold/HoldServiceImpl.java @@ -39,11 +39,11 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Stream; import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.model.ContentModel; import org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService; -import org.alfresco.module.org_alfresco_module_rm.audit.event.AuditEvent; import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService; import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel; import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService; @@ -104,6 +104,9 @@ public class HoldServiceImpl extends ServiceBaseImpl private static final String MSG_ERR_HOLD_PERMISSION_GENERIC_ERROR = "rm.hold.generic-permission-error"; private static final String MSG_ERR_HOLD_PERMISSION_DETAILED_ERROR = "rm.hold.detailed-permission-error"; + /** Maximum number of held items to display in error message */ + private static final int MAX_HELD_ITEMS_LIST_SIZE = 5; + /** File Plan Service */ private FilePlanService filePlanService; @@ -570,13 +573,13 @@ public class HoldServiceImpl extends ServiceBaseImpl if (heldNames.size() > 0) { StringBuilder sb = new StringBuilder(); - for (String name : heldNames) - { + Stream stream1 = heldNames.stream(); + stream1.limit(MAX_HELD_ITEMS_LIST_SIZE).forEach(name -> { sb.append("\n "); sb.append("'"); sb.append(name); sb.append("'"); - } + }); throw new AccessDeniedException(I18NUtil.getMessage(MSG_ERR_HOLD_PERMISSION_DETAILED_ERROR) + sb.toString()); }