From b0110b7c768ff35f994a23230d5471ab58d4bce6 Mon Sep 17 00:00:00 2001 From: Tuna Aksoy Date: Wed, 6 Feb 2013 16:05:49 +0000 Subject: [PATCH] RM-581 (A user will receive notification of rejected records) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@46309 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rm-patch-context.xml | 32 ++++- .../patch/NotificationTemplatePatch.java | 4 - .../patch/NotificationTemplatePatch_v21.java | 120 ++++++++++++++++++ 3 files changed, 145 insertions(+), 11 deletions(-) create mode 100644 rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/NotificationTemplatePatch_v21.java diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-patch-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-patch-context.xml index 827f3ca406..7a7c92e6a4 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-patch-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-patch-context.xml @@ -2,23 +2,41 @@ - - - + - - + + + + + + + + + + + + + + + + @@ -31,8 +49,8 @@ - - diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/NotificationTemplatePatch.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/NotificationTemplatePatch.java index ebc71f78ab..ada4490556 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/NotificationTemplatePatch.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/NotificationTemplatePatch.java @@ -52,7 +52,6 @@ public class NotificationTemplatePatch extends AbstractModuleComponent private static final String PATH_DUE_FOR_REVIEW = "alfresco/module/org_alfresco_module_rm/bootstrap/content/notify-records-due-for-review-email.ftl"; private static final String PATH_SUPERSEDED = "alfresco/module/org_alfresco_module_rm/bootstrap/content/record-superseded-email.ftl"; - private static final String PATH_REJECTED = "alfresco/module/org_alfresco_module_rm/bootstrap/content/record-rejected-email.ftl"; /** Logger */ private static Log logger = LogFactory.getLog(NotificationTemplatePatch.class); @@ -140,9 +139,6 @@ public class NotificationTemplatePatch extends AbstractModuleComponent NodeRef dueForReviewTemplate = notificationHelper.getDueForReviewTemplate(); updateTemplate(dueForReviewTemplate, PATH_DUE_FOR_REVIEW); - - NodeRef rejectedTemplate = notificationHelper.getRejectedTemplate(); - updateTemplate(rejectedTemplate, PATH_REJECTED); } /** diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/NotificationTemplatePatch_v21.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/NotificationTemplatePatch_v21.java new file mode 100644 index 0000000000..062ac05d23 --- /dev/null +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/NotificationTemplatePatch_v21.java @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2005-2013 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ +package org.alfresco.module.org_alfresco_module_rm.patch; + +import java.io.InputStream; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +import org.alfresco.model.ContentModel; +import org.alfresco.module.org_alfresco_module_rm.notification.RecordsManagementNotificationHelper; +import org.alfresco.repo.module.AbstractModuleComponent; +import org.alfresco.service.cmr.repository.ChildAssociationRef; +import org.alfresco.service.cmr.repository.ContentService; +import org.alfresco.service.cmr.repository.ContentWriter; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.repository.NodeService; +import org.alfresco.service.cmr.repository.StoreRef; +import org.alfresco.service.namespace.NamespaceService; +import org.alfresco.service.namespace.QName; +import org.springframework.beans.factory.BeanNameAware; + +/** + * Adds a new email template for rejected records to the existing templates + * + * @author Tuna Aksoy + * @since v2.1 + */ +public class NotificationTemplatePatch_v21 extends AbstractModuleComponent + implements BeanNameAware +{ + /** Email template path */ + private static final String PATH_REJECTED = "alfresco/module/org_alfresco_module_rm/bootstrap/content/record-rejected-email.ftl"; + + /** Reject template config node id*/ + private static final String CONFIG_NODEID = "record_rejected_template"; + + /** Records management notification helper */ + private RecordsManagementNotificationHelper notificationHelper; + + /** Node service */ + private NodeService nodeService; + + /** Content service */ + private ContentService contentService; + + /** + * @param notificationHelper notification helper + */ + public void setNotificationHelper(RecordsManagementNotificationHelper notificationHelper) + { + this.notificationHelper = notificationHelper; + } + + /** + * @param nodeService node service + */ + public void setNodeService(NodeService nodeService) + { + this.nodeService = nodeService; + } + + /** + * @param contentService content service + */ + public void setContentService(ContentService contentService) + { + this.contentService = contentService; + } + + @Override + protected void executeInternal() throws Throwable + { + NodeRef nodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, CONFIG_NODEID); + if (nodeService.exists(nodeRef) == false) + { + // get the parent node + NodeRef supersededTemplate = notificationHelper.getSupersededTemplate(); + NodeRef parent = nodeService.getPrimaryParent(supersededTemplate).getParentRef(); + + // build the node properties + Map props = new HashMap(4); + props.put(ContentModel.PROP_DESCRIPTION, "Record superseded email template."); + props.put(ContentModel.PROP_TITLE, "record-rejected-email.ftl"); + props.put(ContentModel.PROP_NAME, "record-rejected-email.ftl"); + props.put(ContentModel.PROP_NODE_UUID, "record_rejected_template"); + + // get the assoc qname + QName assocQName = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, QName.createValidLocalName("record-rejected-email.ftl")); + + // create the node + ChildAssociationRef node = nodeService.createNode(parent, + ContentModel.ASSOC_CONTAINS, + assocQName, + ContentModel.TYPE_CONTENT, + props); + + // put the content + ContentWriter writer = contentService.getWriter(node.getChildRef(), ContentModel.PROP_CONTENT, true); + InputStream is = getClass().getClassLoader().getResourceAsStream(PATH_REJECTED); + writer.putContent(is); + } + } +}