mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
RM-6941 added slf4j and junit test [ags]
This commit is contained in:
@@ -45,4 +45,4 @@ rm.action.create.transfer.container.child-error-message=You can't create items i
|
|||||||
rm.action.create.transfer.child-error-message=You can't create items in Transfer Folders.
|
rm.action.create.transfer.child-error-message=You can't create items in Transfer Folders.
|
||||||
rm.action.create.record.folder.child-error-message=You can only create records in record folders and this was a {0}.
|
rm.action.create.record.folder.child-error-message=You can only create records in record folders and this was a {0}.
|
||||||
rm.action.transfer-non-editable=You can't edit transfer folder or container metadata.
|
rm.action.transfer-non-editable=You can't edit transfer folder or container metadata.
|
||||||
rm.action.node.frozen.error-message=unable to perform action {0} because node is frozen or has frozen children
|
rm.action.node.frozen.error-message=Unable to perform action {0} because node is frozen or has frozen children.
|
||||||
|
@@ -80,6 +80,7 @@
|
|||||||
<property name="searchService" ref="searchService" />
|
<property name="searchService" ref="searchService" />
|
||||||
<property name="personService" ref="personService" />
|
<property name="personService" ref="personService" />
|
||||||
<property name="recordsManagementActionService" ref="recordsManagementActionService" />
|
<property name="recordsManagementActionService" ref="recordsManagementActionService" />
|
||||||
|
<property name="freezeService" ref="freezeService"/>
|
||||||
<property name="batchSize" value="${rm.dispositionlifecycletrigger.batchsize}"/>
|
<property name="batchSize" value="${rm.dispositionlifecycletrigger.batchsize}"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
@@ -112,7 +112,6 @@
|
|||||||
<property name="filePlanService" ref="FilePlanService" />
|
<property name="filePlanService" ref="FilePlanService" />
|
||||||
<property name="recordFolderService" ref="RecordFolderService"/>
|
<property name="recordFolderService" ref="RecordFolderService"/>
|
||||||
<property name="recordService" ref="RecordService"/>
|
<property name="recordService" ref="RecordService"/>
|
||||||
<property name="freezeService" ref="FreezeService"/>
|
|
||||||
<property name="transactionService" ref="transactionService" />
|
<property name="transactionService" ref="transactionService" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
@@ -699,11 +698,10 @@
|
|||||||
<!-- list of disposition actions to automatically execute when eligible -->
|
<!-- list of disposition actions to automatically execute when eligible -->
|
||||||
<property name="retentionActions">
|
<property name="retentionActions">
|
||||||
<list>
|
<list>
|
||||||
<value>cutoff</value>
|
|
||||||
<value>retain</value>
|
<value>retain</value>
|
||||||
</list>
|
</list>
|
||||||
</property>
|
</property>
|
||||||
<property name="dispositionService" ref="dispositionService"/>
|
<property name="freezeService" ref="freezeService"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="RecordsManagementActionService" class="org.springframework.aop.framework.ProxyFactoryBean">
|
<bean id="RecordsManagementActionService" class="org.springframework.aop.framework.ProxyFactoryBean">
|
||||||
@@ -908,6 +906,8 @@
|
|||||||
<bean id="freezeService" class="org.alfresco.module.org_alfresco_module_rm.freeze.FreezeServiceImpl" parent="baseService">
|
<bean id="freezeService" class="org.alfresco.module.org_alfresco_module_rm.freeze.FreezeServiceImpl" parent="baseService">
|
||||||
<property name="filePlanService" ref="FilePlanService" />
|
<property name="filePlanService" ref="FilePlanService" />
|
||||||
<property name="holdService" ref="HoldService" />
|
<property name="holdService" ref="HoldService" />
|
||||||
|
<property name="recordFolderService" ref="RecordFolderService"/>
|
||||||
|
<property name="recordService" ref="RecordService"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="FreezeService" class="org.springframework.aop.framework.ProxyFactoryBean">
|
<bean id="FreezeService" class="org.springframework.aop.framework.ProxyFactoryBean">
|
||||||
|
@@ -35,59 +35,72 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.alfresco.error.AlfrescoRuntimeException;
|
import org.alfresco.error.AlfrescoRuntimeException;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.BeforeRMActionExecution;
|
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.BeforeRMActionExecution;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.OnRMActionExecution;
|
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.OnRMActionExecution;
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.util.PoliciesUtil;
|
import org.alfresco.module.org_alfresco_module_rm.util.PoliciesUtil;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
|
|
||||||
import org.alfresco.repo.policy.ClassPolicyDelegate;
|
import org.alfresco.repo.policy.ClassPolicyDelegate;
|
||||||
import org.alfresco.repo.policy.PolicyComponent;
|
import org.alfresco.repo.policy.PolicyComponent;
|
||||||
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;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.apache.commons.logging.Log;
|
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
import org.springframework.extensions.surf.util.I18NUtil;
|
import org.springframework.extensions.surf.util.I18NUtil;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Records Management Action Service Implementation
|
* Records Management Action Service Implementation
|
||||||
*
|
*
|
||||||
* @author Roy Wetherall
|
* @author Roy Wetherall
|
||||||
*/
|
*/
|
||||||
public class RecordsManagementActionServiceImpl implements RecordsManagementActionService
|
@Slf4j
|
||||||
{
|
public class RecordsManagementActionServiceImpl implements RecordsManagementActionService {
|
||||||
/** I18N */
|
/**
|
||||||
|
* I18N
|
||||||
|
*/
|
||||||
private static final String MSG_NOT_DEFINED = "rm.action.not-defined";
|
private static final String MSG_NOT_DEFINED = "rm.action.not-defined";
|
||||||
private static final String MSG_NO_IMPLICIT_NODEREF = "rm.action.no-implicit-noderef";
|
private static final String MSG_NO_IMPLICIT_NODEREF = "rm.action.no-implicit-noderef";
|
||||||
private static final String MSG_NODE_FROZEN = "rm.action.node.frozen.error-message";
|
private static final String MSG_NODE_FROZEN = "rm.action.node.frozen.error-message";
|
||||||
/** Logger */
|
|
||||||
private static final Log logger = LogFactory.getLog(RecordsManagementActionServiceImpl.class);
|
|
||||||
|
|
||||||
/** Registered records management actions */
|
/**
|
||||||
|
* Registered records management actions
|
||||||
|
*/
|
||||||
private Map<String, RecordsManagementAction> rmActions = new HashMap<>(13);
|
private Map<String, RecordsManagementAction> rmActions = new HashMap<>(13);
|
||||||
private Map<String, RecordsManagementActionCondition> rmConditions = new HashMap<>(13);
|
private Map<String, RecordsManagementActionCondition> rmConditions = new HashMap<>(13);
|
||||||
|
|
||||||
private Map<String, RecordsManagementAction> dispositionActions = new HashMap<>(5);
|
private Map<String, RecordsManagementAction> dispositionActions = new HashMap<>(5);
|
||||||
|
|
||||||
/** Policy component */
|
/**
|
||||||
|
* Policy component
|
||||||
|
*/
|
||||||
private PolicyComponent policyComponent;
|
private PolicyComponent policyComponent;
|
||||||
|
|
||||||
/** Node service */
|
/**
|
||||||
|
* Node service
|
||||||
|
*/
|
||||||
private NodeService nodeService;
|
private NodeService nodeService;
|
||||||
|
|
||||||
/** Policy delegates */
|
/**
|
||||||
|
* Policy delegates
|
||||||
|
*/
|
||||||
private ClassPolicyDelegate<BeforeRMActionExecution> beforeRMActionExecutionDelegate;
|
private ClassPolicyDelegate<BeforeRMActionExecution> beforeRMActionExecutionDelegate;
|
||||||
private ClassPolicyDelegate<OnRMActionExecution> onRMActionExecutionDelegate;
|
private ClassPolicyDelegate<OnRMActionExecution> onRMActionExecutionDelegate;
|
||||||
|
|
||||||
private DispositionService dispositionService;
|
/**
|
||||||
|
* Freeze Service
|
||||||
|
*/
|
||||||
|
private FreezeService freezeService;
|
||||||
|
|
||||||
public void setDispositionService(DispositionService dispositionService) {
|
/**
|
||||||
this.dispositionService = dispositionService;
|
* @param freezeService freeze service
|
||||||
|
*/
|
||||||
|
public void setFreezeService(FreezeService freezeService) {
|
||||||
|
this.freezeService = freezeService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
/** list of disposition actions to automatically execute */
|
* list of retention actions to automatically execute
|
||||||
|
*/
|
||||||
private List<String> retentionActions;
|
private List<String> retentionActions;
|
||||||
|
|
||||||
public void setRetentionActions(List<String> retentionActions) {
|
public void setRetentionActions(List<String> retentionActions) {
|
||||||
@@ -97,16 +110,14 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
|
|||||||
/**
|
/**
|
||||||
* @return Policy component
|
* @return Policy component
|
||||||
*/
|
*/
|
||||||
protected PolicyComponent getPolicyComponent()
|
protected PolicyComponent getPolicyComponent() {
|
||||||
{
|
|
||||||
return this.policyComponent;
|
return this.policyComponent;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Node Service
|
* @return Node Service
|
||||||
*/
|
*/
|
||||||
protected NodeService getNodeService()
|
protected NodeService getNodeService() {
|
||||||
{
|
|
||||||
return this.nodeService;
|
return this.nodeService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,26 +126,23 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
|
|||||||
*
|
*
|
||||||
* @param policyComponent policy component
|
* @param policyComponent policy component
|
||||||
*/
|
*/
|
||||||
public void setPolicyComponent(PolicyComponent policyComponent)
|
public void setPolicyComponent(PolicyComponent policyComponent) {
|
||||||
{
|
|
||||||
this.policyComponent = policyComponent;
|
this.policyComponent = policyComponent;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the node service
|
* Set the node service
|
||||||
*
|
*
|
||||||
* @param nodeService node service
|
* @param nodeService node service
|
||||||
*/
|
*/
|
||||||
public void setNodeService(NodeService nodeService)
|
public void setNodeService(NodeService nodeService) {
|
||||||
{
|
|
||||||
this.nodeService = nodeService;
|
this.nodeService = nodeService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialise RM action service
|
* Initialise RM action service
|
||||||
*/
|
*/
|
||||||
public void init()
|
public void init() {
|
||||||
{
|
|
||||||
// Register the various policies
|
// Register the various policies
|
||||||
beforeRMActionExecutionDelegate = getPolicyComponent().registerClassPolicy(BeforeRMActionExecution.class);
|
beforeRMActionExecutionDelegate = getPolicyComponent().registerClassPolicy(BeforeRMActionExecution.class);
|
||||||
onRMActionExecutionDelegate = getPolicyComponent().registerClassPolicy(OnRMActionExecution.class);
|
onRMActionExecutionDelegate = getPolicyComponent().registerClassPolicy(OnRMActionExecution.class);
|
||||||
@@ -143,23 +151,18 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
|
|||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#register(org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction)
|
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#register(org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction)
|
||||||
*/
|
*/
|
||||||
public void register(RecordsManagementAction rmAction)
|
public void register(RecordsManagementAction rmAction) {
|
||||||
{
|
if (!rmActions.containsKey(rmAction.getName())) {
|
||||||
if (!rmActions.containsKey(rmAction.getName()))
|
|
||||||
{
|
|
||||||
rmActions.put(rmAction.getName(), rmAction);
|
rmActions.put(rmAction.getName(), rmAction);
|
||||||
|
|
||||||
if (rmAction.isDispositionAction())
|
if (rmAction.isDispositionAction()) {
|
||||||
{
|
|
||||||
dispositionActions.put(rmAction.getName(), rmAction);
|
dispositionActions.put(rmAction.getName(), rmAction);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void register(RecordsManagementActionCondition rmCondition)
|
public void register(RecordsManagementActionCondition rmCondition) {
|
||||||
{
|
if (!rmConditions.containsKey(rmCondition.getBeanName())) {
|
||||||
if (!rmConditions.containsKey(rmCondition.getBeanName()))
|
|
||||||
{
|
|
||||||
rmConditions.put(rmCondition.getBeanName(), rmCondition);
|
rmConditions.put(rmCondition.getBeanName(), rmCondition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -167,12 +170,11 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
|
|||||||
/**
|
/**
|
||||||
* Invoke beforeRMActionExecution policy
|
* Invoke beforeRMActionExecution policy
|
||||||
*
|
*
|
||||||
* @param nodeRef node reference
|
* @param nodeRef node reference
|
||||||
* @param name action name
|
* @param name action name
|
||||||
* @param parameters action parameters
|
* @param parameters action parameters
|
||||||
*/
|
*/
|
||||||
protected void invokeBeforeRMActionExecution(NodeRef nodeRef, String name, Map<String, Serializable> parameters)
|
protected void invokeBeforeRMActionExecution(NodeRef nodeRef, String name, Map<String, Serializable> parameters) {
|
||||||
{
|
|
||||||
// get qnames to invoke against
|
// get qnames to invoke against
|
||||||
Set<QName> qnames = PoliciesUtil.getTypeAndAspectQNames(getNodeService(), nodeRef);
|
Set<QName> qnames = PoliciesUtil.getTypeAndAspectQNames(getNodeService(), nodeRef);
|
||||||
// execute policy for node type and aspects
|
// execute policy for node type and aspects
|
||||||
@@ -183,12 +185,11 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
|
|||||||
/**
|
/**
|
||||||
* Invoke onRMActionExecution policy
|
* Invoke onRMActionExecution policy
|
||||||
*
|
*
|
||||||
* @param nodeRef node reference
|
* @param nodeRef node reference
|
||||||
* @param name action name
|
* @param name action name
|
||||||
* @param parameters action parameters
|
* @param parameters action parameters
|
||||||
*/
|
*/
|
||||||
protected void invokeOnRMActionExecution(NodeRef nodeRef, String name, Map<String, Serializable> parameters)
|
protected void invokeOnRMActionExecution(NodeRef nodeRef, String name, Map<String, Serializable> parameters) {
|
||||||
{
|
|
||||||
// get qnames to invoke against
|
// get qnames to invoke against
|
||||||
Set<QName> qnames = PoliciesUtil.getTypeAndAspectQNames(getNodeService(), nodeRef);
|
Set<QName> qnames = PoliciesUtil.getTypeAndAspectQNames(getNodeService(), nodeRef);
|
||||||
// execute policy for node type and aspects
|
// execute policy for node type and aspects
|
||||||
@@ -199,8 +200,7 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
|
|||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#getRecordsManagementActions()
|
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#getRecordsManagementActions()
|
||||||
*/
|
*/
|
||||||
public List<RecordsManagementAction> getRecordsManagementActions()
|
public List<RecordsManagementAction> getRecordsManagementActions() {
|
||||||
{
|
|
||||||
List<RecordsManagementAction> result = new ArrayList<>(this.rmActions.size());
|
List<RecordsManagementAction> result = new ArrayList<>(this.rmActions.size());
|
||||||
result.addAll(this.rmActions.values());
|
result.addAll(this.rmActions.values());
|
||||||
return Collections.unmodifiableList(result);
|
return Collections.unmodifiableList(result);
|
||||||
@@ -210,8 +210,7 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
|
|||||||
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#getRecordsManagementActionConditions()
|
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#getRecordsManagementActionConditions()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<RecordsManagementActionCondition> getRecordsManagementActionConditions()
|
public List<RecordsManagementActionCondition> getRecordsManagementActionConditions() {
|
||||||
{
|
|
||||||
List<RecordsManagementActionCondition> result = new ArrayList<>(rmConditions.size());
|
List<RecordsManagementActionCondition> result = new ArrayList<>(rmConditions.size());
|
||||||
result.addAll(rmConditions.values());
|
result.addAll(rmConditions.values());
|
||||||
return Collections.unmodifiableList(result);
|
return Collections.unmodifiableList(result);
|
||||||
@@ -224,12 +223,10 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
|
|||||||
* @return List of records management action
|
* @return List of records management action
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public List<RecordsManagementAction> getDispositionActions(NodeRef nodeRef)
|
public List<RecordsManagementAction> getDispositionActions(NodeRef nodeRef) {
|
||||||
{
|
|
||||||
List<RecordsManagementAction> result = new ArrayList<>(this.rmActions.size());
|
List<RecordsManagementAction> result = new ArrayList<>(this.rmActions.size());
|
||||||
|
|
||||||
for (RecordsManagementAction action : this.rmActions.values())
|
for (RecordsManagementAction action : this.rmActions.values()) {
|
||||||
{
|
|
||||||
// TODO check the permissions on the action ...
|
// TODO check the permissions on the action ...
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -239,8 +236,7 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
|
|||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#getDispositionActions()
|
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#getDispositionActions()
|
||||||
*/
|
*/
|
||||||
public List<RecordsManagementAction> getDispositionActions()
|
public List<RecordsManagementAction> getDispositionActions() {
|
||||||
{
|
|
||||||
List<RecordsManagementAction> result = new ArrayList<>(dispositionActions.size());
|
List<RecordsManagementAction> result = new ArrayList<>(dispositionActions.size());
|
||||||
result.addAll(dispositionActions.values());
|
result.addAll(dispositionActions.values());
|
||||||
return Collections.unmodifiableList(result);
|
return Collections.unmodifiableList(result);
|
||||||
@@ -249,65 +245,50 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
|
|||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#getDispositionAction(java.lang.String)
|
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#getDispositionAction(java.lang.String)
|
||||||
*/
|
*/
|
||||||
public RecordsManagementAction getDispositionAction(String name)
|
public RecordsManagementAction getDispositionAction(String name) {
|
||||||
{
|
|
||||||
return dispositionActions.get(name);
|
return dispositionActions.get(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#getRecordsManagementAction(java.lang.String)
|
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#getRecordsManagementAction(java.lang.String)
|
||||||
*/
|
*/
|
||||||
public RecordsManagementAction getRecordsManagementAction(String name)
|
public RecordsManagementAction getRecordsManagementAction(String name) {
|
||||||
{
|
|
||||||
return this.rmActions.get(name);
|
return this.rmActions.get(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#executeRecordsManagementAction(org.alfresco.service.cmr.repository.NodeRef, java.lang.String)
|
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#executeRecordsManagementAction(org.alfresco.service.cmr.repository.NodeRef, java.lang.String)
|
||||||
*/
|
*/
|
||||||
public RecordsManagementActionResult executeRecordsManagementAction(NodeRef nodeRef, String name)
|
public RecordsManagementActionResult executeRecordsManagementAction(NodeRef nodeRef, String name) {
|
||||||
{
|
|
||||||
return executeRecordsManagementAction(nodeRef, name, null);
|
return executeRecordsManagementAction(nodeRef, name, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#executeRecordsManagementAction(java.util.List, java.lang.String)
|
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#executeRecordsManagementAction(java.util.List, java.lang.String)
|
||||||
*/
|
*/
|
||||||
public Map<NodeRef, RecordsManagementActionResult> executeRecordsManagementAction(List<NodeRef> nodeRefs, String name)
|
public Map<NodeRef, RecordsManagementActionResult> executeRecordsManagementAction(List<NodeRef> nodeRefs, String name) {
|
||||||
{
|
|
||||||
return executeRecordsManagementAction(nodeRefs, name, null);
|
return executeRecordsManagementAction(nodeRefs, name, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#executeRecordsManagementAction(org.alfresco.service.cmr.repository.NodeRef, java.lang.String, java.util.Map)
|
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#executeRecordsManagementAction(org.alfresco.service.cmr.repository.NodeRef, java.lang.String, java.util.Map)
|
||||||
*/
|
*/
|
||||||
public RecordsManagementActionResult executeRecordsManagementAction(NodeRef nodeRef, String name, Map<String, Serializable> parameters)
|
public RecordsManagementActionResult executeRecordsManagementAction(NodeRef nodeRef, String name, Map<String, Serializable> parameters) {
|
||||||
{
|
log.debug("Executing record management action on " + nodeRef);
|
||||||
if (logger.isDebugEnabled())
|
log.debug(" actionName = " + name);
|
||||||
{
|
log.debug(" parameters = " + parameters);
|
||||||
logger.debug("Executing record management action on " + nodeRef);
|
|
||||||
logger.debug(" actionName = " + name);
|
|
||||||
logger.debug(" parameters = " + parameters);
|
|
||||||
}
|
|
||||||
|
|
||||||
RecordsManagementAction rmAction = this.rmActions.get(name);
|
RecordsManagementAction rmAction = this.rmActions.get(name);
|
||||||
if (rmAction == null)
|
if (rmAction == null) {
|
||||||
{
|
|
||||||
String msg = I18NUtil.getMessage(MSG_NOT_DEFINED, name);
|
String msg = I18NUtil.getMessage(MSG_NOT_DEFINED, name);
|
||||||
if (logger.isWarnEnabled())
|
log.warn(msg);
|
||||||
{
|
|
||||||
logger.warn(msg);
|
|
||||||
}
|
|
||||||
throw new AlfrescoRuntimeException(msg);
|
throw new AlfrescoRuntimeException(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dispositionService.isFrozenOrHasFrozenChildren(nodeRef) && retentionActions.contains(name.toLowerCase())) {
|
if (freezeService.isFrozenOrHasFrozenChildren(nodeRef) && retentionActions.contains(name.toLowerCase())) {
|
||||||
String msg = I18NUtil.getMessage(MSG_NODE_FROZEN, rmAction.getName());
|
String msg = I18NUtil.getMessage(MSG_NODE_FROZEN, name);
|
||||||
|
|
||||||
if (logger.isDebugEnabled())
|
log.debug(msg);
|
||||||
{
|
|
||||||
logger.debug(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new AlfrescoRuntimeException(msg);
|
throw new AlfrescoRuntimeException(msg);
|
||||||
}
|
}
|
||||||
@@ -315,8 +296,7 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
|
|||||||
// Execute action
|
// Execute action
|
||||||
invokeBeforeRMActionExecution(nodeRef, name, parameters);
|
invokeBeforeRMActionExecution(nodeRef, name, parameters);
|
||||||
RecordsManagementActionResult result = rmAction.execute(nodeRef, parameters);
|
RecordsManagementActionResult result = rmAction.execute(nodeRef, parameters);
|
||||||
if (getNodeService().exists(nodeRef))
|
if (getNodeService().exists(nodeRef)) {
|
||||||
{
|
|
||||||
invokeOnRMActionExecution(nodeRef, name, parameters);
|
invokeOnRMActionExecution(nodeRef, name, parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -326,22 +306,15 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
|
|||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#executeRecordsManagementAction(java.lang.String, java.util.Map)
|
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#executeRecordsManagementAction(java.lang.String, java.util.Map)
|
||||||
*/
|
*/
|
||||||
public RecordsManagementActionResult executeRecordsManagementAction(String name, Map<String, Serializable> parameters)
|
public RecordsManagementActionResult executeRecordsManagementAction(String name, Map<String, Serializable> parameters) {
|
||||||
{
|
|
||||||
RecordsManagementAction rmAction = rmActions.get(name);
|
RecordsManagementAction rmAction = rmActions.get(name);
|
||||||
|
|
||||||
NodeRef implicitTargetNode = rmAction.getImplicitTargetNodeRef();
|
NodeRef implicitTargetNode = rmAction.getImplicitTargetNodeRef();
|
||||||
if (implicitTargetNode == null)
|
if (implicitTargetNode == null) {
|
||||||
{
|
|
||||||
String msg = I18NUtil.getMessage(MSG_NO_IMPLICIT_NODEREF, name);
|
String msg = I18NUtil.getMessage(MSG_NO_IMPLICIT_NODEREF, name);
|
||||||
if (logger.isWarnEnabled())
|
log.warn(msg);
|
||||||
{
|
|
||||||
logger.warn(msg);
|
|
||||||
}
|
|
||||||
throw new AlfrescoRuntimeException(msg);
|
throw new AlfrescoRuntimeException(msg);
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
return this.executeRecordsManagementAction(implicitTargetNode, name, parameters);
|
return this.executeRecordsManagementAction(implicitTargetNode, name, parameters);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -349,12 +322,10 @@ public class RecordsManagementActionServiceImpl implements RecordsManagementActi
|
|||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#executeRecordsManagementAction(java.util.List, java.lang.String, java.util.Map)
|
* @see org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService#executeRecordsManagementAction(java.util.List, java.lang.String, java.util.Map)
|
||||||
*/
|
*/
|
||||||
public Map<NodeRef, RecordsManagementActionResult> executeRecordsManagementAction(List<NodeRef> nodeRefs, String name, Map<String, Serializable> parameters)
|
public Map<NodeRef, RecordsManagementActionResult> executeRecordsManagementAction(List<NodeRef> nodeRefs, String name, Map<String, Serializable> parameters) {
|
||||||
{
|
|
||||||
// Execute the action on each node in the list
|
// Execute the action on each node in the list
|
||||||
Map<NodeRef, RecordsManagementActionResult> results = new HashMap<>(nodeRefs.size());
|
Map<NodeRef, RecordsManagementActionResult> results = new HashMap<>(nodeRefs.size());
|
||||||
for (NodeRef nodeRef : nodeRefs)
|
for (NodeRef nodeRef : nodeRefs) {
|
||||||
{
|
|
||||||
RecordsManagementActionResult result = executeRecordsManagementAction(nodeRef, name, parameters);
|
RecordsManagementActionResult result = executeRecordsManagementAction(nodeRef, name, parameters);
|
||||||
results.put(nodeRef, result);
|
results.put(nodeRef, result);
|
||||||
}
|
}
|
||||||
|
@@ -289,11 +289,4 @@ public interface DispositionService
|
|||||||
*/
|
*/
|
||||||
void recalculateNextDispositionStep(NodeRef record);
|
void recalculateNextDispositionStep(NodeRef record);
|
||||||
|
|
||||||
/**
|
|
||||||
* Check given node or its children are frozen
|
|
||||||
* The node should be record or record folder for retention schedule
|
|
||||||
*
|
|
||||||
* @param nodeRef
|
|
||||||
*/
|
|
||||||
boolean isFrozenOrHasFrozenChildren(NodeRef nodeRef);
|
|
||||||
}
|
}
|
||||||
|
@@ -45,7 +45,6 @@ import org.alfresco.module.org_alfresco_module_rm.disposition.property.Dispositi
|
|||||||
import org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEvent;
|
import org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEvent;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanComponentKind;
|
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanComponentKind;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
|
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
|
|
||||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
|
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
|
import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
|
||||||
@@ -116,9 +115,6 @@ public class DispositionServiceImpl extends ServiceBaseImpl
|
|||||||
/** Record Service */
|
/** Record Service */
|
||||||
private RecordService recordService;
|
private RecordService recordService;
|
||||||
|
|
||||||
/** Freeze Service */
|
|
||||||
private FreezeService freezeService;
|
|
||||||
|
|
||||||
/** Transaction service */
|
/** Transaction service */
|
||||||
private TransactionService transactionService;
|
private TransactionService transactionService;
|
||||||
|
|
||||||
@@ -191,14 +187,6 @@ public class DispositionServiceImpl extends ServiceBaseImpl
|
|||||||
this.recordService = recordService;
|
this.recordService = recordService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param freezeService freeze service
|
|
||||||
*/
|
|
||||||
public void setFreezeService(FreezeService freezeService)
|
|
||||||
{
|
|
||||||
this.freezeService = freezeService;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param transactionService transaction service
|
* @param transactionService transaction service
|
||||||
*/
|
*/
|
||||||
@@ -1469,23 +1457,4 @@ public class DispositionServiceImpl extends ServiceBaseImpl
|
|||||||
newDispositionActionName, newDispositionActionDateAsOf, WriteMode.DATE_AND_NAME);
|
newDispositionActionName, newDispositionActionDateAsOf, WriteMode.DATE_AND_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper method to determine if a node is frozen or has frozen children
|
|
||||||
*
|
|
||||||
* @param nodeRef Node to be checked
|
|
||||||
* @return <code>true</code> if the node is frozen or has frozen children, <code>false</code> otherwise
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean isFrozenOrHasFrozenChildren(NodeRef nodeRef)
|
|
||||||
{
|
|
||||||
if (recordFolderService.isRecordFolder(nodeRef))
|
|
||||||
{
|
|
||||||
return freezeService.isFrozen(nodeRef) || freezeService.hasFrozenChildren(nodeRef);
|
|
||||||
}
|
|
||||||
else if (recordService.isRecord(nodeRef))
|
|
||||||
{
|
|
||||||
return freezeService.isFrozen(nodeRef);
|
|
||||||
}
|
|
||||||
return Boolean.FALSE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -150,4 +150,12 @@ public interface FreezeService
|
|||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
Set<NodeRef> getHolds(NodeRef filePlan);
|
Set<NodeRef> getHolds(NodeRef filePlan);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check given node or its children are frozen
|
||||||
|
* The node should be record or record folder for retention schedule
|
||||||
|
*
|
||||||
|
* @param nodeRef
|
||||||
|
*/
|
||||||
|
boolean isFrozenOrHasFrozenChildren(NodeRef nodeRef);
|
||||||
}
|
}
|
||||||
|
@@ -43,6 +43,8 @@ import org.alfresco.model.ContentModel;
|
|||||||
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
|
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.hold.HoldService;
|
import org.alfresco.module.org_alfresco_module_rm.hold.HoldService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.util.ServiceBaseImpl;
|
import org.alfresco.module.org_alfresco_module_rm.util.ServiceBaseImpl;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
||||||
@@ -62,48 +64,73 @@ import org.springframework.extensions.surf.util.I18NUtil;
|
|||||||
* @author Tuna Aksoy
|
* @author Tuna Aksoy
|
||||||
* @since 2.1
|
* @since 2.1
|
||||||
*/
|
*/
|
||||||
public class FreezeServiceImpl extends ServiceBaseImpl
|
public class FreezeServiceImpl extends ServiceBaseImpl
|
||||||
implements FreezeService,
|
implements FreezeService,
|
||||||
RecordsManagementModel
|
RecordsManagementModel {
|
||||||
{
|
/**
|
||||||
/** I18N */
|
* I18N
|
||||||
|
*/
|
||||||
private static final String MSG_HOLD_NAME = "rm.hold.name";
|
private static final String MSG_HOLD_NAME = "rm.hold.name";
|
||||||
|
|
||||||
/** File Plan Service */
|
/**
|
||||||
|
* File Plan Service
|
||||||
|
*/
|
||||||
private FilePlanService filePlanService;
|
private FilePlanService filePlanService;
|
||||||
|
|
||||||
/** Hold service */
|
/**
|
||||||
|
* Hold service
|
||||||
|
*/
|
||||||
private HoldService holdService;
|
private HoldService holdService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Record Folder Service
|
||||||
|
*/
|
||||||
|
private RecordFolderService recordFolderService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Record Service
|
||||||
|
*/
|
||||||
|
private RecordService recordService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param recordFolderService record folder service
|
||||||
|
*/
|
||||||
|
public void setRecordFolderService(RecordFolderService recordFolderService) {
|
||||||
|
this.recordFolderService = recordFolderService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param recordService record service
|
||||||
|
*/
|
||||||
|
public void setRecordService(RecordService recordService) {
|
||||||
|
this.recordService = recordService;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return File plan service
|
* @return File plan service
|
||||||
*/
|
*/
|
||||||
protected FilePlanService getFilePlanService()
|
protected FilePlanService getFilePlanService() {
|
||||||
{
|
|
||||||
return this.filePlanService;
|
return this.filePlanService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Hold service
|
* @return Hold service
|
||||||
*/
|
*/
|
||||||
protected HoldService getHoldService()
|
protected HoldService getHoldService() {
|
||||||
{
|
|
||||||
return this.holdService;
|
return this.holdService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param filePlanService file plan service
|
* @param filePlanService file plan service
|
||||||
*/
|
*/
|
||||||
public void setFilePlanService(FilePlanService filePlanService)
|
public void setFilePlanService(FilePlanService filePlanService) {
|
||||||
{
|
|
||||||
this.filePlanService = filePlanService;
|
this.filePlanService = filePlanService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param holdService hold service
|
* @param holdService hold service
|
||||||
*/
|
*/
|
||||||
public void setHoldService(HoldService holdService)
|
public void setHoldService(HoldService holdService) {
|
||||||
{
|
|
||||||
this.holdService = holdService;
|
this.holdService = holdService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,8 +138,7 @@ public class FreezeServiceImpl extends ServiceBaseImpl
|
|||||||
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#isFrozen(org.alfresco.service.cmr.repository.NodeRef)
|
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#isFrozen(org.alfresco.service.cmr.repository.NodeRef)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean isFrozen(NodeRef nodeRef)
|
public boolean isFrozen(NodeRef nodeRef) {
|
||||||
{
|
|
||||||
ParameterCheck.mandatory("nodeRef", nodeRef);
|
ParameterCheck.mandatory("nodeRef", nodeRef);
|
||||||
|
|
||||||
return nodeService.hasAspect(nodeRef, ASPECT_FROZEN);
|
return nodeService.hasAspect(nodeRef, ASPECT_FROZEN);
|
||||||
@@ -127,19 +153,17 @@ public class FreezeServiceImpl extends ServiceBaseImpl
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public Set<NodeRef> getFrozen(NodeRef hold)
|
public Set<NodeRef> getFrozen(NodeRef hold) {
|
||||||
{
|
|
||||||
return new HashSet<>(getHoldService().getHeld(hold));
|
return new HashSet<>(getHoldService().getHeld(hold));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#freeze(java.lang.String,
|
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#freeze(java.lang.String,
|
||||||
* org.alfresco.service.cmr.repository.NodeRef)
|
* org.alfresco.service.cmr.repository.NodeRef)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public NodeRef freeze(String reason, NodeRef nodeRef)
|
public NodeRef freeze(String reason, NodeRef nodeRef) {
|
||||||
{
|
|
||||||
NodeRef hold = createHold(nodeRef, reason);
|
NodeRef hold = createHold(nodeRef, reason);
|
||||||
getHoldService().addToHold(hold, nodeRef);
|
getHoldService().addToHold(hold, nodeRef);
|
||||||
return hold;
|
return hold;
|
||||||
@@ -147,12 +171,11 @@ public class FreezeServiceImpl extends ServiceBaseImpl
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#freeze(org.alfresco.service.cmr.repository.NodeRef,
|
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#freeze(org.alfresco.service.cmr.repository.NodeRef,
|
||||||
* org.alfresco.service.cmr.repository.NodeRef)
|
* org.alfresco.service.cmr.repository.NodeRef)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void freeze(NodeRef hold, NodeRef nodeRef)
|
public void freeze(NodeRef hold, NodeRef nodeRef) {
|
||||||
{
|
|
||||||
ParameterCheck.mandatory("hold", hold);
|
ParameterCheck.mandatory("hold", hold);
|
||||||
ParameterCheck.mandatory("nodeRef", nodeRef);
|
ParameterCheck.mandatory("nodeRef", nodeRef);
|
||||||
|
|
||||||
@@ -161,15 +184,13 @@ public class FreezeServiceImpl extends ServiceBaseImpl
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#freeze(java.lang.String,
|
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#freeze(java.lang.String,
|
||||||
* java.util.Set)
|
* java.util.Set)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public NodeRef freeze(String reason, Set<NodeRef> nodeRefs)
|
public NodeRef freeze(String reason, Set<NodeRef> nodeRefs) {
|
||||||
{
|
|
||||||
NodeRef hold = null;
|
NodeRef hold = null;
|
||||||
if (!nodeRefs.isEmpty())
|
if (!nodeRefs.isEmpty()) {
|
||||||
{
|
|
||||||
final List<NodeRef> list = new ArrayList<>(nodeRefs);
|
final List<NodeRef> list = new ArrayList<>(nodeRefs);
|
||||||
hold = createHold(list.get(0), reason);
|
hold = createHold(list.get(0), reason);
|
||||||
getHoldService().addToHold(hold, list);
|
getHoldService().addToHold(hold, list);
|
||||||
@@ -179,17 +200,15 @@ public class FreezeServiceImpl extends ServiceBaseImpl
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#freeze(org.alfresco.service.cmr.repository.NodeRef,
|
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#freeze(org.alfresco.service.cmr.repository.NodeRef,
|
||||||
* java.util.Set)
|
* java.util.Set)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void freeze(NodeRef hold, Set<NodeRef> nodeRefs)
|
public void freeze(NodeRef hold, Set<NodeRef> nodeRefs) {
|
||||||
{
|
|
||||||
ParameterCheck.mandatory("hold", hold);
|
ParameterCheck.mandatory("hold", hold);
|
||||||
ParameterCheck.mandatoryCollection("nodeRefs", nodeRefs);
|
ParameterCheck.mandatoryCollection("nodeRefs", nodeRefs);
|
||||||
|
|
||||||
for (NodeRef nodeRef : nodeRefs)
|
for (NodeRef nodeRef : nodeRefs) {
|
||||||
{
|
|
||||||
freeze(hold, nodeRef);
|
freeze(hold, nodeRef);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -199,11 +218,9 @@ public class FreezeServiceImpl extends ServiceBaseImpl
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void unFreeze(NodeRef nodeRef)
|
public void unFreeze(NodeRef nodeRef) {
|
||||||
{
|
|
||||||
List<NodeRef> holds = getHoldService().heldBy(nodeRef, true);
|
List<NodeRef> holds = getHoldService().heldBy(nodeRef, true);
|
||||||
for (NodeRef hold : holds)
|
for (NodeRef hold : holds) {
|
||||||
{
|
|
||||||
getHoldService().removeFromHold(hold, nodeRef);
|
getHoldService().removeFromHold(hold, nodeRef);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -213,12 +230,10 @@ public class FreezeServiceImpl extends ServiceBaseImpl
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void unFreeze(Set<NodeRef> nodeRefs)
|
public void unFreeze(Set<NodeRef> nodeRefs) {
|
||||||
{
|
|
||||||
ParameterCheck.mandatoryCollection("nodeRefs", nodeRefs);
|
ParameterCheck.mandatoryCollection("nodeRefs", nodeRefs);
|
||||||
|
|
||||||
for (NodeRef nodeRef : nodeRefs)
|
for (NodeRef nodeRef : nodeRefs) {
|
||||||
{
|
|
||||||
unFreeze(nodeRef);
|
unFreeze(nodeRef);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -228,8 +243,7 @@ public class FreezeServiceImpl extends ServiceBaseImpl
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void relinquish(NodeRef hold)
|
public void relinquish(NodeRef hold) {
|
||||||
{
|
|
||||||
getHoldService().deleteHold(hold);
|
getHoldService().deleteHold(hold);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -238,19 +252,17 @@ public class FreezeServiceImpl extends ServiceBaseImpl
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public String getReason(NodeRef hold)
|
public String getReason(NodeRef hold) {
|
||||||
{
|
|
||||||
return getHoldService().getHoldReason(hold);
|
return getHoldService().getHoldReason(hold);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#updateReason(org.alfresco.service.cmr.repository.NodeRef,
|
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#updateReason(org.alfresco.service.cmr.repository.NodeRef,
|
||||||
* java.lang.String)
|
* java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void updateReason(NodeRef hold, String reason)
|
public void updateReason(NodeRef hold, String reason) {
|
||||||
{
|
|
||||||
getHoldService().setHoldReason(hold, reason);
|
getHoldService().setHoldReason(hold, reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -258,8 +270,7 @@ public class FreezeServiceImpl extends ServiceBaseImpl
|
|||||||
* @see org.alfresco.module.org_alfresco_module_rm.hold.HoldService#getHolds(NodeRef)
|
* @see org.alfresco.module.org_alfresco_module_rm.hold.HoldService#getHolds(NodeRef)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Set<NodeRef> getHolds(NodeRef filePlan)
|
public Set<NodeRef> getHolds(NodeRef filePlan) {
|
||||||
{
|
|
||||||
ParameterCheck.mandatory("filePlan", filePlan);
|
ParameterCheck.mandatory("filePlan", filePlan);
|
||||||
|
|
||||||
return new HashSet<>(getHoldService().getHolds(filePlan));
|
return new HashSet<>(getHoldService().getHolds(filePlan));
|
||||||
@@ -269,60 +280,48 @@ public class FreezeServiceImpl extends ServiceBaseImpl
|
|||||||
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#hasFrozenChildren(org.alfresco.service.cmr.repository.NodeRef)
|
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#hasFrozenChildren(org.alfresco.service.cmr.repository.NodeRef)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean hasFrozenChildren(final NodeRef nodeRef)
|
public boolean hasFrozenChildren(final NodeRef nodeRef) {
|
||||||
{
|
|
||||||
ParameterCheck.mandatory("nodeRef", nodeRef);
|
ParameterCheck.mandatory("nodeRef", nodeRef);
|
||||||
|
|
||||||
boolean result = false;
|
boolean result = false;
|
||||||
|
|
||||||
// check that we are dealing with a record folder or a collaboration folder
|
// check that we are dealing with a record folder or a collaboration folder
|
||||||
if (isRecordFolder(nodeRef) ||
|
if (isRecordFolder(nodeRef) ||
|
||||||
(instanceOf(nodeRef, TYPE_FOLDER) && !nodeService.hasAspect(nodeRef, ASPECT_SITE_CONTAINER)))
|
(instanceOf(nodeRef, TYPE_FOLDER) && !nodeService.hasAspect(nodeRef, ASPECT_SITE_CONTAINER))) {
|
||||||
{
|
|
||||||
int heldCount = 0;
|
int heldCount = 0;
|
||||||
|
|
||||||
if (nodeService.hasAspect(nodeRef, ASPECT_HELD_CHILDREN))
|
if (nodeService.hasAspect(nodeRef, ASPECT_HELD_CHILDREN)) {
|
||||||
{
|
heldCount = (Integer) getInternalNodeService().getProperty(nodeRef, PROP_HELD_CHILDREN_COUNT);
|
||||||
heldCount = (Integer)getInternalNodeService().getProperty(nodeRef, PROP_HELD_CHILDREN_COUNT);
|
} else {
|
||||||
}
|
final TransactionService transactionService = (TransactionService) applicationContext.getBean("transactionService");
|
||||||
else
|
|
||||||
{
|
|
||||||
final TransactionService transactionService = (TransactionService)applicationContext.getBean("transactionService");
|
|
||||||
|
|
||||||
heldCount = AuthenticationUtil.runAsSystem(new RunAsWork<Integer>()
|
heldCount = AuthenticationUtil.runAsSystem(new RunAsWork<Integer>() {
|
||||||
{
|
|
||||||
@Override
|
@Override
|
||||||
public Integer doWork()
|
public Integer doWork() {
|
||||||
{
|
return transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Integer>() {
|
||||||
return transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Integer>()
|
public Integer execute() throws Throwable {
|
||||||
{
|
int heldCount = 0;
|
||||||
public Integer execute() throws Throwable
|
|
||||||
{
|
|
||||||
int heldCount = 0;
|
|
||||||
|
|
||||||
// NOTE: this process remains to 'patch' older systems to improve performance next time around
|
// NOTE: this process remains to 'patch' older systems to improve performance next time around
|
||||||
List<ChildAssociationRef> childAssocs = getInternalNodeService().getChildAssocs(nodeRef, ContentModel.ASSOC_CONTAINS, null);
|
List<ChildAssociationRef> childAssocs = getInternalNodeService().getChildAssocs(nodeRef, ContentModel.ASSOC_CONTAINS, null);
|
||||||
if (childAssocs != null && !childAssocs.isEmpty())
|
if (childAssocs != null && !childAssocs.isEmpty()) {
|
||||||
{
|
for (ChildAssociationRef childAssociationRef : childAssocs) {
|
||||||
for (ChildAssociationRef childAssociationRef : childAssocs)
|
final NodeRef childRef = childAssociationRef.getChildRef();
|
||||||
{
|
if (childAssociationRef.isPrimary() && isFrozen(childRef)) {
|
||||||
final NodeRef childRef = childAssociationRef.getChildRef();
|
heldCount++;
|
||||||
if (childAssociationRef.isPrimary() && isFrozen(childRef))
|
}
|
||||||
{
|
}
|
||||||
heldCount ++;
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// add aspect and set count
|
// add aspect and set count
|
||||||
Map<QName, Serializable> props = new HashMap<>(1);
|
Map<QName, Serializable> props = new HashMap<>(1);
|
||||||
props.put(PROP_HELD_CHILDREN_COUNT, heldCount);
|
props.put(PROP_HELD_CHILDREN_COUNT, heldCount);
|
||||||
getInternalNodeService().addAspect(nodeRef, ASPECT_HELD_CHILDREN, props);
|
getInternalNodeService().addAspect(nodeRef, ASPECT_HELD_CHILDREN, props);
|
||||||
|
|
||||||
return heldCount;
|
return heldCount;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
false, true);
|
false, true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -338,14 +337,14 @@ public class FreezeServiceImpl extends ServiceBaseImpl
|
|||||||
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#getFreezeDate(org.alfresco.service.cmr.repository.NodeRef)
|
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#getFreezeDate(org.alfresco.service.cmr.repository.NodeRef)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Date getFreezeDate(NodeRef nodeRef)
|
public Date getFreezeDate(NodeRef nodeRef) {
|
||||||
{
|
|
||||||
ParameterCheck.mandatory("nodeRef", nodeRef);
|
ParameterCheck.mandatory("nodeRef", nodeRef);
|
||||||
|
|
||||||
if (isFrozen(nodeRef))
|
if (isFrozen(nodeRef)) {
|
||||||
{
|
|
||||||
Serializable property = nodeService.getProperty(nodeRef, PROP_FROZEN_AT);
|
Serializable property = nodeService.getProperty(nodeRef, PROP_FROZEN_AT);
|
||||||
if (property != null) { return (Date) property; }
|
if (property != null) {
|
||||||
|
return (Date) property;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@@ -355,14 +354,14 @@ public class FreezeServiceImpl extends ServiceBaseImpl
|
|||||||
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#getFreezeInitiator(org.alfresco.service.cmr.repository.NodeRef)
|
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#getFreezeInitiator(org.alfresco.service.cmr.repository.NodeRef)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getFreezeInitiator(NodeRef nodeRef)
|
public String getFreezeInitiator(NodeRef nodeRef) {
|
||||||
{
|
|
||||||
ParameterCheck.mandatory("nodeRef", nodeRef);
|
ParameterCheck.mandatory("nodeRef", nodeRef);
|
||||||
|
|
||||||
if (isFrozen(nodeRef))
|
if (isFrozen(nodeRef)) {
|
||||||
{
|
|
||||||
Serializable property = nodeService.getProperty(nodeRef, PROP_FROZEN_BY);
|
Serializable property = nodeService.getProperty(nodeRef, PROP_FROZEN_BY);
|
||||||
if (property != null) { return (String) property; }
|
if (property != null) {
|
||||||
|
return (String) property;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@@ -376,11 +375,10 @@ public class FreezeServiceImpl extends ServiceBaseImpl
|
|||||||
* Creates a hold using the given nodeRef and reason
|
* Creates a hold using the given nodeRef and reason
|
||||||
*
|
*
|
||||||
* @param nodeRef the nodeRef which will be frozen
|
* @param nodeRef the nodeRef which will be frozen
|
||||||
* @param reason the reason why the record will be frozen
|
* @param reason the reason why the record will be frozen
|
||||||
* @return NodeRef of the created hold
|
* @return NodeRef of the created hold
|
||||||
*/
|
*/
|
||||||
private NodeRef createHold(NodeRef nodeRef, String reason)
|
private NodeRef createHold(NodeRef nodeRef, String reason) {
|
||||||
{
|
|
||||||
// get the hold container
|
// get the hold container
|
||||||
final NodeRef filePlan = getFilePlanService().getFilePlan(nodeRef);
|
final NodeRef filePlan = getFilePlanService().getFilePlan(nodeRef);
|
||||||
NodeRef holdContainer = getFilePlanService().getHoldContainer(filePlan);
|
NodeRef holdContainer = getFilePlanService().getHoldContainer(filePlan);
|
||||||
@@ -392,4 +390,20 @@ public class FreezeServiceImpl extends ServiceBaseImpl
|
|||||||
// create hold
|
// create hold
|
||||||
return getHoldService().createHold(filePlan, holdName, reason, null);
|
return getHoldService().createHold(filePlan, holdName, reason, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper method to determine if a node is frozen or has frozen children
|
||||||
|
*
|
||||||
|
* @param nodeRef Node to be checked
|
||||||
|
* @return <code>true</code> if the node is frozen or has frozen children, <code>false</code> otherwise
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean isFrozenOrHasFrozenChildren(NodeRef nodeRef) {
|
||||||
|
if (recordFolderService.isRecordFolder(nodeRef)) {
|
||||||
|
return isFrozen(nodeRef) || hasFrozenChildren(nodeRef);
|
||||||
|
} else if (recordService.isRecord(nodeRef)) {
|
||||||
|
return isFrozen(nodeRef);
|
||||||
|
}
|
||||||
|
return Boolean.FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -33,8 +33,11 @@ import java.io.Serializable;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.alfresco.error.AlfrescoRuntimeException;
|
import org.alfresco.error.AlfrescoRuntimeException;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService;
|
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService;
|
||||||
|
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
|
||||||
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
|
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
|
||||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
@@ -44,8 +47,8 @@ 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.apache.commons.logging.Log;
|
import org.springframework.extensions.surf.util.I18NUtil;
|
||||||
import org.apache.commons.logging.LogFactory;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Disposition Lifecycle Job Finds all disposition action nodes which are for disposition actions specified Where
|
* The Disposition Lifecycle Job Finds all disposition action nodes which are for disposition actions specified Where
|
||||||
@@ -54,69 +57,88 @@ import org.apache.commons.logging.LogFactory;
|
|||||||
* @author mrogers
|
* @author mrogers
|
||||||
* @author Roy Wetherall
|
* @author Roy Wetherall
|
||||||
*/
|
*/
|
||||||
public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecuter
|
@Slf4j
|
||||||
{
|
public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecuter {
|
||||||
/** logger */
|
/**
|
||||||
private static final Log logger = LogFactory.getLog(DispositionLifecycleJobExecuter.class);
|
* 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;
|
||||||
|
|
||||||
/** query string */
|
/**
|
||||||
|
* query string
|
||||||
|
*/
|
||||||
private String query;
|
private String query;
|
||||||
|
|
||||||
/** records management action service */
|
/**
|
||||||
|
* records management action service
|
||||||
|
*/
|
||||||
private RecordsManagementActionService recordsManagementActionService;
|
private RecordsManagementActionService recordsManagementActionService;
|
||||||
|
|
||||||
/** node service */
|
/**
|
||||||
|
* node service
|
||||||
|
*/
|
||||||
private NodeService nodeService;
|
private NodeService nodeService;
|
||||||
|
|
||||||
/** search service */
|
/**
|
||||||
|
* search service
|
||||||
|
*/
|
||||||
private SearchService searchService;
|
private SearchService searchService;
|
||||||
|
|
||||||
/** person service */
|
/**
|
||||||
|
* person service
|
||||||
|
*/
|
||||||
private PersonService personService;
|
private PersonService personService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Freeze Service
|
||||||
|
*/
|
||||||
|
private FreezeService freezeService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param freezeService freeze service
|
||||||
|
*/
|
||||||
|
public void setFreezeService(FreezeService freezeService) {
|
||||||
|
this.freezeService = freezeService;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of disposition actions to automatically execute when eligible.
|
* List of disposition actions to automatically execute when eligible.
|
||||||
*
|
*
|
||||||
* @param dispositionActions disposition actions
|
* @param dispositionActions disposition actions
|
||||||
*/
|
*/
|
||||||
public void setDispositionActions(List<String> dispositionActions)
|
public void setDispositionActions(List<String> dispositionActions) {
|
||||||
{
|
|
||||||
this.dispositionActions = dispositionActions;
|
this.dispositionActions = dispositionActions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setBatchSize(int batchSize)
|
public void setBatchSize(int batchSize) {
|
||||||
{
|
|
||||||
this.batchSize = batchSize;
|
this.batchSize = batchSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param recordsManagementActionService records management action service
|
* @param recordsManagementActionService records management action service
|
||||||
*/
|
*/
|
||||||
public void setRecordsManagementActionService(RecordsManagementActionService recordsManagementActionService)
|
public void setRecordsManagementActionService(RecordsManagementActionService recordsManagementActionService) {
|
||||||
{
|
|
||||||
this.recordsManagementActionService = recordsManagementActionService;
|
this.recordsManagementActionService = recordsManagementActionService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param nodeService node service
|
* @param nodeService node service
|
||||||
*/
|
*/
|
||||||
public void setNodeService(NodeService nodeService)
|
public void setNodeService(NodeService nodeService) {
|
||||||
{
|
|
||||||
this.nodeService = nodeService;
|
this.nodeService = nodeService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param searchService search service
|
* @param searchService search service
|
||||||
*/
|
*/
|
||||||
public void setSearchService(SearchService searchService)
|
public void setSearchService(SearchService searchService) {
|
||||||
{
|
|
||||||
this.searchService = searchService;
|
this.searchService = searchService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -125,24 +147,18 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
|
|||||||
*
|
*
|
||||||
* @return job query string
|
* @return job query string
|
||||||
*/
|
*/
|
||||||
protected String getQuery()
|
protected String getQuery() {
|
||||||
{
|
if (query == null) {
|
||||||
if (query == null)
|
|
||||||
{
|
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
sb.append("TYPE:\"rma:dispositionAction\" AND ");
|
sb.append("TYPE:\"rma:dispositionAction\" AND ");
|
||||||
sb.append("(@rma\\:dispositionAction:(");
|
sb.append("(@rma\\:dispositionAction:(");
|
||||||
|
|
||||||
boolean bFirst = true;
|
boolean bFirst = true;
|
||||||
for (String dispositionAction : dispositionActions)
|
for (String dispositionAction : dispositionActions) {
|
||||||
{
|
if (bFirst) {
|
||||||
if (bFirst)
|
|
||||||
{
|
|
||||||
bFirst = false;
|
bFirst = false;
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
sb.append(" OR ");
|
sb.append(" OR ");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,36 +182,26 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
|
|||||||
* @see org.alfresco.module.org_alfresco_module_rm.job.RecordsManagementJobExecuter#execute()
|
* @see org.alfresco.module.org_alfresco_module_rm.job.RecordsManagementJobExecuter#execute()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void executeImpl()
|
public void executeImpl() {
|
||||||
{
|
try {
|
||||||
try
|
log.debug("Job Starting");
|
||||||
{
|
|
||||||
logger.debug("Job Starting");
|
|
||||||
|
|
||||||
if (dispositionActions == null || dispositionActions.isEmpty())
|
if (dispositionActions == null || dispositionActions.isEmpty()) {
|
||||||
{
|
log.debug("Job Finished as disposition action is empty");
|
||||||
logger.debug("Job Finished as disposition action is empty");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean hasMore = true;
|
boolean hasMore = true;
|
||||||
int skipCount = 0;
|
int skipCount = 0;
|
||||||
|
|
||||||
if (batchSize < 1)
|
if (batchSize < 1) {
|
||||||
{
|
log.debug("Invalid value for batch size: " + batchSize + " default value used instead.");
|
||||||
if (logger.isDebugEnabled())
|
|
||||||
{
|
|
||||||
logger.debug("Invalid value for batch size: " + batchSize + " default value used instead.");
|
|
||||||
}
|
|
||||||
batchSize = DEFAULT_BATCH_SIZE;
|
batchSize = DEFAULT_BATCH_SIZE;
|
||||||
}
|
}
|
||||||
if (logger.isTraceEnabled())
|
|
||||||
{
|
|
||||||
logger.trace("Using batch size of " + batchSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
while (hasMore)
|
log.trace("Using batch size of " + batchSize);
|
||||||
{
|
|
||||||
|
while (hasMore) {
|
||||||
SearchParameters params = new SearchParameters();
|
SearchParameters params = new SearchParameters();
|
||||||
params.addStore(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE);
|
params.addStore(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE);
|
||||||
params.setLanguage(SearchService.LANGUAGE_FTS_ALFRESCO);
|
params.setLanguage(SearchService.LANGUAGE_FTS_ALFRESCO);
|
||||||
@@ -210,25 +216,16 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
|
|||||||
skipCount += resultNodes.size(); // increase by page size
|
skipCount += resultNodes.size(); // increase by page size
|
||||||
results.close();
|
results.close();
|
||||||
|
|
||||||
if (logger.isDebugEnabled())
|
log.debug("Processing " + resultNodes.size() + " nodes");
|
||||||
{
|
|
||||||
logger.debug("Processing " + resultNodes.size() + " nodes");
|
|
||||||
}
|
|
||||||
|
|
||||||
// process search results
|
// process search results
|
||||||
if (!resultNodes.isEmpty())
|
if (!resultNodes.isEmpty()) {
|
||||||
{
|
|
||||||
executeAction(resultNodes);
|
executeAction(resultNodes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
logger.debug("Job Finished");
|
log.debug("Job Finished");
|
||||||
}
|
} catch (AlfrescoRuntimeException exception) {
|
||||||
catch (AlfrescoRuntimeException exception)
|
log.debug(exception.getMessage());
|
||||||
{
|
|
||||||
if (logger.isDebugEnabled())
|
|
||||||
{
|
|
||||||
logger.debug(exception);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -237,48 +234,41 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
|
|||||||
*
|
*
|
||||||
* @param actionNodes - the disposition actions to execute
|
* @param actionNodes - the disposition actions to execute
|
||||||
*/
|
*/
|
||||||
private void executeAction(final List<NodeRef> actionNodes)
|
private void executeAction(final List<NodeRef> actionNodes) {
|
||||||
{
|
|
||||||
RetryingTransactionCallback<Boolean> processTranCB = () -> {
|
RetryingTransactionCallback<Boolean> processTranCB = () -> {
|
||||||
for (NodeRef actionNode : actionNodes)
|
for (NodeRef actionNode : actionNodes) {
|
||||||
{
|
if (!nodeService.exists(actionNode)) {
|
||||||
if (!nodeService.exists(actionNode))
|
|
||||||
{
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
final String dispAction = (String) nodeService.getProperty(actionNode, PROP_DISPOSITION_ACTION);
|
final String dispAction = (String) nodeService.getProperty(actionNode, PROP_DISPOSITION_ACTION);
|
||||||
|
|
||||||
// Run disposition action
|
// Run disposition action
|
||||||
if (dispAction == null || !dispositionActions.contains(dispAction))
|
if (dispAction == null || !dispositionActions.contains(dispAction)) {
|
||||||
{
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
ChildAssociationRef parent = nodeService.getPrimaryParent(actionNode);
|
ChildAssociationRef parent = nodeService.getPrimaryParent(actionNode);
|
||||||
if (!parent.getTypeQName().equals(ASSOC_NEXT_DISPOSITION_ACTION))
|
if (!parent.getTypeQName().equals(ASSOC_NEXT_DISPOSITION_ACTION)) {
|
||||||
{
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Map<String, Serializable> props = Map.of(PARAM_NO_ERROR_CHECK, false);
|
Map<String, Serializable> props = Map.of(PARAM_NO_ERROR_CHECK, false);
|
||||||
|
|
||||||
try
|
if (freezeService.isFrozenOrHasFrozenChildren(parent.getParentRef())) {
|
||||||
{
|
log.debug(I18NUtil.getMessage(MSG_NODE_FROZEN, dispAction));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
// execute disposition action
|
// execute disposition action
|
||||||
recordsManagementActionService
|
recordsManagementActionService
|
||||||
.executeRecordsManagementAction(parent.getParentRef(), dispAction, props);
|
.executeRecordsManagementAction(parent.getParentRef(), dispAction, props);
|
||||||
|
|
||||||
|
log.debug("Processed action: " + dispAction + "on" + parent);
|
||||||
|
|
||||||
|
} catch (AlfrescoRuntimeException exception) {
|
||||||
|
log.debug(exception.getMessage());
|
||||||
|
|
||||||
if (logger.isDebugEnabled())
|
|
||||||
{
|
|
||||||
logger.debug("Processed action: " + dispAction + "on" + parent);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (AlfrescoRuntimeException exception)
|
|
||||||
{
|
|
||||||
if (logger.isDebugEnabled())
|
|
||||||
{
|
|
||||||
logger.debug(exception);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Boolean.TRUE;
|
return Boolean.TRUE;
|
||||||
@@ -286,13 +276,11 @@ public class DispositionLifecycleJobExecuter extends RecordsManagementJobExecute
|
|||||||
retryingTransactionHelper.doInTransaction(processTranCB, false, true);
|
retryingTransactionHelper.doInTransaction(processTranCB, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PersonService getPersonService()
|
public PersonService getPersonService() {
|
||||||
{
|
|
||||||
return personService;
|
return personService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPersonService(PersonService personService)
|
public void setPersonService(PersonService personService) {
|
||||||
{
|
|
||||||
this.personService = personService;
|
this.personService = personService;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -41,232 +41,236 @@ import org.alfresco.service.cmr.repository.NodeRef;
|
|||||||
* @author Tuna Aksoy
|
* @author Tuna Aksoy
|
||||||
* @since 2.1
|
* @since 2.1
|
||||||
*/
|
*/
|
||||||
public class FreezeServiceImplTest extends BaseRMTestCase
|
public class FreezeServiceImplTest extends BaseRMTestCase {
|
||||||
{
|
|
||||||
private List<NodeRef> holdAssocs;
|
private List<NodeRef> holdAssocs;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean isRecordTest()
|
protected boolean isRecordTest() {
|
||||||
{
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test freeze service methods.
|
* Test freeze service methods.
|
||||||
*
|
*
|
||||||
* @deprecated as of 2.2
|
* @deprecated as of 2.2
|
||||||
*/
|
*/
|
||||||
public void testFreezeService() throws Exception
|
public void testFreezeService() throws Exception {
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
doTestInTransaction(new Test<Void>()
|
doTestInTransaction(new Test<Void>() {
|
||||||
{
|
@Override
|
||||||
@Override
|
public Void run() throws Exception {
|
||||||
public Void run() throws Exception
|
assertTrue(recordService.isRecord(recordOne));
|
||||||
{
|
assertTrue(recordService.isRecord(recordTwo));
|
||||||
assertTrue(recordService.isRecord(recordOne));
|
assertTrue(recordService.isRecord(recordThree));
|
||||||
assertTrue(recordService.isRecord(recordTwo));
|
assertTrue(recordService.isRecord(recordFour));
|
||||||
assertTrue(recordService.isRecord(recordThree));
|
assertTrue(filePlanService.isFilePlanComponent(recordOne));
|
||||||
assertTrue(recordService.isRecord(recordFour));
|
assertTrue(filePlanService.isFilePlanComponent(recordTwo));
|
||||||
assertTrue(filePlanService.isFilePlanComponent(recordOne));
|
assertTrue(filePlanService.isFilePlanComponent(recordThree));
|
||||||
assertTrue(filePlanService.isFilePlanComponent(recordTwo));
|
assertTrue(filePlanService.isFilePlanComponent(recordFour));
|
||||||
assertTrue(filePlanService.isFilePlanComponent(recordThree));
|
|
||||||
assertTrue(filePlanService.isFilePlanComponent(recordFour));
|
|
||||||
|
|
||||||
// Freeze a record
|
// Freeze a record
|
||||||
NodeRef hold101 = holdService.createHold(filePlan, "freezename 101", "FreezeReason", null);
|
NodeRef hold101 = holdService.createHold(filePlan, "freezename 101", "FreezeReason", null);
|
||||||
|
|
||||||
assertNotNull(hold101);
|
assertNotNull(hold101);
|
||||||
holdService.addToHold(hold101, recordOne);
|
holdService.addToHold(hold101, recordOne);
|
||||||
|
|
||||||
//assertTrue(freezeService.hasFrozenChildren(rmFolder));
|
//assertTrue(freezeService.hasFrozenChildren(rmFolder));
|
||||||
|
|
||||||
// Check the hold exists
|
// Check the hold exists
|
||||||
holdAssocs = holdService.getHolds(filePlan);
|
holdAssocs = holdService.getHolds(filePlan);
|
||||||
assertNotNull(holdAssocs);
|
assertNotNull(holdAssocs);
|
||||||
assertEquals(1, holdAssocs.size());
|
assertEquals(1, holdAssocs.size());
|
||||||
|
|
||||||
NodeRef holdNodeRef = holdAssocs.iterator().next();
|
NodeRef holdNodeRef = holdAssocs.iterator().next();
|
||||||
|
|
||||||
|
|
||||||
assertEquals(holdNodeRef, hold101);
|
assertEquals(holdNodeRef, hold101);
|
||||||
assertTrue(holdService.isHold(holdNodeRef));
|
assertTrue(holdService.isHold(holdNodeRef));
|
||||||
assertEquals("FreezeReason", holdService.getHoldReason(holdNodeRef));
|
assertEquals("FreezeReason", holdService.getHoldReason(holdNodeRef));
|
||||||
List<NodeRef> frozenNodes = holdService.getHeld(holdNodeRef);
|
List<NodeRef> frozenNodes = holdService.getHeld(holdNodeRef);
|
||||||
|
|
||||||
assertNotNull(frozenNodes);
|
assertNotNull(frozenNodes);
|
||||||
assertEquals(1, frozenNodes.size());
|
assertEquals(1, frozenNodes.size());
|
||||||
|
|
||||||
// Check the nodes are frozen
|
// Check the nodes are frozen
|
||||||
assertTrue(freezeService.isFrozen(recordOne));
|
assertTrue(freezeService.isFrozen(recordOne));
|
||||||
assertNotNull(freezeService.getFreezeDate(recordOne));
|
assertNotNull(freezeService.getFreezeDate(recordOne));
|
||||||
assertNotNull(freezeService.getFreezeInitiator(recordOne));
|
assertNotNull(freezeService.getFreezeInitiator(recordOne));
|
||||||
assertFalse(freezeService.isFrozen(recordTwo));
|
assertFalse(freezeService.isFrozen(recordTwo));
|
||||||
assertFalse(freezeService.isFrozen(recordThree));
|
assertFalse(freezeService.isFrozen(recordThree));
|
||||||
|
|
||||||
// Update the freeze reason
|
// Update the freeze reason
|
||||||
holdService.setHoldReason(holdNodeRef, "NewFreezeReason");
|
holdService.setHoldReason(holdNodeRef, "NewFreezeReason");
|
||||||
|
|
||||||
// Check the hold has been updated
|
// Check the hold has been updated
|
||||||
assertEquals("NewFreezeReason", holdService.getHoldReason(holdNodeRef));
|
assertEquals("NewFreezeReason", holdService.getHoldReason(holdNodeRef));
|
||||||
|
|
||||||
// Freeze a number of records
|
// Freeze a number of records
|
||||||
List<NodeRef> records = new ArrayList<>();
|
List<NodeRef> records = new ArrayList<>();
|
||||||
records.add(recordOne);
|
records.add(recordOne);
|
||||||
records.add(recordTwo);
|
records.add(recordTwo);
|
||||||
records.add(recordThree);
|
records.add(recordThree);
|
||||||
NodeRef newHold = holdService.createHold(filePlan, "Hold 102", "Freeze a set of nodes", null);
|
NodeRef newHold = holdService.createHold(filePlan, "Hold 102", "Freeze a set of nodes", null);
|
||||||
|
|
||||||
holdService.addToHold(newHold, records);
|
holdService.addToHold(newHold, records);
|
||||||
assertNotNull(newHold);
|
assertNotNull(newHold);
|
||||||
assertTrue(holdService.isHold(newHold));
|
assertTrue(holdService.isHold(newHold));
|
||||||
|
|
||||||
// Check the holds exist
|
// Check the holds exist
|
||||||
holdAssocs = holdService.getHolds(filePlan);
|
holdAssocs = holdService.getHolds(filePlan);
|
||||||
assertNotNull(holdAssocs);
|
assertNotNull(holdAssocs);
|
||||||
assertEquals(2, holdAssocs.size());
|
assertEquals(2, holdAssocs.size());
|
||||||
|
|
||||||
for (NodeRef hold : holdAssocs)
|
for (NodeRef hold : holdAssocs) {
|
||||||
{
|
String reason = holdService.getHoldReason(hold);
|
||||||
String reason = holdService.getHoldReason(hold);
|
if (reason.equals("Freeze a set of nodes")) {
|
||||||
if (reason.equals("Freeze a set of nodes"))
|
assertEquals(newHold, hold);
|
||||||
{
|
frozenNodes = holdService.getHeld(hold);
|
||||||
assertEquals(newHold, hold);
|
assertNotNull(frozenNodes);
|
||||||
frozenNodes = holdService.getHeld(hold);
|
assertEquals(3, frozenNodes.size());
|
||||||
assertNotNull(frozenNodes);
|
} else if (reason.equals("NewFreezeReason")) {
|
||||||
assertEquals(3, frozenNodes.size());
|
frozenNodes = holdService.getHeld(hold);
|
||||||
}
|
assertNotNull(frozenNodes);
|
||||||
else if (reason.equals("NewFreezeReason"))
|
assertEquals(1, frozenNodes.size());
|
||||||
{
|
} else {
|
||||||
frozenNodes = holdService.getHeld(hold);
|
throw new AlfrescoRuntimeException("The reason '" + reason + "' was not found in the existing holds.");
|
||||||
assertNotNull(frozenNodes);
|
}
|
||||||
assertEquals(1, frozenNodes.size());
|
}
|
||||||
}
|
|
||||||
else
|
// Check the nodes are frozen
|
||||||
{
|
final List<NodeRef> testRecords = Arrays.asList(new NodeRef[]{recordOne, recordTwo, recordThree});
|
||||||
throw new AlfrescoRuntimeException("The reason '" + reason + "' was not found in the existing holds.");
|
for (NodeRef nr : testRecords) {
|
||||||
}
|
assertTrue(freezeService.isFrozen(nr));
|
||||||
|
assertNotNull(freezeService.getFreezeDate(nr));
|
||||||
|
assertNotNull(freezeService.getFreezeInitiator(nr));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unfreeze a node
|
||||||
|
holdService.removeFromAllHolds(recordThree);
|
||||||
|
// Check the holds
|
||||||
|
holdAssocs = holdService.getHolds(filePlan);
|
||||||
|
assertNotNull(holdAssocs);
|
||||||
|
assertEquals(2, holdAssocs.size());
|
||||||
|
for (NodeRef hold : holdAssocs) {
|
||||||
|
String reason = holdService.getHoldReason(hold);
|
||||||
|
if (reason.equals("Freeze a set of nodes")) {
|
||||||
|
frozenNodes = holdService.getHeld(hold);
|
||||||
|
assertNotNull(frozenNodes);
|
||||||
|
assertEquals(2, frozenNodes.size());
|
||||||
|
} else if (reason.equals("NewFreezeReason")) {
|
||||||
|
frozenNodes = holdService.getHeld(hold);
|
||||||
|
assertNotNull(frozenNodes);
|
||||||
|
assertEquals(1, frozenNodes.size());
|
||||||
|
} else {
|
||||||
|
throw new AlfrescoRuntimeException("The reason '" + reason + "' was not found in the existing holds.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check the nodes are frozen
|
||||||
|
assertTrue(freezeService.isFrozen(recordOne));
|
||||||
|
assertNotNull(freezeService.getFreezeDate(recordOne));
|
||||||
|
assertNotNull(freezeService.getFreezeInitiator(recordOne));
|
||||||
|
assertTrue(freezeService.isFrozen(recordTwo));
|
||||||
|
assertNotNull(freezeService.getFreezeDate(recordTwo));
|
||||||
|
assertNotNull(freezeService.getFreezeInitiator(recordTwo));
|
||||||
|
assertFalse(freezeService.isFrozen(recordThree));
|
||||||
|
assertFalse(freezeService.isFrozen(recordFour));
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
// Check the nodes are frozen
|
|
||||||
final List<NodeRef> testRecords = Arrays.asList(new NodeRef[]{recordOne, recordTwo, recordThree});
|
|
||||||
for (NodeRef nr : testRecords)
|
|
||||||
{
|
|
||||||
assertTrue(freezeService.isFrozen(nr));
|
|
||||||
assertNotNull(freezeService.getFreezeDate(nr));
|
|
||||||
assertNotNull(freezeService.getFreezeInitiator(nr));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Unfreeze a node
|
|
||||||
holdService.removeFromAllHolds(recordThree);
|
|
||||||
// Check the holds
|
|
||||||
holdAssocs = holdService.getHolds(filePlan);
|
|
||||||
assertNotNull(holdAssocs);
|
|
||||||
assertEquals(2, holdAssocs.size());
|
|
||||||
for (NodeRef hold : holdAssocs)
|
|
||||||
{
|
|
||||||
String reason = holdService.getHoldReason(hold);
|
|
||||||
if (reason.equals("Freeze a set of nodes"))
|
|
||||||
{
|
|
||||||
frozenNodes = holdService.getHeld(hold);
|
|
||||||
assertNotNull(frozenNodes);
|
|
||||||
assertEquals(2, frozenNodes.size());
|
|
||||||
}
|
|
||||||
else if (reason.equals("NewFreezeReason"))
|
|
||||||
{
|
|
||||||
frozenNodes = holdService.getHeld(hold);
|
|
||||||
assertNotNull(frozenNodes);
|
|
||||||
assertEquals(1, frozenNodes.size());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
throw new AlfrescoRuntimeException("The reason '" + reason + "' was not found in the existing holds.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check the nodes are frozen
|
|
||||||
assertTrue(freezeService.isFrozen(recordOne));
|
|
||||||
assertNotNull(freezeService.getFreezeDate(recordOne));
|
|
||||||
assertNotNull(freezeService.getFreezeInitiator(recordOne));
|
|
||||||
assertTrue(freezeService.isFrozen(recordTwo));
|
|
||||||
assertNotNull(freezeService.getFreezeDate(recordTwo));
|
|
||||||
assertNotNull(freezeService.getFreezeInitiator(recordTwo));
|
|
||||||
assertFalse(freezeService.isFrozen(recordThree));
|
|
||||||
assertFalse(freezeService.isFrozen(recordFour));
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
//Splitting transaction to fix onCreateNodePolicy issue where there was a node not found exception
|
//Splitting transaction to fix onCreateNodePolicy issue where there was a node not found exception
|
||||||
doTestInTransaction(new Test<Void>()
|
doTestInTransaction(new Test<Void>() {
|
||||||
{
|
@Override
|
||||||
@Override
|
public Void run() throws Exception {
|
||||||
public Void run() throws Exception
|
// Relinquish the first hold
|
||||||
{
|
NodeRef holdNodeRef = holdAssocs.iterator().next();
|
||||||
// Relinquish the first hold
|
holdService.deleteHold(holdNodeRef);
|
||||||
NodeRef holdNodeRef = holdAssocs.iterator().next();
|
|
||||||
holdService.deleteHold(holdNodeRef);
|
|
||||||
|
|
||||||
// Check the existing hold
|
// Check the existing hold
|
||||||
holdAssocs = holdService.getHolds(filePlan);
|
holdAssocs = holdService.getHolds(filePlan);
|
||||||
assertNotNull(holdAssocs);
|
assertNotNull(holdAssocs);
|
||||||
assertEquals(1, holdAssocs.size());
|
assertEquals(1, holdAssocs.size());
|
||||||
|
|
||||||
// Relinquish the second hold
|
// Relinquish the second hold
|
||||||
holdNodeRef = holdAssocs.iterator().next();
|
holdNodeRef = holdAssocs.iterator().next();
|
||||||
holdService.removeFromAllHolds(holdService.getHeld(holdNodeRef));
|
holdService.removeFromAllHolds(holdService.getHeld(holdNodeRef));
|
||||||
|
|
||||||
// hold is not automatically removed
|
// hold is not automatically removed
|
||||||
holdAssocs = holdService.getHolds(filePlan);
|
holdAssocs = holdService.getHolds(filePlan);
|
||||||
assertEquals(1, holdAssocs.size());
|
assertEquals(1, holdAssocs.size());
|
||||||
|
|
||||||
// delete hold
|
|
||||||
holdService.deleteHold(holdNodeRef);
|
|
||||||
|
|
||||||
holdAssocs = holdService.getHolds(filePlan);
|
// delete hold
|
||||||
assertEquals(0, holdAssocs.size());
|
holdService.deleteHold(holdNodeRef);
|
||||||
|
|
||||||
// Check the nodes are unfrozen
|
holdAssocs = holdService.getHolds(filePlan);
|
||||||
assertFalse(freezeService.isFrozen(recordOne));
|
assertEquals(0, holdAssocs.size());
|
||||||
assertFalse(freezeService.isFrozen(recordTwo));
|
|
||||||
assertFalse(freezeService.isFrozen(recordThree));
|
|
||||||
assertFalse(freezeService.isFrozen(recordFour));
|
|
||||||
//assertFalse(freezeService.hasFrozenChildren(rmFolder));
|
|
||||||
|
|
||||||
// Test freezing nodes, adding them to an existing hold
|
// Check the nodes are unfrozen
|
||||||
NodeRef hold = holdService.createHold(filePlan, "hold 1", "AnotherFreezeReason", "description");
|
assertFalse(freezeService.isFrozen(recordOne));
|
||||||
holdService.addToHold(hold, recordFour);
|
assertFalse(freezeService.isFrozen(recordTwo));
|
||||||
holdService.addToHold(hold, recordOne);
|
assertFalse(freezeService.isFrozen(recordThree));
|
||||||
List<NodeRef> nodes = new ArrayList<>();
|
assertFalse(freezeService.isFrozen(recordFour));
|
||||||
nodes.add(recordTwo);
|
//assertFalse(freezeService.hasFrozenChildren(rmFolder));
|
||||||
nodes.add(recordThree);
|
|
||||||
holdService.addToHold(hold, nodes);
|
|
||||||
//assertTrue(freezeService.hasFrozenChildren(rmFolder));
|
|
||||||
// Check the hold
|
|
||||||
holdAssocs = holdService.getHolds(filePlan);
|
|
||||||
assertNotNull(holdAssocs);
|
|
||||||
assertEquals(1, holdAssocs.size());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
//Splitting transaction to fix onCreateNodePolicy issue where there was a node not found exception
|
|
||||||
doTestInTransaction(new Test<Void>()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public Void run() throws Exception
|
|
||||||
{
|
|
||||||
// Relinquish the first hold
|
|
||||||
holdService.deleteHold(holdAssocs.iterator().next());
|
|
||||||
|
|
||||||
// Check the nodes are unfrozen
|
// Test freezing nodes, adding them to an existing hold
|
||||||
assertFalse(freezeService.isFrozen(recordOne));
|
NodeRef hold = holdService.createHold(filePlan, "hold 1", "AnotherFreezeReason", "description");
|
||||||
assertFalse(freezeService.isFrozen(recordTwo));
|
holdService.addToHold(hold, recordFour);
|
||||||
assertFalse(freezeService.isFrozen(recordThree));
|
holdService.addToHold(hold, recordOne);
|
||||||
assertFalse(freezeService.isFrozen(recordFour));
|
List<NodeRef> nodes = new ArrayList<>();
|
||||||
// assertFalse(freezeService.hasFrozenChildren(rmFolder));
|
nodes.add(recordTwo);
|
||||||
|
nodes.add(recordThree);
|
||||||
|
holdService.addToHold(hold, nodes);
|
||||||
|
//assertTrue(freezeService.hasFrozenChildren(rmFolder));
|
||||||
|
// Check the hold
|
||||||
|
holdAssocs = holdService.getHolds(filePlan);
|
||||||
|
assertNotNull(holdAssocs);
|
||||||
|
assertEquals(1, holdAssocs.size());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//Splitting transaction to fix onCreateNodePolicy issue where there was a node not found exception
|
||||||
|
doTestInTransaction(new Test<Void>() {
|
||||||
|
@Override
|
||||||
|
public Void run() throws Exception {
|
||||||
|
// Relinquish the first hold
|
||||||
|
holdService.deleteHold(holdAssocs.iterator().next());
|
||||||
|
|
||||||
return null;
|
// Check the nodes are unfrozen
|
||||||
}
|
assertFalse(freezeService.isFrozen(recordOne));
|
||||||
});
|
assertFalse(freezeService.isFrozen(recordTwo));
|
||||||
}
|
assertFalse(freezeService.isFrozen(recordThree));
|
||||||
|
assertFalse(freezeService.isFrozen(recordFour));
|
||||||
|
// assertFalse(freezeService.hasFrozenChildren(rmFolder));
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
doTestInTransaction(new Test<Void>() {
|
||||||
|
@Override
|
||||||
|
public Void run() throws Exception {
|
||||||
|
NodeRef hold101 = holdService.createHold(filePlan, "freezename 101", "FreezeReason", null);
|
||||||
|
// Freeze a record folder
|
||||||
|
assertNotNull(hold101);
|
||||||
|
holdService.addToHold(hold101, rmFolder);
|
||||||
|
assertTrue(recordFolderService.isRecordFolder(rmFolder));
|
||||||
|
assertTrue(freezeService.isFrozenOrHasFrozenChildren(rmFolder));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
doTestInTransaction(new Test<Void>() {
|
||||||
|
@Override
|
||||||
|
public Void run() throws Exception {
|
||||||
|
NodeRef hold101 = holdService.createHold(filePlan, "freezename 101", "FreezeReason", null);
|
||||||
|
// Freeze a record inside a record folder
|
||||||
|
assertNotNull(hold101);
|
||||||
|
holdService.addToHold(hold101, recordThree);
|
||||||
|
assertTrue(recordService.isRecord(rmFolder));
|
||||||
|
assertTrue(freezeService.isFrozenOrHasFrozenChildren(rmFolder));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
5
amps/module-info.java
Normal file
5
amps/module-info.java
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
module simple.lombok {
|
||||||
|
requires static lombok;
|
||||||
|
requires java.logging;
|
||||||
|
|
||||||
|
}
|
Reference in New Issue
Block a user