From 5dd2640674d6ed07dd1b9566a4fc303b2f89c5dc Mon Sep 17 00:00:00 2001 From: Roxana Lucanu-Ghetu Date: Wed, 16 May 2018 11:03:32 +0300 Subject: [PATCH 1/2] RM-6320 Added Declassification Review properties in records search --- .../model/recordsModel.xml | 13 ++++++ .../disposition/DispositionActionImpl.java | 40 +++++++++++++++++++ .../model/RecordsManagementModel.java | 2 + 3 files changed, 55 insertions(+) diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/model/recordsModel.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/model/recordsModel.xml index dc0e5277b3..a8ef0ea7bf 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/model/recordsModel.xml +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/model/recordsModel.xml @@ -1132,6 +1132,19 @@ false + + d:date + true + + + d:text + true + + true + false + false + + diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionActionImpl.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionActionImpl.java index 2e5a12664f..9d59693d28 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionActionImpl.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionActionImpl.java @@ -35,11 +35,13 @@ import java.util.List; import java.util.Map; import org.alfresco.error.AlfrescoRuntimeException; +import org.alfresco.model.ContentModel; import org.alfresco.module.org_alfresco_module_rm.RecordsManagementServiceRegistry; import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction; import org.alfresco.module.org_alfresco_module_rm.event.EventCompletionDetails; import org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEvent; import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; +import org.alfresco.module.org_alfresco_module_rm.script.slingshot.RMSearchGet; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; import org.alfresco.service.cmr.repository.ChildAssociationRef; @@ -328,6 +330,11 @@ public class DispositionActionImpl implements DispositionAction, props.put(PROP_EVENT_EXECUTION_COMPLETED_BY, completedByValue); services.getNodeService().setProperties(eventNodeRef, props); + if (eventName.equals("declassification_review")) + { + setDeclassificationReview(eventNodeRef, completedAtValue, completedByValue); + } + // Check to see if the events eligible property needs to be updated updateEventEligible(); @@ -518,4 +525,37 @@ public class DispositionActionImpl implements DispositionAction, return eligible; } + + /** + * Sets declassification review authority and date on records and record folder + * + * @param eventNodeRef Declassification review event node ref + * @param completedAtValue Declassification review authority + * @param completedByValue Declassification review date + */ + private void setDeclassificationReview(NodeRef eventNodeRef, Date completedAtValue, String completedByValue) + { + NodeRef nextDispositionActionNodeRef = services.getNodeService().getPrimaryParent(eventNodeRef).getParentRef(); + NodeRef nodeRef = services.getNodeService().getPrimaryParent(nextDispositionActionNodeRef).getParentRef(); + + Map nodeProps = services.getNodeService().getProperties(nodeRef); + nodeProps.put(PROP_RS_DECLASSIFICATION_REVIEW_COMPLETED_AT, completedAtValue); + nodeProps.put(PROP_RS_DECLASSIFICATION_REVIEW_COMPLETED_BY, completedByValue); + services.getNodeService().setProperties(nodeRef, nodeProps); + + // check if the node is a record folder then set the declassification review on the records also + if (services.getNodeService().getType(nodeRef).equals(RecordsManagementModel.TYPE_RECORD_FOLDER)) + { + // get all the records inside the record folder + List records = services.getNodeService().getChildAssocs(nodeRef, ContentModel.ASSOC_CONTAINS, RegexQNamePattern.MATCH_ALL); + for (ChildAssociationRef child : records) + { + NodeRef recordNodeRef = child.getChildRef(); + Map recordProps = services.getNodeService().getProperties(recordNodeRef); + recordProps.put(PROP_RS_DECLASSIFICATION_REVIEW_COMPLETED_AT, completedAtValue); + recordProps.put(PROP_RS_DECLASSIFICATION_REVIEW_COMPLETED_BY, completedByValue); + services.getNodeService().setProperties(recordNodeRef, recordProps); + } + } + } } diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/RecordsManagementModel.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/RecordsManagementModel.java index f7211b7d33..e7f23fb9c9 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/RecordsManagementModel.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/RecordsManagementModel.java @@ -247,6 +247,8 @@ public interface RecordsManagementModel extends RecordsManagementCustomModel QName PROP_RS_HAS_DISPOITION_SCHEDULE = QName.createQName(RM_URI, "recordSearchHasDispositionSchedule"); QName PROP_RS_DISPOITION_INSTRUCTIONS = QName.createQName(RM_URI, "recordSearchDispositionInstructions"); QName PROP_RS_DISPOITION_AUTHORITY = QName.createQName(RM_URI, "recordSearchDispositionAuthority"); + QName PROP_RS_DECLASSIFICATION_REVIEW_COMPLETED_AT = QName.createQName(RM_URI, "recordSearchDeclassificationReviewCompletedAt"); + QName PROP_RS_DECLASSIFICATION_REVIEW_COMPLETED_BY = QName.createQName(RM_URI, "recordSearchDeclassificationReviewCompletedBy"); /** @depreacted as of 2.2, because disposable items can now be in multiple holds */ @Deprecated QName PROP_RS_HOLD_REASON = QName.createQName(RM_URI, "recordSearchHoldReason"); From 8251588fd1f0bea4c47047f632131e52254e741c Mon Sep 17 00:00:00 2001 From: Roxana Lucanu-Ghetu Date: Wed, 16 May 2018 15:35:43 +0300 Subject: [PATCH 2/2] RM-6320 Code review changes. --- .../model/recordsModel.xml | 4 ++-- .../disposition/DispositionActionImpl.java | 20 ++++++++++--------- .../model/RecordsManagementModel.java | 4 ++-- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/model/recordsModel.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/model/recordsModel.xml index a8ef0ea7bf..d23a9f7b37 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/model/recordsModel.xml +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/model/recordsModel.xml @@ -1132,11 +1132,11 @@ false - + d:date true - + d:text true diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionActionImpl.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionActionImpl.java index 9d59693d28..c8d474cac8 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionActionImpl.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/disposition/DispositionActionImpl.java @@ -330,6 +330,7 @@ public class DispositionActionImpl implements DispositionAction, props.put(PROP_EVENT_EXECUTION_COMPLETED_BY, completedByValue); services.getNodeService().setProperties(eventNodeRef, props); + // check a specific event from rmEventConfigBootstrap.json if (eventName.equals("declassification_review")) { setDeclassificationReview(eventNodeRef, completedAtValue, completedByValue); @@ -537,11 +538,7 @@ public class DispositionActionImpl implements DispositionAction, { NodeRef nextDispositionActionNodeRef = services.getNodeService().getPrimaryParent(eventNodeRef).getParentRef(); NodeRef nodeRef = services.getNodeService().getPrimaryParent(nextDispositionActionNodeRef).getParentRef(); - - Map nodeProps = services.getNodeService().getProperties(nodeRef); - nodeProps.put(PROP_RS_DECLASSIFICATION_REVIEW_COMPLETED_AT, completedAtValue); - nodeProps.put(PROP_RS_DECLASSIFICATION_REVIEW_COMPLETED_BY, completedByValue); - services.getNodeService().setProperties(nodeRef, nodeProps); + setPropsOnContent(nodeRef, completedAtValue, completedByValue); // check if the node is a record folder then set the declassification review on the records also if (services.getNodeService().getType(nodeRef).equals(RecordsManagementModel.TYPE_RECORD_FOLDER)) @@ -551,11 +548,16 @@ public class DispositionActionImpl implements DispositionAction, for (ChildAssociationRef child : records) { NodeRef recordNodeRef = child.getChildRef(); - Map recordProps = services.getNodeService().getProperties(recordNodeRef); - recordProps.put(PROP_RS_DECLASSIFICATION_REVIEW_COMPLETED_AT, completedAtValue); - recordProps.put(PROP_RS_DECLASSIFICATION_REVIEW_COMPLETED_BY, completedByValue); - services.getNodeService().setProperties(recordNodeRef, recordProps); + setPropsOnContent(recordNodeRef, completedAtValue, completedByValue); } } } + + private void setPropsOnContent(NodeRef nodeRef, Date completedAtValue, String completedByValue) + { + Map nodeProps = services.getNodeService().getProperties(nodeRef); + nodeProps.put(PROP_RS_DECLASSIFICATION_REVIEW_COMPLETED_AT, completedAtValue); + nodeProps.put(PROP_RS_DECLASSIFICATION_REVIEW_COMPLETED_BY, completedByValue); + services.getNodeService().setProperties(nodeRef, nodeProps); + } } diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/RecordsManagementModel.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/RecordsManagementModel.java index e7f23fb9c9..0b77311cf4 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/RecordsManagementModel.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/RecordsManagementModel.java @@ -247,8 +247,8 @@ public interface RecordsManagementModel extends RecordsManagementCustomModel QName PROP_RS_HAS_DISPOITION_SCHEDULE = QName.createQName(RM_URI, "recordSearchHasDispositionSchedule"); QName PROP_RS_DISPOITION_INSTRUCTIONS = QName.createQName(RM_URI, "recordSearchDispositionInstructions"); QName PROP_RS_DISPOITION_AUTHORITY = QName.createQName(RM_URI, "recordSearchDispositionAuthority"); - QName PROP_RS_DECLASSIFICATION_REVIEW_COMPLETED_AT = QName.createQName(RM_URI, "recordSearchDeclassificationReviewCompletedAt"); - QName PROP_RS_DECLASSIFICATION_REVIEW_COMPLETED_BY = QName.createQName(RM_URI, "recordSearchDeclassificationReviewCompletedBy"); + QName PROP_RS_DECLASSIFICATION_REVIEW_COMPLETED_AT = QName.createQName(RM_URI, "declassificationReviewCompletedAt"); + QName PROP_RS_DECLASSIFICATION_REVIEW_COMPLETED_BY = QName.createQName(RM_URI, "declassificationReviewCompletedBy"); /** @depreacted as of 2.2, because disposable items can now be in multiple holds */ @Deprecated QName PROP_RS_HOLD_REASON = QName.createQName(RM_URI, "recordSearchHoldReason");