diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-condition-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-condition-context.xml
index 3c8fc8f4e9..fa32d07589 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-condition-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/capability/rm-capabilities-condition-context.xml
@@ -10,6 +10,7 @@
+
+
hold node references
+ */
+ Set getHolds(NodeRef filePlan);
+
+ /**
+ * Checks whether or not the given node has frozen children
+ *
+ * @param nodeRef The nodeRef for which will be checked if it has frozen children
+ * @return true if the given nodeRef has frozen children, false otherwise
+ */
+ boolean hasFrozenChildren(NodeRef nodeRef);
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/freeze/FreezeServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/freeze/FreezeServiceImpl.java
index 1db03c4904..dda6ab853f 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/freeze/FreezeServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/freeze/FreezeServiceImpl.java
@@ -138,7 +138,7 @@ public class FreezeServiceImpl implements FreezeService,
if (nodeService.exists(nodeRef) == true &&
recordsManagementService.isFilePlanComponent(nodeRef) == true)
{
- if (recordsManagementService.isFrozen(nodeRef) == true)
+ if (isFrozen(nodeRef) == true)
{
// never allowed to delete a frozen node
throw new AccessDeniedException("Frozen nodes can not be deleted.");
@@ -165,7 +165,7 @@ public class FreezeServiceImpl implements FreezeService,
if (assoc.isPrimary() == true)
{
NodeRef nodeRef = assoc.getChildRef();
- if (recordsManagementService.isFrozen(nodeRef) == true)
+ if (isFrozen(nodeRef) == true)
{
// never allowed to delete a node with a frozen child
throw new AccessDeniedException("Can not delete node, because it contains a frozen child node.");
@@ -456,6 +456,39 @@ public class FreezeServiceImpl implements FreezeService,
nodeService.setProperty(hold, PROP_HOLD_REASON, reason);
}
+ /**
+ * @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#getHold(org.alfresco.service.cmr.repository.NodeRef)
+ */
+ @Override
+ public Set getHolds(NodeRef filePlan)
+ {
+ ParameterCheck.mandatory("filePlan", filePlan);
+
+ Set holds = new HashSet();
+
+ List childAssocs = nodeService.getChildAssocs(filePlan, ASSOC_HOLDS, RegexQNamePattern.MATCH_ALL);
+ if (childAssocs != null && !childAssocs.isEmpty())
+ {
+ for (ChildAssociationRef childAssoc : childAssocs)
+ {
+ holds.add(childAssoc.getChildRef());
+ }
+ }
+
+ return holds;
+ }
+
+ /**
+ * @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#hasFrozenChildren(org.alfresco.service.cmr.repository.NodeRef)
+ */
+ @Override
+ public boolean hasFrozenChildren(NodeRef nodeRef)
+ {
+ ParameterCheck.mandatory("nodeRef", nodeRef);
+
+ return getFrozen(nodeRef).size() > 0 ? true : false;
+ }
+
/**
* Creates a hold using the given nodeRef and reason
*
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/BaseEvaluator.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/BaseEvaluator.java
index 014f4ad8e5..a99ca3c036 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/BaseEvaluator.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/BaseEvaluator.java
@@ -27,6 +27,7 @@ import org.alfresco.module.org_alfresco_module_rm.FilePlanComponentKind;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.capability.Capability;
import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
+import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
@@ -58,6 +59,9 @@ public abstract class BaseEvaluator implements RecordsManagementModel
/** Capability service */
protected CapabilityService capabilityService;
+ /** Freeze service */
+ protected FreezeService freezeService;
+
/** File plan component kinds */
protected Set kinds;
@@ -104,6 +108,14 @@ public abstract class BaseEvaluator implements RecordsManagementModel
this.capabilityService = capabilityService;
}
+ /**
+ * @param freezeService freeze service
+ */
+ public void setFreezeService(FreezeService freezeService)
+ {
+ this.freezeService = freezeService;
+ }
+
/**
* @param name
*/
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/FrozenEvaluator.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/FrozenEvaluator.java
index 3159c746b0..fefca5c977 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/FrozenEvaluator.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/jscript/app/evaluator/FrozenEvaluator.java
@@ -29,6 +29,6 @@ public class FrozenEvaluator extends BaseEvaluator
@Override
protected boolean evaluateImpl(NodeRef nodeRef)
{
- return recordsManagementService.isFrozen(nodeRef);
+ return freezeService.isFrozen(nodeRef);
}
}