mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Merge pull request #1532 from Alfresco/MNT-22353_Cutoff_Handling_of_Records_in_Hold
[MNT-22353]- Removed Hold cases to be processed in DispositionLifecycleJob
This commit is contained in:
@@ -30,8 +30,10 @@ package org.alfresco.module.org_alfresco_module_rm.job;
|
|||||||
import static org.alfresco.module.org_alfresco_module_rm.action.RMDispositionActionExecuterAbstractBase.PARAM_NO_ERROR_CHECK;
|
import static org.alfresco.module.org_alfresco_module_rm.action.RMDispositionActionExecuterAbstractBase.PARAM_NO_ERROR_CHECK;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.alfresco.error.AlfrescoRuntimeException;
|
import org.alfresco.error.AlfrescoRuntimeException;
|
||||||
@@ -47,7 +49,6 @@ import org.alfresco.service.cmr.search.ResultSet;
|
|||||||
import org.alfresco.service.cmr.search.SearchParameters;
|
import org.alfresco.service.cmr.search.SearchParameters;
|
||||||
import org.alfresco.service.cmr.search.SearchService;
|
import org.alfresco.service.cmr.search.SearchService;
|
||||||
import org.alfresco.service.cmr.security.PersonService;
|
import org.alfresco.service.cmr.security.PersonService;
|
||||||
import org.springframework.extensions.surf.util.I18NUtil;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -64,7 +65,6 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
|
|||||||
/** batching properties */
|
/** batching properties */
|
||||||
private int batchSize;
|
private int batchSize;
|
||||||
public static final int DEFAULT_BATCH_SIZE = 500;
|
public static final int DEFAULT_BATCH_SIZE = 500;
|
||||||
private static final String MSG_NODE_FROZEN = "rm.action.node.frozen.error-message";
|
|
||||||
|
|
||||||
/** list of disposition actions to automatically execute */
|
/** list of disposition actions to automatically execute */
|
||||||
private List<String> dispositionActions;
|
private List<String> dispositionActions;
|
||||||
@@ -194,6 +194,7 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
|
|||||||
|
|
||||||
boolean hasMore = true;
|
boolean hasMore = true;
|
||||||
int skipCount = 0;
|
int skipCount = 0;
|
||||||
|
List<NodeRef> resultNodes = new ArrayList<>();
|
||||||
|
|
||||||
if (batchSize < 1)
|
if (batchSize < 1)
|
||||||
{
|
{
|
||||||
@@ -214,7 +215,14 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
|
|||||||
|
|
||||||
// execute search
|
// execute search
|
||||||
ResultSet results = searchService.query(params);
|
ResultSet results = searchService.query(params);
|
||||||
List<NodeRef> resultNodes = results.getNodeRefs();
|
if(results != null)
|
||||||
|
{
|
||||||
|
// filtering out the hold/freezed cases from the result set
|
||||||
|
resultNodes =
|
||||||
|
results.getNodeRefs().stream().filter(node -> nodeService.getPrimaryParent(node) == null ?
|
||||||
|
!freezeService.isFrozenOrHasFrozenChildren(node) :
|
||||||
|
!freezeService.isFrozenOrHasFrozenChildren(nodeService.getPrimaryParent(node).getParentRef())).collect(Collectors.toList());
|
||||||
|
}
|
||||||
hasMore = results.hasMore();
|
hasMore = results.hasMore();
|
||||||
skipCount += resultNodes.size(); // increase by page size
|
skipCount += resultNodes.size(); // increase by page size
|
||||||
results.close();
|
results.close();
|
||||||
@@ -265,12 +273,6 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
|
|||||||
}
|
}
|
||||||
Map<String, Serializable> props = Map.of(PARAM_NO_ERROR_CHECK, false);
|
Map<String, Serializable> props = Map.of(PARAM_NO_ERROR_CHECK, false);
|
||||||
|
|
||||||
if (freezeService.isFrozenOrHasFrozenChildren(parent.getParentRef()))
|
|
||||||
{
|
|
||||||
log.debug(I18NUtil.getMessage(MSG_NODE_FROZEN, dispAction));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// execute disposition action
|
// execute disposition action
|
||||||
|
@@ -170,7 +170,7 @@ public class DispositionLifecycleJobExecuterUnitTest extends BaseUnitTest
|
|||||||
executer.executeImpl();
|
executer.executeImpl();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
|
verify(mockedNodeService, times(2)).getPrimaryParent(any(NodeRef.class));
|
||||||
// ensure the query is executed and closed
|
// ensure the query is executed and closed
|
||||||
verifyQueryTimes(2);
|
verifyQueryTimes(2);
|
||||||
|
|
||||||
@@ -206,7 +206,7 @@ public class DispositionLifecycleJobExecuterUnitTest extends BaseUnitTest
|
|||||||
executer.executeImpl();
|
executer.executeImpl();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
|
verify(mockedNodeService, times(1)).getPrimaryParent(any(NodeRef.class));
|
||||||
// ensure the query is executed and closed
|
// ensure the query is executed and closed
|
||||||
verifyQueryTimes(1);
|
verifyQueryTimes(1);
|
||||||
|
|
||||||
@@ -262,11 +262,11 @@ public class DispositionLifecycleJobExecuterUnitTest extends BaseUnitTest
|
|||||||
// ensure each node is process correctly
|
// ensure each node is process correctly
|
||||||
// node1
|
// node1
|
||||||
verify(mockedNodeService, times(1)).getProperty(node1, RecordsManagementModel.PROP_DISPOSITION_ACTION);
|
verify(mockedNodeService, times(1)).getProperty(node1, RecordsManagementModel.PROP_DISPOSITION_ACTION);
|
||||||
verify(mockedNodeService, times(1)).getPrimaryParent(node1);
|
verify(mockedNodeService, times(3)).getPrimaryParent(node1);
|
||||||
verify(mockedRecordsManagementActionService, times(1)).executeRecordsManagementAction(eq(parent), eq(CUTOFF), anyMap());
|
verify(mockedRecordsManagementActionService, times(1)).executeRecordsManagementAction(eq(parent), eq(CUTOFF), anyMap());
|
||||||
// node2
|
// node2
|
||||||
verify(mockedNodeService, times(1)).getProperty(node2, RecordsManagementModel.PROP_DISPOSITION_ACTION);
|
verify(mockedNodeService, times(1)).getProperty(node2, RecordsManagementModel.PROP_DISPOSITION_ACTION);
|
||||||
verify(mockedNodeService, times(1)).getPrimaryParent(node2);
|
verify(mockedNodeService, times(3)).getPrimaryParent(node2);
|
||||||
verify(mockedRecordsManagementActionService, times(1)).executeRecordsManagementAction(eq(parent), eq(RETAIN), anyMap());
|
verify(mockedRecordsManagementActionService, times(1)).executeRecordsManagementAction(eq(parent), eq(RETAIN), anyMap());
|
||||||
|
|
||||||
// ensure no more interactions
|
// ensure no more interactions
|
||||||
@@ -329,7 +329,7 @@ public class DispositionLifecycleJobExecuterUnitTest extends BaseUnitTest
|
|||||||
// call the service
|
// call the service
|
||||||
executer.executeImpl();
|
executer.executeImpl();
|
||||||
|
|
||||||
// check the loop iterated trough all the elements
|
// check the loop iterated through all the elements
|
||||||
verify(mockedNodeService).exists(node1);
|
verify(mockedNodeService).exists(node1);
|
||||||
verify(mockedNodeService).exists(node2);
|
verify(mockedNodeService).exists(node2);
|
||||||
verify(mockedNodeService).exists(node3);
|
verify(mockedNodeService).exists(node3);
|
||||||
|
Reference in New Issue
Block a user