From da54db41c78f497c886dc8702abaaf8eadee9486 Mon Sep 17 00:00:00 2001 From: Rodica Sutu Date: Wed, 21 Mar 2018 23:06:48 +0200 Subject: [PATCH] audit the properties specific to cm:person before deleting the node in order to provide information about the delete user --- .../rm-audit-context.xml | 3 +- .../RecordsManagementAuditServiceImpl.java | 15 +++++--- .../audit/event/DeletePersonAuditEvent.java | 36 ++++++++++++++++--- 3 files changed, 44 insertions(+), 10 deletions(-) diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-audit-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-audit-context.xml index 2b47be2d8b..0d0d0f2457 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-audit-context.xml +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-audit-context.xml @@ -59,7 +59,8 @@ - + + 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 18be9f9997..812d2e7a3c 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 @@ -1514,6 +1514,16 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean json.put("nodeName", userName == null ? "": userName); json.put("createPerson", true); } + else if (entry.getEvent().equals("Delete Person") && entry.getNodeRef() != null) + { + String userName = null; + if (entry.getBeforeProperties() != null) + { + userName = (String) entry.getBeforeProperties().get(ContentModel.PROP_USERNAME); + } + json.put("nodeName", userName == null ? "" : userName); + json.put("deletePerson", true); + } else { json.put("nodeName", entry.getNodeName() == null ? "": entry.getNodeName()); @@ -1525,11 +1535,6 @@ public class RecordsManagementAuditServiceImpl extends AbstractLifecycleBean json.put("deleteObject", true); } - if (entry.getEvent().equals("Delete Person") && entry.getNodeRef() != null) - { - json.put("deletePerson", 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()); diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java index 8e350965dc..33e73d335b 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/audit/event/DeletePersonAuditEvent.java @@ -26,11 +26,20 @@ */ package org.alfresco.module.org_alfresco_module_rm.audit.event; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +import org.alfresco.model.ContentModel; import org.alfresco.repo.node.NodeServicePolicies.BeforeDeleteNodePolicy; import org.alfresco.repo.policy.annotation.Behaviour; import org.alfresco.repo.policy.annotation.BehaviourBean; import org.alfresco.repo.policy.annotation.BehaviourKind; +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; /** * Audits person deletion. @@ -41,14 +50,21 @@ import org.alfresco.service.cmr.repository.NodeRef; @BehaviourBean public class DeletePersonAuditEvent extends AuditEvent implements BeforeDeleteNodePolicy { -/* + private NodeService nodeService; + private DictionaryService dictionaryService; + public void setNodeService(NodeService nodeService) { this.nodeService = nodeService; } - */ + + public void setDictionaryService(DictionaryService dictionaryService) + { + this.dictionaryService = dictionaryService; + } + /** * @see org.alfresco.repo.node.NodeServicePolicies.BeforeDeleteNodePolicy#(org.alfresco.service.cmr.repository.ChildAssociationRef) */ @@ -61,9 +77,21 @@ public class DeletePersonAuditEvent extends AuditEvent implements BeforeDeleteNo ) public void beforeDeleteNode(NodeRef nodeRef) { + //get the cm:person properties + Set properties = dictionaryService.getPropertyDefs(ContentModel.TYPE_PERSON).keySet(); + //retrive the properties and the values + Map result = new HashMap<>(); + for (QName property : properties) + { + Serializable values = nodeService.getProperty(nodeRef, property); + if (values != null) + { + result.put(property, values); + } + } + //audit the property values before the delete event - // Map before = nodeService.getProperties(nodeRef); - recordsManagementAuditService.auditEvent(nodeRef, getName(), null, null, true, false); + recordsManagementAuditService.auditEvent(nodeRef, getName(), result, null, true, false); }