mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
ACS-3214 Update rules. (#1254)
This commit is contained in:
@@ -74,6 +74,17 @@ public interface Rules
|
||||
*/
|
||||
List<Rule> createRules(String folderNodeId, String ruleSetId, List<Rule> rule);
|
||||
|
||||
/**
|
||||
* Update a rule.
|
||||
*
|
||||
* @param folderNodeId The id of a folder.
|
||||
* @param ruleSetId The id of a rule set within the folder (or "_default_" to use the default rule set for the folder).
|
||||
* @param ruleId The rule id.
|
||||
* @param rule The new version of the rule.
|
||||
* @return The newly updated rule.
|
||||
*/
|
||||
Rule updateRuleById(String folderNodeId, String ruleSetId, String ruleId, Rule rule);
|
||||
|
||||
/**
|
||||
* Delete rule for rule's ID and check associations with folder node and rule set node
|
||||
*
|
||||
|
@@ -30,6 +30,7 @@ import static org.alfresco.service.cmr.security.AccessStatus.ALLOWED;
|
||||
import static org.alfresco.service.cmr.security.PermissionService.CHANGE_PERMISSIONS;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -49,10 +50,13 @@ import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.rule.RuleService;
|
||||
import org.alfresco.service.cmr.security.PermissionService;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@Experimental
|
||||
public class RulesImpl implements Rules
|
||||
{
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(RulesImpl.class);
|
||||
private static final String RULE_SET_EXPECTED_TYPE_NAME = "rule set";
|
||||
|
||||
private Nodes nodes;
|
||||
@@ -99,6 +103,18 @@ public class RulesImpl implements Rules
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Rule updateRuleById(String folderNodeId, String ruleSetId, String ruleId, Rule rule)
|
||||
{
|
||||
LOGGER.debug("Updating rule in folder {}, rule set {}, rule {} to {}", folderNodeId, ruleSetId, ruleId, rule);
|
||||
|
||||
NodeRef folderNodeRef = validateFolderNode(folderNodeId, true);
|
||||
NodeRef ruleSetNodeRef = validateRuleSetNode(ruleSetId, folderNodeRef);
|
||||
validateRuleNode(ruleId, ruleSetNodeRef);
|
||||
|
||||
return Rule.from(ruleService.saveRule(folderNodeRef, rule.toServiceModel(nodes)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteRuleById(String folderNodeId, String ruleSetId, String ruleId)
|
||||
{
|
||||
|
@@ -47,8 +47,12 @@ import java.util.List;
|
||||
*/
|
||||
@Experimental
|
||||
@RelationshipResource(name = "rules", entityResource = NodeRuleSetsRelation.class, title = "Folder node rules")
|
||||
public class NodeRulesRelation implements RelationshipResourceAction.Read<Rule>, RelationshipResourceAction.ReadById<Rule>,
|
||||
RelationshipResourceAction.Create<Rule>, RelationshipResourceAction.Delete, InitializingBean
|
||||
public class NodeRulesRelation implements RelationshipResourceAction.Read<Rule>,
|
||||
RelationshipResourceAction.ReadById<Rule>,
|
||||
RelationshipResourceAction.Create<Rule>,
|
||||
RelationshipResourceAction.Update<Rule>,
|
||||
RelationshipResourceAction.Delete,
|
||||
InitializingBean
|
||||
{
|
||||
|
||||
private Rules rules;
|
||||
@@ -107,6 +111,8 @@ public class NodeRulesRelation implements RelationshipResourceAction.Read<Rule>,
|
||||
|
||||
/**
|
||||
* Create one or more rules inside a given folder and rule set.
|
||||
* <p>
|
||||
* POST /nodes/{folderNodeId}/rule-sets/{ruleSetId}/rules
|
||||
*
|
||||
* @param folderNodeId The folder in which to create the rule.
|
||||
* @param ruleList The list of rules to create.
|
||||
@@ -126,9 +132,28 @@ public class NodeRulesRelation implements RelationshipResourceAction.Read<Rule>,
|
||||
return rules.createRules(folderNodeId, ruleSetId, ruleList);
|
||||
}
|
||||
|
||||
public void setRules(Rules rules)
|
||||
/**
|
||||
* Update the specified folder rule.
|
||||
* <p>
|
||||
* PUT /nodes/{folderNodeId}/rule-sets/{ruleSetId}/rules/{ruleId}
|
||||
*
|
||||
* @param folderNodeId The id of the folder containing the rule.
|
||||
* @param rule The updated rule.
|
||||
* @param parameters List of parameters including the rule set id and rule id.
|
||||
* @return The updated rule.
|
||||
* @throws RelationshipResourceNotFoundException in case resource was not found
|
||||
*/
|
||||
@WebApiDescription (
|
||||
title = "Update folder node rule",
|
||||
description = "Update a single rule definition for given node's, rule set's and rule's IDs",
|
||||
successStatus = HttpServletResponse.SC_OK
|
||||
)
|
||||
@Override
|
||||
public Rule update(String folderNodeId, Rule rule, Parameters parameters)
|
||||
{
|
||||
this.rules = rules;
|
||||
String ruleSetId = parameters.getRelationshipId();
|
||||
String ruleId = parameters.getRelationship2Id();
|
||||
return rules.updateRuleById(folderNodeId, ruleSetId, ruleId, rule);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -152,4 +177,9 @@ public class NodeRulesRelation implements RelationshipResourceAction.Read<Rule>,
|
||||
final String ruleId = parameters.getRelationship2Id();
|
||||
rules.deleteRuleById(folderNodeId, ruleSetId, ruleId);
|
||||
}
|
||||
|
||||
public void setRules(Rules rules)
|
||||
{
|
||||
this.rules = rules;
|
||||
}
|
||||
}
|
||||
|
@@ -79,6 +79,7 @@ public class ResourceWebScriptPut extends AbstractResourceWebScript implements P
|
||||
final Map<String, String> resourceVars = locator.parseTemplateVars(req.getServiceMatch().getTemplateVars());
|
||||
final String entityId = resourceVars.get(ResourceLocator.ENTITY_ID);
|
||||
final String relationshipId = resourceVars.get(ResourceLocator.RELATIONSHIP_ID);
|
||||
final String relationship2Id = resourceVars.get(ResourceLocator.RELATIONSHIP2_ID);
|
||||
|
||||
final RecognizedParams params = getRecognizedParams(req);
|
||||
final ResourceOperation operation = resourceMeta.getOperation(HttpMethod.PUT);
|
||||
@@ -99,9 +100,16 @@ public class ResourceWebScriptPut extends AbstractResourceWebScript implements P
|
||||
if (StringUtils.isBlank(relationshipId))
|
||||
{
|
||||
throw new UnsupportedResourceOperationException("PUT is executed against the instance URL");
|
||||
} else
|
||||
}
|
||||
Object putRel = extractJsonContent(req, assistant.getJsonHelper(), resourceMeta.getObjectType(operation));
|
||||
if (StringUtils.isNotBlank(relationship2Id))
|
||||
{
|
||||
ResourceWebScriptHelper.setUniqueId(putRel, relationship2Id);
|
||||
return Params.valueOf(false, entityId, relationshipId, relationship2Id,
|
||||
putRel, null, null, params, null, req);
|
||||
}
|
||||
else
|
||||
{
|
||||
Object putRel = extractJsonContent(req, assistant.getJsonHelper(), resourceMeta.getObjectType(operation));
|
||||
ResourceWebScriptHelper.setUniqueId(putRel,relationshipId);
|
||||
return Params.valueOf(entityId, params, putRel, req);
|
||||
}
|
||||
|
Reference in New Issue
Block a user