Merge remote-tracking branch 'origin/release/V3.2.0.x' into release/V3.2

# Conflicts:
#	pom.xml
#	rm-automation/pom.xml
#	rm-automation/rm-automation-community-rest-api/pom.xml
#	rm-automation/rm-automation-enterprise-rest-api/pom.xml
#	rm-automation/rm-automation-ui/pom.xml
#	rm-benchmark/pom.xml
#	rm-community/pom.xml
#	rm-community/rm-community-repo/pom.xml
#	rm-community/rm-community-rest-api-explorer/pom.xml
#	rm-community/rm-community-share/pom.xml
#	rm-enterprise/pom.xml
#	rm-enterprise/rm-enterprise-repo/pom.xml
#	rm-enterprise/rm-enterprise-rest-api-explorer/pom.xml
#	rm-enterprise/rm-enterprise-share/pom.xml
This commit is contained in:
ehardon
2020-12-08 09:02:16 +02:00

View File

@@ -503,7 +503,52 @@ public class DispositionServiceImpl extends ServiceBaseImpl
@Override @Override
public boolean hasDisposableItems(DispositionSchedule dispositionSchdule) public boolean hasDisposableItems(DispositionSchedule dispositionSchdule)
{ {
return !getDisposableItems(dispositionSchdule).isEmpty(); ParameterCheck.mandatory("dispositionSchedule", dispositionSchdule);
// Get the associated container
NodeRef rmContainer = getAssociatedRecordsManagementContainer(dispositionSchdule);
return hasDisposableItemsImpl(dispositionSchdule.isRecordLevelDisposition(), rmContainer);
}
/**
* Method that provides a boolean if given Records Management Container has disposable items.
* This method is similar to getDisposableItemsImpl(boolean isRecordLevelDisposition, NodeRef rmContainer) but with improved performance:
* For RecordLevelDisposition it will limit Record retrieval to 1.
* Early returns once the first occurrence is found.
* @param isRecordLevelDisposition
* @param rmContainer
* @return
*/
private boolean hasDisposableItemsImpl(boolean isRecordLevelDisposition, NodeRef rmContainer)
{
List<NodeRef> items = filePlanService.getAllContained(rmContainer);
for (NodeRef item : items)
{
if (recordFolderService.isRecordFolder(item))
{
if (isRecordLevelDisposition)
{
List<ChildAssociationRef> assocs = nodeService.getChildAssocs(item, ContentModel.ASSOC_CONTAINS, RegexQNamePattern.MATCH_ALL, 1, true);
if (!assocs.isEmpty())
{
return true;
}
}
else
{
return true;
}
}
else if (filePlanService.isRecordCategory(item) && getAssociatedDispositionScheduleImpl(item) == null)
{
if (hasDisposableItemsImpl(isRecordLevelDisposition, item));
{
return true;
}
}
}
return false;
} }
/** /**