From 4fdb0247200a0f1e13c531b11573b1f0555a9486 Mon Sep 17 00:00:00 2001 From: Roy Wetherall Date: Wed, 1 May 2013 02:06:16 +0000 Subject: [PATCH] RM: Missing patch file git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@49665 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../patch/RMv21RecordInheritancePatch.java | 150 ++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21RecordInheritancePatch.java diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21RecordInheritancePatch.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21RecordInheritancePatch.java new file mode 100644 index 0000000000..ed2149bf40 --- /dev/null +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/patch/RMv21RecordInheritancePatch.java @@ -0,0 +1,150 @@ +/* + * Copyright (C) 2005-2011 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.util.List; + +import org.alfresco.module.org_alfresco_module_rm.dod5015.DOD5015Model; +import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; +import org.alfresco.module.org_alfresco_module_rm.security.FilePlanPermissionServiceImpl; +import org.alfresco.repo.domain.node.NodeDAO; +import org.alfresco.repo.domain.patch.PatchDAO; +import org.alfresco.repo.domain.qname.QNameDAO; +import org.alfresco.repo.module.AbstractModuleComponent; +import org.alfresco.service.cmr.repository.ChildAssociationRef; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.repository.NodeService; +import org.alfresco.service.namespace.QName; +import org.alfresco.util.Pair; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.beans.factory.BeanNameAware; + +/** + * RM v2.1 patch to change the record inheritance of permissions. + * + * @author Roy Wetherall + * @since 2.1 + */ +public class RMv21RecordInheritancePatch extends AbstractModuleComponent + implements BeanNameAware, RecordsManagementModel, DOD5015Model +{ + + /** logger */ + private static Log logger = LogFactory.getLog(RMv21RecordInheritancePatch.class); + + /** file plan permission service */ + private FilePlanPermissionServiceImpl filePlanPermissionServiceImpl; + + /** node service */ + private NodeService nodeService; + + /** patch DAO */ + private PatchDAO patchDAO; + + /** qname DAO */ + private QNameDAO qnameDAO; + + /** node DAO */ + private NodeDAO nodeDAO; + + /** + * @param patchDAO patch DAO + */ + public void setPatchDAO(PatchDAO patchDAO) + { + this.patchDAO = patchDAO; + } + + /** + * @param qnameDAO qname DAO + */ + public void setQnameDAO(QNameDAO qnameDAO) + { + this.qnameDAO = qnameDAO; + } + + /** + * @param nodeDAO node DAO + */ + public void setNodeDAO(NodeDAO nodeDAO) + { + this.nodeDAO = nodeDAO; + } + + /** + * @param filePlanPermissionServiceImpl file plan permission service implementation + */ + public void setFilePlanPermissionServiceImpl(FilePlanPermissionServiceImpl filePlanPermissionServiceImpl) + { + this.filePlanPermissionServiceImpl = filePlanPermissionServiceImpl; + } + + /** + * @param nodeService node service + */ + public void setNodeService(NodeService nodeService) + { + this.nodeService = nodeService; + } + + /** + * @see org.alfresco.repo.module.AbstractModuleComponent#executeInternal() + */ + @Override + protected void executeInternal() throws Throwable + { + if (logger.isDebugEnabled() == true) + { + logger.debug("RM module: RMv21RecordInheritancePatch executing ..."); + } + + Pair aspectPair = qnameDAO.getQName(ASPECT_RECORD); + List records = patchDAO.getNodesByAspectQNameId(aspectPair.getFirst(), 0L, patchDAO.getMaxAdmNodeID()); + + if (logger.isDebugEnabled() == true) + { + logger.debug(" ... updating " + records.size() + " records" ); + } + + for (Long record : records) + { + Pair recordPair = nodeDAO.getNodePair(record); + NodeRef recordNodeRef = recordPair.getSecond(); + + if (logger.isDebugEnabled() == true) + { + logger.debug(" ... updating record " + recordNodeRef.toString()); + + // get the primary parent + ChildAssociationRef assoc = nodeService.getPrimaryParent(recordNodeRef); + NodeRef parent = assoc.getParentRef(); + if (parent != null) + { + filePlanPermissionServiceImpl.initialiseRecordPermissions(recordNodeRef, parent); + } + } + } + + if (logger.isDebugEnabled() == true) + { + logger.debug(" ... complete"); + } + } +}