From 364ee7838aec2355f5a087650e5e1851e1abc01a Mon Sep 17 00:00:00 2001 From: Ross Gale Date: Tue, 19 Nov 2019 13:38:40 +0000 Subject: [PATCH] RM-7051 removing patch code updating webscript --- .../patch/rm-patch-v24-context.xml | 16 -- .../v24/RMv24DispositionInheritancePatch.java | 176 ------------------ .../query/RecordsManagementQueryDAOImpl.java | 4 +- .../schedule/UpdateRecordScheduleGet.java | 17 +- 4 files changed, 15 insertions(+), 198 deletions(-) delete mode 100644 rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/patch/v24/RMv24DispositionInheritancePatch.java diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/patch/rm-patch-v24-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/patch/rm-patch-v24-context.xml index ff8119c138..b2527baa9f 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/patch/rm-patch-v24-context.xml +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/patch/rm-patch-v24-context.xml @@ -15,20 +15,4 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/patch/v24/RMv24DispositionInheritancePatch.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/patch/v24/RMv24DispositionInheritancePatch.java deleted file mode 100644 index b604cec8d4..0000000000 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/patch/v24/RMv24DispositionInheritancePatch.java +++ /dev/null @@ -1,176 +0,0 @@ -/* - * #%L - * Alfresco Records Management Module - * %% - * Copyright (C) 2005 - 2019 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * - - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - - * 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 . - * #L% - */ - -package org.alfresco.module.org_alfresco_module_rm.patch.v24; - -import static org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel.ASPECT_DISPOSITION_LIFECYCLE; -import static org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel.ASPECT_DISPOSITION_PROCESSED; - -import java.util.List; - -import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedule; -import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService; -import org.alfresco.module.org_alfresco_module_rm.patch.AbstractModulePatch; -import org.alfresco.module.org_alfresco_module_rm.query.RecordsManagementQueryDAO; -import org.alfresco.module.org_alfresco_module_rm.record.RecordService; -import org.alfresco.repo.domain.node.NodeDAO; -import org.alfresco.repo.domain.qname.QNameDAO; -import org.alfresco.repo.policy.BehaviourFilter; -import org.alfresco.repo.transaction.RetryingTransactionHelper; -import org.alfresco.service.cmr.repository.NodeRef; -import org.alfresco.service.cmr.repository.NodeService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * - */ -public class RMv24DispositionInheritancePatch extends AbstractModulePatch -{ - private static final Log logger = LogFactory.getLog(RMv24DispositionInheritancePatch.class); - - private static final long BATCH_SIZE = 1000L; - - private DispositionService dispositionService; - - private RecordService recordService; - - private NodeService nodeService; - - private RecordsManagementQueryDAO recordsManagementQueryDAO; - - private BehaviourFilter behaviourFilter; - - protected QNameDAO qnameDAO; - - private NodeDAO nodeDAO; - - public void setDispositionService(DispositionService dispositionService) - { - this.dispositionService = dispositionService; - } - - public void setNodeService(NodeService nodeService) - { - this.nodeService = nodeService; - } - - public void setRecordService(RecordService recordService) - { - this.recordService = recordService; - } - - public void setRecordsManagementQueryDAO(RecordsManagementQueryDAO recordsManagementQueryDAO) - { - this.recordsManagementQueryDAO = recordsManagementQueryDAO; - } - - public void setBehaviourFilter(BehaviourFilter behaviourFilter) - { - this.behaviourFilter = behaviourFilter; - } - - public void setQnameDAO(QNameDAO qnameDAO) - { - this.qnameDAO = qnameDAO; - } - - public void setNodeDAO(NodeDAO nodeDAO) - { - this.nodeDAO = nodeDAO; - } - - /** - * @see AbstractModulePatch#applyInternal() - *

- * Checks for records added to a disposition schedule pre MNT-19967 and applys disposition step and properties - */ - @Override - public void applyInternal() - { - Long maxNodeId = nodeDAO.getMaxNodeId(); - int batchCount = 0; - - qnameDAO.getOrCreateQName(ASPECT_DISPOSITION_PROCESSED); - - for (Long i = 0L; i < maxNodeId; i += BATCH_SIZE) - { - int updatedRecords = 0; - List folders = recordsManagementQueryDAO.getRecordFoldersWithSchedules(i, i + BATCH_SIZE); - for (NodeRef folder : folders) - { - updatedRecords = updatedRecords + updateRecordFolder(folder); - } - - batchCount ++; - logger.info("Records updated: "+ updatedRecords); - logger.info("Completed batch "+ batchCount+" of "+ (Math.ceil(maxNodeId/BATCH_SIZE)+1)); - } - } - - private int updateRecordFolder(final NodeRef recordFolder) - { - return transactionService.getRetryingTransactionHelper() - .doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback() - { - public Integer execute() throws Throwable - { - int recordCount = 0; - - behaviourFilter.disableBehaviour(recordFolder); - if (LOGGER.isDebugEnabled()) - { - logger.info("Checking folder: " + recordFolder); - } - DispositionSchedule schedule = dispositionService.getDispositionSchedule(recordFolder); - if (schedule.isRecordLevelDisposition()) - { - List records = recordService.getRecords(recordFolder); - for (NodeRef record : records) - { - if (!nodeService.hasAspect(record, ASPECT_DISPOSITION_LIFECYCLE)) - { - if (LOGGER.isDebugEnabled()) - { - logger.info("updating record: " + record); - } - behaviourFilter.disableBehaviour(record); - dispositionService.updateNextDispositionAction(record, schedule); - recordCount ++; - behaviourFilter.enableBehaviour(record); - } - } - } - nodeService.addAspect(recordFolder, ASPECT_DISPOSITION_PROCESSED, null); - behaviourFilter.enableBehaviour(recordFolder); - - return recordCount; - } - }, false, true); - } -} - diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/query/RecordsManagementQueryDAOImpl.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/query/RecordsManagementQueryDAOImpl.java index b761d0bd3b..333fefe657 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/query/RecordsManagementQueryDAOImpl.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/query/RecordsManagementQueryDAOImpl.java @@ -48,7 +48,7 @@ import org.mybatis.spring.SqlSessionTemplate; public class RecordsManagementQueryDAOImpl implements RecordsManagementQueryDAO, RecordsManagementModel { private static final String COUNT_IDENTIFIER = "alfresco.query.rm.select_CountRMIndentifier"; - private static final String SCHEDULED_FOLDERS = "alfresco.query.rm.select_RecordFoldersWithSchedules"; + private static final String SCHEDULED_FOLDERS = "alfresco.query.rm.select_RecordFoldersWithSchedulesExtended"; private static final String SCHEDULED_FOLDERS_COUNT = "alfresco.query.rm.select_RecordFoldersWithSchedulesCount"; /** SQL session template */ @@ -111,6 +111,8 @@ public class RecordsManagementQueryDAOImpl implements RecordsManagementQueryDAO, Map params = new HashMap(2); params.put("dispositionQnameId", qnameDAO.getQName(PROP_RS_HAS_DISPOITION_SCHEDULE) .getFirst()); + params.put("processed", qnameDAO.getQName(ASPECT_DISPOSITION_PROCESSED) + .getFirst()); params.put("folderQnameId",qnameDAO.getQName(TYPE_RECORD_FOLDER).getFirst()); params.put("start", start); params.put("end", end); diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/repo/web/scripts/schedule/UpdateRecordScheduleGet.java b/rm-community/rm-community-repo/source/java/org/alfresco/repo/web/scripts/schedule/UpdateRecordScheduleGet.java index 4a650b8b27..effba5a757 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/repo/web/scripts/schedule/UpdateRecordScheduleGet.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/repo/web/scripts/schedule/UpdateRecordScheduleGet.java @@ -154,10 +154,20 @@ public class UpdateRecordScheduleGet extends AbstractWebScript implements Record protected Map buildModel(WebScriptRequest req, WebScriptResponse res) throws IOException { Map model = new HashMap(); - + transactionService.getRetryingTransactionHelper() + .doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback() + { + public String execute() throws Throwable + { + qnameDAO.getOrCreateQName(ASPECT_DISPOSITION_PROCESSED); + return null; + } + + },false,true); + int maxRecordFolders = getMaxRecordFolders(req); NodeRef recordFolder = getRecordFolder(req); - + int processedRecords = 0; if (recordFolder != null) @@ -170,9 +180,6 @@ public class UpdateRecordScheduleGet extends AbstractWebScript implements Record int processedRecordFolders = 0; int queryBatchSize = 10000; Long maxNodeId = nodeDAO.getMaxNodeId(); - - qnameDAO.getOrCreateQName(ASPECT_DISPOSITION_PROCESSED); - for (Long i = 0L; i < maxNodeId; i += queryBatchSize) { List folders = recordsManagementQueryDAO.getRecordFoldersWithSchedules(i, i + queryBatchSize);