mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
- Auditable aspect now modifies properties in batch using setProperties
- Inbound rule type now only fires on content creation (not on content update) - Update rule type added, but commented out sue to issues with over enthusiastic policies. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2541 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -16,10 +16,13 @@
|
||||
*/
|
||||
package org.alfresco.repo.audit;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.policy.Behaviour;
|
||||
import org.alfresco.repo.policy.BehaviourFilter;
|
||||
import org.alfresco.repo.policy.JavaBehaviour;
|
||||
import org.alfresco.repo.policy.PolicyComponent;
|
||||
import org.alfresco.repo.policy.PolicyScope;
|
||||
@@ -51,6 +54,7 @@ public class AuditableAspect
|
||||
private NodeService nodeService;
|
||||
private AuthenticationService authenticationService;
|
||||
private PolicyComponent policyComponent;
|
||||
private BehaviourFilter policyBehaviourFilter;
|
||||
|
||||
// Behaviours
|
||||
private Behaviour onCreateAudit;
|
||||
@@ -74,6 +78,14 @@ public class AuditableAspect
|
||||
this.policyComponent = policyComponent;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param policyBehaviourFilter the policy behaviour filter
|
||||
*/
|
||||
public void setPolicyBehaviourFilter(BehaviourFilter policyBehaviourFilter)
|
||||
{
|
||||
this.policyBehaviourFilter = policyBehaviourFilter;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param authenticationService the authentication service
|
||||
*/
|
||||
@@ -122,28 +134,34 @@ public class AuditableAspect
|
||||
{
|
||||
try
|
||||
{
|
||||
onUpdateAudit.disable();
|
||||
this.policyBehaviourFilter.disableBehaviour(ContentModel.ASPECT_AUDITABLE);
|
||||
|
||||
// Get the current properties
|
||||
Map<QName, Serializable> properties = this.nodeService.getProperties(nodeRef);
|
||||
|
||||
// Set created / updated date
|
||||
Date now = new Date(System.currentTimeMillis());
|
||||
nodeService.setProperty(nodeRef, ContentModel.PROP_CREATED, now);
|
||||
nodeService.setProperty(nodeRef, ContentModel.PROP_MODIFIED, now);
|
||||
properties.put(ContentModel.PROP_CREATED, now);
|
||||
properties.put(ContentModel.PROP_MODIFIED, now);
|
||||
|
||||
// Set creator (but do not override, if explicitly set)
|
||||
String creator = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_CREATOR);
|
||||
String creator = (String)properties.get(ContentModel.PROP_CREATOR);
|
||||
if (creator == null || creator.length() == 0)
|
||||
{
|
||||
creator = getUsername();
|
||||
nodeService.setProperty(nodeRef, ContentModel.PROP_CREATOR, creator);
|
||||
properties.put(ContentModel.PROP_CREATOR, creator);
|
||||
}
|
||||
nodeService.setProperty(nodeRef, ContentModel.PROP_MODIFIER, creator);
|
||||
properties.put(ContentModel.PROP_MODIFIER, creator);
|
||||
|
||||
// Set the updated property values
|
||||
this.nodeService.setProperties(nodeRef, properties);
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("Auditable node " + nodeRef + " created [created,modified=" + now + ";creator,modifier=" + creator + "]");
|
||||
}
|
||||
finally
|
||||
{
|
||||
onUpdateAudit.enable();
|
||||
this.policyBehaviourFilter.enableBehaviour(ContentModel.ASPECT_AUDITABLE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -153,17 +171,32 @@ public class AuditableAspect
|
||||
* @param nodeRef the updated node
|
||||
*/
|
||||
public void onUpdateAudit(NodeRef nodeRef)
|
||||
{
|
||||
// Set updated date
|
||||
Date now = new Date(System.currentTimeMillis());
|
||||
nodeService.setProperty(nodeRef, ContentModel.PROP_MODIFIED, now);
|
||||
|
||||
// Set modifier
|
||||
String modifier = getUsername();
|
||||
nodeService.setProperty(nodeRef, ContentModel.PROP_MODIFIER, modifier);
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("Auditable node " + nodeRef + " updated [modified=" + now + ";modifier=" + modifier + "]");
|
||||
{
|
||||
try
|
||||
{
|
||||
this.policyBehaviourFilter.disableBehaviour(ContentModel.ASPECT_AUDITABLE);
|
||||
|
||||
// Get the current properties
|
||||
Map<QName, Serializable> properties = this.nodeService.getProperties(nodeRef);
|
||||
|
||||
// Set updated date
|
||||
Date now = new Date(System.currentTimeMillis());
|
||||
properties.put(ContentModel.PROP_MODIFIED, now);
|
||||
|
||||
// Set modifier
|
||||
String modifier = getUsername();
|
||||
properties.put(ContentModel.PROP_MODIFIER, modifier);
|
||||
|
||||
// Set the updated property values
|
||||
this.nodeService.setProperties(nodeRef, properties);
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("Auditable node " + nodeRef + " updated [modified=" + now + ";modifier=" + modifier + "]");
|
||||
}
|
||||
finally
|
||||
{
|
||||
this.policyBehaviourFilter.enableBehaviour(ContentModel.ASPECT_AUDITABLE);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user