From d8ab355a0520c7eee20a321af3da197e021d5585 Mon Sep 17 00:00:00 2001 From: Tuna Aksoy Date: Tue, 13 Nov 2012 15:53:53 +0000 Subject: [PATCH] FreezeService code refactoring git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@43578 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rm-capabilities-condition-context.xml | 1 + .../rm-ui-evaluators-context.xml | 1 + .../RecordsManagementService.java | 7 ++++ .../AbstractCapabilityCondition.java | 10 +++++ .../condition/FrozenCapabilityCondition.java | 4 +- .../condition/FrozenOrHoldCondition.java | 2 +- .../freeze/FreezeService.java | 17 +++++++++ .../freeze/FreezeServiceImpl.java | 37 ++++++++++++++++++- .../jscript/app/BaseEvaluator.java | 12 ++++++ .../app/evaluator/FrozenEvaluator.java | 2 +- 10 files changed, 87 insertions(+), 6 deletions(-) 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); } }