mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
RM-7051 adding code to deal with held records/folders
This commit is contained in:
@@ -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>
|
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user