ALF-2036 : Can't link to a folder due to fodler already containing rules (but it doesn't)

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@19563 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Roy Wetherall
2010-03-24 19:44:31 +00:00
parent 7f4810c32d
commit 27d6bddcf5
2 changed files with 19 additions and 2 deletions

View File

@@ -29,6 +29,7 @@ import org.alfresco.service.cmr.action.ParameterDefinition;
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.rule.Rule;
import org.alfresco.service.cmr.rule.RuleService;
/**
@@ -87,8 +88,19 @@ public class LinkRules extends ActionExecuterAbstractBase
NodeRef linkedToNode = ((RuleService)ruleService).getLinkedToRuleNode(actionedUponNodeRef);
if (linkedToNode == null)
{
// Can't link a node if it already has rules
throw new AlfrescoRuntimeException("The current folder has rules and can not be linked to another folder.");
// if the node has no rules we can delete the folder ready to link
List<Rule> rules = ((RuleService)ruleService).getRules(actionedUponNodeRef, false);
if (rules.isEmpty() == false)
{
// Can't link a node if it already has rules
throw new AlfrescoRuntimeException("The current folder has rules and can not be linked to another folder.");
}
else
{
// Delete the rules system folder
NodeRef ruleFolder = ruleService.getSavedRuleFolderAssoc(actionedUponNodeRef).getChildRef();
nodeService.deleteNode(ruleFolder);
}
}
else
{