From abc744d85d1d2c7d93f76b7108d20b4a331ca105 Mon Sep 17 00:00:00 2001 From: Craig Tan Date: Wed, 28 Aug 2013 11:37:18 +0000 Subject: [PATCH] RM-853 File Record audit event is absent git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@54561 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../messages/actions.properties | 37 +++++++ .../rm-action-context.xml | 7 +- .../audit/RecordsManagementAuditService.java | 7 ++ .../RecordsManagementAuditServiceImpl.java | 104 +++--------------- .../capability/RMActionProxyFactoryBean.java | 14 +++ 5 files changed, 77 insertions(+), 92 deletions(-) diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/actions.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/actions.properties index aa6200f4bf..207b7db780 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/actions.properties +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/actions.properties @@ -97,6 +97,43 @@ sendEmail.description=Send an email setPropertyValue.title=Set property value setPropertyValue.description=Set a property value +# Edit Hold Reason +editHoldReason.title=Edit hold reason +editHoldReason.description=Edit hold reason +# Relinquish Hold +relinquishHold.title=Relinquish hold +relinquishHold.description=Relinquish hold +# Edit Review As Of Date +editReviewAsOfDate.title=Edit review as of date +editReviewAsOfDate.description=Edit review as of date +# Edit Disposition Action As Of Date +editDispositionActionAsOfDate.title=Edit disposition action as of date +editDispositionActionAsOfDate.description=Edit disposition action as of date +# Broadcast Vital Record Definition +broadcastVitalRecordDefinition.title=Broadcast vital record definition +broadcastVitalRecordDefinition.description=Broadcast vital record definition +# Broadcast Disposition Action Definition Update +broadcastDispositionActionDefinitionUpdate.title=Broadcast disposition action definition update +broadcastDispositionActionDefinitionUpdate.description=Broadcast disposition action definition update +# Undo Event +undoEvent.title=Undo event +undoEvent.description=Undo event +# Transfer Complete +transferComplete.title=Transfer complete +transferComplete.description=Transfer complete +# Accession Complete +accessionComplete.title=Accession complete +accessionComplete.description=Accession complete +# Split Email +splitEmail.title=Split email +splitEmail.description=Split email +# Create Disposition Schedule +createDispositionSchedule.title=Create disposition schedule +createDispositionSchedule.description=Create disposition schedule +# File Destruction Report +fileDestructionReport.title=File destruction report +fileDestructionReport.description=File destruction report + # Action parameter constraints rm-ac-is-kind-kinds.record_category=Record Category rm-ac-is-kind-kinds.record_folder=Record Folder diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml index 84b17616f8..ff2fda6a24 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml @@ -145,6 +145,7 @@ abstract="true"> + org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction @@ -852,7 +853,7 @@ - + @@ -888,7 +889,7 @@ - + @@ -905,7 +906,7 @@ - + diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditService.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditService.java index 99460c6401..1344476983 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditService.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditService.java @@ -208,4 +208,11 @@ public interface RecordsManagementAuditService * @return List of audit events */ List getAuditEvents(); + + /** + * Register records management action + * + * @param rmAction records management action + */ + void register(RecordsManagementAction rmAction); } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java index c137fc89d9..8c8a1a5991 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java @@ -50,9 +50,9 @@ import org.alfresco.repo.policy.JavaBehaviour; import org.alfresco.repo.policy.PolicyComponent; import org.alfresco.repo.transaction.AlfrescoTransactionSupport; import org.alfresco.repo.transaction.RetryingTransactionHelper; +import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.repo.transaction.TransactionListenerAdapter; import org.alfresco.repo.transaction.TransactionalResourceHelper; -import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.audit.AuditQueryParameters; import org.alfresco.service.cmr.audit.AuditService; import org.alfresco.service.cmr.audit.AuditService.AuditQueryCallback; @@ -103,36 +103,8 @@ public class RecordsManagementAuditServiceImpl private static final String MSG_DELETE_OBJECT = "rm.audit.delte-object"; private static final String MSG_LOGIN_SUCCEEDED = "rm.audit.login-succeeded"; private static final String MSG_LOGIN_FAILED = "rm.audit.login-failed"; - private static final String MSG_REVIEWED = "rm.audit.reviewed"; - private static final String MSG_CUT_OFF = "rm.audit.cut-off"; - private static final String MSG_REVERSED_CUT_OFF = "rm.audit.reversed-cut-off"; - private static final String MSG_DESTROYED_ITEM = "rm.audit.destroyed-item"; - private static final String MSG_OPENED_RECORD_FOLDER = "rm.audit.opened-record-folder"; - private static final String MSG_CLOSED_RECORD_FOLDER = "rm.audit.closed-record-folder"; - private static final String MSG_DECLARED_RECORD = "rm.audit.declared-record"; - private static final String MSG_UNDECLARED_RECORD = "rm.audit.undeclared-record"; - private static final String MSG_FROZE_ITEM = "rm.audit.froze-item"; - private static final String MSG_RELINQUISED_HOLD = "rm.audit.relinquised-hold"; - private static final String MSG_UPDATED_HOLD_REASON = "rm.audit.updated-hold-reason"; - private static final String MSG_UPDATED_REVIEW_AS_OF_DATE = "rm.audit.updated-review-as-of-date"; - private static final String MSG_UPDATED_DISPOSITION_AS_OF_DATE = "rm.audit.updated-disposition-as-of-date"; - private static final String MSG_UPDATED_VITAL_RECORD_DEFINITION = "rm.audit.updated-vital-record-definition"; - private static final String MSG_UPDATED_DISPOSITOIN_ACTION_DEFINITION = "rm.audit.updated-disposition-action-definition"; - private static final String MSG_COMPELTED_EVENT = "rm.audit.completed-event"; - private static final String MSG_REVERSED_COMPLETE_EVENT = "rm.audit.revered-complete-event"; - private static final String MSG_TRANSFERRED_ITEM = "rm.audit.transferred-item"; - private static final String MSG_COMPLETED_TRANSFER = "rm.audit.completed-transfer"; - private static final String MSG_ACCESSION = "rm.audit.accession"; - private static final String MSG_COMPLETED_ACCESSION = "rm.audit.copmleted-accession"; - private static final String MSG_SCANNED_RECORD = "rm.audit.scanned-record"; - private static final String MSG_PDF_RECORD = "rm.audit.pdf-record"; - private static final String MSG_PHOTO_RECORD = "rm.audit.photo-record"; - private static final String MSG_WEB_RECORD = "rm.audit.web-record"; private static final String MSG_TRAIL_FILE_FAIL = "rm.audit.trail-file-fail"; private static final String MSG_AUDIT_REPORT = "rm.audit.audit-report"; - private static final String MSG_CREATE_DISPOSITION_SCHEDULE = "rm.audit.create-disposition-schedule"; - private static final String MSG_UNFREEZE = "rm.audit.unfreeze"; - private static final String MSG_REJECT_RECORD = "rm.audit.reject-record"; /** Logger */ private static Log logger = LogFactory.getLog(RecordsManagementAuditServiceImpl.class); @@ -157,7 +129,9 @@ public class RecordsManagementAuditServiceImpl private boolean shutdown = false; private RMAuditTxnListener txnListener; - private Map auditEvents; + + /** Registered and initialised records management auditEvents */ + private Map auditEvents = new HashMap(); /** * Set the component used to bind to behaviour callbacks @@ -239,6 +213,17 @@ public class RecordsManagementAuditServiceImpl this.filePlanService = filePlanService; } + /** + * @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementAuditService#register(org.alfresco.module.org_alfresco_module_rm.RecordsManagementAction) + */ + public void register(RecordsManagementAction rmAction) + { + if (this.auditEvents.containsKey(rmAction.getName()) == false) + { + this.auditEvents.put(rmAction.getName(), new AuditEvent(rmAction.getName(), rmAction.getLabel())); + } + } + /** * Checks that all necessary properties have been set. */ @@ -261,8 +246,6 @@ public class RecordsManagementAuditServiceImpl protected void initAuditEvents() { - // TODO: make this map configurable and localisable. - this.auditEvents = new HashMap(32); this.auditEvents.put(RM_AUDIT_EVENT_UPDATE_RM_OBJECT, new AuditEvent(RM_AUDIT_EVENT_UPDATE_RM_OBJECT, MSG_UPDATED_METADATA)); @@ -275,63 +258,6 @@ public class RecordsManagementAuditServiceImpl this.auditEvents.put(RM_AUDIT_EVENT_LOGIN_FAILURE, new AuditEvent(RM_AUDIT_EVENT_LOGIN_FAILURE, MSG_LOGIN_FAILED)); - this.auditEvents.put("reviewed", - new AuditEvent("reviewed", MSG_REVIEWED)); - this.auditEvents.put("cutoff", - new AuditEvent("cutoff", MSG_CUT_OFF)); - this.auditEvents.put("unCutoff", - new AuditEvent("unCutoff", MSG_REVERSED_CUT_OFF)); - this.auditEvents.put("destroy", - new AuditEvent("destroy", MSG_DESTROYED_ITEM)); - this.auditEvents.put("openRecordFolder", - new AuditEvent("openRecordFolder", MSG_OPENED_RECORD_FOLDER)); - this.auditEvents.put("closeRecordFolder", - new AuditEvent("closeRecordFolder", MSG_CLOSED_RECORD_FOLDER)); - this.auditEvents.put("declareRecord", - new AuditEvent("declareRecord", MSG_DECLARED_RECORD)); - this.auditEvents.put("undeclareRecord", - new AuditEvent("undeclareRecord", MSG_UNDECLARED_RECORD)); - this.auditEvents.put("freeze", - new AuditEvent("freeze", MSG_FROZE_ITEM)); - this.auditEvents.put("relinquishHold", - new AuditEvent("relinquishHold", MSG_RELINQUISED_HOLD)); - this.auditEvents.put("editHoldReason", - new AuditEvent("editHoldReason", MSG_UPDATED_HOLD_REASON)); - this.auditEvents.put("editReviewAsOfDate", - new AuditEvent("editReviewAsOfDate", MSG_UPDATED_REVIEW_AS_OF_DATE)); - this.auditEvents.put("editDispositionActionAsOfDate", - new AuditEvent("editDispositionActionAsOfDate", MSG_UPDATED_DISPOSITION_AS_OF_DATE)); - this.auditEvents.put("broadcastVitalRecordDefinition", - new AuditEvent("broadcastVitalRecordDefinition", MSG_UPDATED_VITAL_RECORD_DEFINITION)); - this.auditEvents.put("broadcastDispositionActionDefinitionUpdate", - new AuditEvent("broadcastDispositionActionDefinitionUpdate", MSG_UPDATED_DISPOSITOIN_ACTION_DEFINITION)); - this.auditEvents.put("completeEvent", - new AuditEvent("completeEvent", MSG_COMPELTED_EVENT)); - this.auditEvents.put("undoEvent", - new AuditEvent("undoEvent", MSG_REVERSED_COMPLETE_EVENT)); - this.auditEvents.put("transfer", - new AuditEvent("transfer", MSG_TRANSFERRED_ITEM)); - this.auditEvents.put("transferComplete", - new AuditEvent("transferComplete", MSG_COMPLETED_TRANSFER)); - this.auditEvents.put("accession", - new AuditEvent("accession", MSG_ACCESSION)); - this.auditEvents.put("accessionComplete", - new AuditEvent("accessionComplete", MSG_COMPLETED_ACCESSION)); - this.auditEvents.put("applyScannedRecord", - new AuditEvent("applyScannedRecord", MSG_SCANNED_RECORD)); - this.auditEvents.put("applyPdfRecord", - new AuditEvent("applyPdfRecord", MSG_PDF_RECORD)); - this.auditEvents.put("applyDigitalPhotographRecord", - new AuditEvent("applyDigitalPhotographRecord", MSG_PHOTO_RECORD)); - this.auditEvents.put("applyWebRecord", - new AuditEvent("applyWebRecord", MSG_WEB_RECORD)); - this.auditEvents.put("createDispositionSchedule", - new AuditEvent("createDispositionSchedule", MSG_CREATE_DISPOSITION_SCHEDULE)); - this.auditEvents.put("unfreeze", - new AuditEvent("unfreeze", MSG_UNFREEZE)); - this.auditEvents.put("reject", - new AuditEvent("reject", MSG_REJECT_RECORD)); - // Added for DOD compliance this.auditEvents.put("createPerson", new AuditEvent("createPerson", "User Created")); diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMActionProxyFactoryBean.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMActionProxyFactoryBean.java index c108110359..1f8a9b4b9a 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMActionProxyFactoryBean.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMActionProxyFactoryBean.java @@ -20,6 +20,7 @@ package org.alfresco.module.org_alfresco_module_rm.capability; import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction; import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService; +import org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService; import org.alfresco.repo.action.RuntimeActionService; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.springframework.aop.framework.ProxyFactoryBean; @@ -32,6 +33,8 @@ public class RMActionProxyFactoryBean extends ProxyFactoryBean private RecordsManagementActionService recordsManagementActionService; + private RecordsManagementAuditService recordsManagementAuditService; + /** * Set action service * @@ -52,6 +55,16 @@ public class RMActionProxyFactoryBean extends ProxyFactoryBean this.recordsManagementActionService = recordsManagementActionService; } + /** + * Set records management service + * + * @param recordsManagementAuditService + */ + public void setRecordsManagementAuditService(RecordsManagementAuditService recordsManagementAuditService) + { + this.recordsManagementAuditService = recordsManagementAuditService; + } + public void registerAction() { AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork() @@ -63,6 +76,7 @@ public class RMActionProxyFactoryBean extends ProxyFactoryBean // runtimeActionService.registerActionExecuter((ActionExecuter) getObject()); // } recordsManagementActionService.register((RecordsManagementAction) getObject()); + recordsManagementAuditService.register((RecordsManagementAction) getObject()); return null; } }, AuthenticationUtil.getSystemUserName());