RM-7051 adding code to deal with held records/folders

This commit is contained in:
Ross Gale
2019-11-18 10:55:39 +00:00
parent 5259625d04
commit bfe2e6fe83
2 changed files with 29 additions and 15 deletions

View File

@@ -25,6 +25,7 @@
<property name="recordService" ref="RecordService" /> <property name="recordService" ref="RecordService" />
<property name="nodeService" ref="nodeService" /> <property name="nodeService" ref="nodeService" />
<property name="recordsManagementQueryDAO" ref="recordsManagementQueryDAO" /> <property name="recordsManagementQueryDAO" ref="recordsManagementQueryDAO" />
<property name="behaviourFilter" ref="policyBehaviourFilter" />
</bean> </bean>
</beans> </beans>

View File

@@ -28,15 +28,19 @@
package org.alfresco.module.org_alfresco_module_rm.patch.v24; 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_LIFECYCLE;
import static org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel.ASPECT_FROZEN;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionActionDefinition; import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionActionDefinition;
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedule; 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.disposition.DispositionService;
import org.alfresco.module.org_alfresco_module_rm.hold.HoldService;
import org.alfresco.module.org_alfresco_module_rm.patch.AbstractModulePatch; 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.query.RecordsManagementQueryDAO;
import org.alfresco.module.org_alfresco_module_rm.record.RecordService; import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
import org.alfresco.repo.policy.BehaviourFilter;
import org.alfresco.repo.transaction.RetryingTransactionHelper; import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.NodeService;
@@ -66,6 +70,8 @@ public class RMv24DispositionInheritancePatch extends AbstractModulePatch
private RecordsManagementQueryDAO recordsManagementQueryDAO; private RecordsManagementQueryDAO recordsManagementQueryDAO;
private BehaviourFilter behaviourFilter;
public void setDispositionService(DispositionService dispositionService) public void setDispositionService(DispositionService dispositionService)
{ {
this.dispositionService = dispositionService; this.dispositionService = dispositionService;
@@ -86,6 +92,11 @@ public class RMv24DispositionInheritancePatch extends AbstractModulePatch
this.recordsManagementQueryDAO = recordsManagementQueryDAO; this.recordsManagementQueryDAO = recordsManagementQueryDAO;
} }
public void setBehaviourFilter(BehaviourFilter behaviourFilter)
{
this.behaviourFilter = behaviourFilter;
}
/** /**
* @see AbstractModulePatch#applyInternal() * @see AbstractModulePatch#applyInternal()
* <p> * <p>
@@ -94,11 +105,10 @@ public class RMv24DispositionInheritancePatch extends AbstractModulePatch
@Override @Override
public void applyInternal() public void applyInternal()
{ {
logger.info("********************Patch start********************"); int totalFolders = recordsManagementQueryDAO.getRecordFoldersWithSchedulesCount();
int maxNode = recordsManagementQueryDAO.getRecordFoldersWithSchedulesCount(); logger.info("Folders to update: "+ totalFolders);
logger.info("nodes to update: "+ maxNode);
for (Long i = 0L; i < maxNode; i += BATCH_SIZE) for (Long i = 0L; i < totalFolders; i += BATCH_SIZE)
{ {
final Long finali = i; final Long finali = i;
int updatedRecords = transactionService.getRetryingTransactionHelper() int updatedRecords = transactionService.getRetryingTransactionHelper()
@@ -107,17 +117,14 @@ public class RMv24DispositionInheritancePatch extends AbstractModulePatch
public Integer execute() throws Throwable public Integer execute() throws Throwable
{ {
int recordCount = 0; int recordCount = 0;
logger.info("********************Patch start********************");
logger.info("********************Query start********************");
logger.info(finali);
logger.info(finali + BATCH_SIZE);
logger.info(recordsManagementQueryDAO.getRecordFoldersWithSchedules(finali, finali + BATCH_SIZE));
List<NodeRef> folders = recordsManagementQueryDAO.getRecordFoldersWithSchedules(finali, finali + BATCH_SIZE); List<NodeRef> folders = recordsManagementQueryDAO.getRecordFoldersWithSchedules(finali, finali + BATCH_SIZE);
logger.info("********************Query end********************");
for (NodeRef folder : folders) for (NodeRef folder : folders)
{ {
if (LOGGER.isDebugEnabled())
{
logger.info("Checking folder: " + folder);
}
behaviourFilter.disableBehaviour(folder);
DispositionSchedule schedule = dispositionService.getDispositionSchedule(folder); DispositionSchedule schedule = dispositionService.getDispositionSchedule(folder);
if (schedule.isRecordLevelDisposition()) if (schedule.isRecordLevelDisposition())
{ {
@@ -126,19 +133,25 @@ public class RMv24DispositionInheritancePatch extends AbstractModulePatch
{ {
if (!nodeService.hasAspect(record, ASPECT_DISPOSITION_LIFECYCLE)) if (!nodeService.hasAspect(record, ASPECT_DISPOSITION_LIFECYCLE))
{ {
logger.info("updating record: " + record); if (LOGGER.isDebugEnabled())
{
logger.info("updating record: " + record);
}
behaviourFilter.disableBehaviour(record);
dispositionService.updateNextDispositionAction(record, schedule); dispositionService.updateNextDispositionAction(record, schedule);
recordCount ++; recordCount ++;
behaviourFilter.enableBehaviour(record);
} }
} }
} }
behaviourFilter.enableBehaviour(folder);
} }
logger.info("********************Patch end********************");
return recordCount; return recordCount;
} }
}, false, true); }, false, true);
logger.info("....completed: "+ updatedRecords); logger.info("Records updated: "+ updatedRecords);
logger.info("Updating folders: "+ finali + " to: " +(finali + BATCH_SIZE) + " of "+totalFolders);
} }
} }
} }