summaryrefslogtreecommitdiffstats
path: root/dcaedt_be/src/main/java/org/onap/sdc/dcae/rule/editor/validators/RuleValidator.java
diff options
context:
space:
mode:
Diffstat (limited to 'dcaedt_be/src/main/java/org/onap/sdc/dcae/rule/editor/validators/RuleValidator.java')
-rw-r--r--dcaedt_be/src/main/java/org/onap/sdc/dcae/rule/editor/validators/RuleValidator.java56
1 files changed, 56 insertions, 0 deletions
diff --git a/dcaedt_be/src/main/java/org/onap/sdc/dcae/rule/editor/validators/RuleValidator.java b/dcaedt_be/src/main/java/org/onap/sdc/dcae/rule/editor/validators/RuleValidator.java
new file mode 100644
index 0000000..371d1e9
--- /dev/null
+++ b/dcaedt_be/src/main/java/org/onap/sdc/dcae/rule/editor/validators/RuleValidator.java
@@ -0,0 +1,56 @@
+package org.onap.sdc.dcae.rule.editor.validators;
+
+import org.onap.sdc.dcae.composition.restmodels.ruleeditor.ActionTypeEnum;
+import org.onap.sdc.dcae.composition.restmodels.ruleeditor.BaseAction;
+import org.onap.sdc.dcae.composition.restmodels.ruleeditor.BaseCondition;
+import org.onap.sdc.dcae.composition.restmodels.ruleeditor.Rule;
+import org.onap.sdc.dcae.errormng.ActionStatus;
+import org.onap.sdc.dcae.errormng.ErrConfMgr;
+import org.onap.sdc.dcae.errormng.ResponseFormat;
+import org.onap.sdc.dcae.errormng.ServiceException;
+import org.onap.sdc.dcae.rule.editor.enums.RuleEditorElementType;
+import org.onap.sdc.dcae.rule.editor.utils.ValidationUtils;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+public class RuleValidator implements IRuleElementValidator<Rule> {
+
+ private static RuleValidator ruleValidator = new RuleValidator();
+
+ public static RuleValidator getInstance() {
+ return ruleValidator;
+ }
+
+ private RuleValidator(){}
+
+
+ public boolean validate(Rule rule, List<ResponseFormat> errors) {
+ boolean valid = true;
+ if(rule.isConditionalRule())
+ valid = getConditionValidator(rule.getCondition()).validate(rule.getCondition(), errors);
+ if(!ValidationUtils.validateNotEmpty(rule.getDescription())) {
+ valid = false;
+ errors.add(ErrConfMgr.INSTANCE.getResponseFormat(ActionStatus.MISSING_RULE_DESCRIPTION, null, null));
+ }
+ if(CollectionUtils.isEmpty(rule.getActions())) {
+ valid = false;
+ errors.add(ErrConfMgr.INSTANCE.getResponseFormat(ActionStatus.MISSING_ACTION, null, null));
+ } else {
+ valid = rule.getActions().stream()
+ .map(a -> getActionValidator(a).validate(a, errors))
+ .reduce(true, (x,y) -> x && y) && valid;
+ }
+ return valid;
+ }
+
+
+ private IRuleElementValidator getActionValidator(BaseAction action) {
+ ActionTypeEnum type = ActionTypeEnum.getTypeByName(action.getActionType());
+ return RuleEditorElementType.getElementTypeByName(type.getType()).getValidator();
+ }
+
+ private IRuleElementValidator getConditionValidator(BaseCondition condition) {
+ return RuleEditorElementType.getElementTypeByName(condition.getClass().getSimpleName()).getValidator();
+ }
+}