1 package org.onap.sdc.dcae.rule.editor.validators;
3 import org.onap.sdc.dcae.composition.restmodels.ruleeditor.ActionTypeEnum;
4 import org.onap.sdc.dcae.composition.restmodels.ruleeditor.BaseAction;
5 import org.onap.sdc.dcae.composition.restmodels.ruleeditor.BaseCondition;
6 import org.onap.sdc.dcae.composition.restmodels.ruleeditor.Rule;
7 import org.onap.sdc.dcae.errormng.ActionStatus;
8 import org.onap.sdc.dcae.errormng.ErrConfMgr;
9 import org.onap.sdc.dcae.errormng.ResponseFormat;
10 import org.onap.sdc.dcae.errormng.ServiceException;
11 import org.onap.sdc.dcae.rule.editor.enums.RuleEditorElementType;
12 import org.onap.sdc.dcae.rule.editor.utils.ValidationUtils;
13 import org.springframework.util.CollectionUtils;
15 import java.util.List;
17 public class RuleValidator implements IRuleElementValidator<Rule> {
19 private static RuleValidator ruleValidator = new RuleValidator();
21 public static RuleValidator getInstance() {
25 private RuleValidator(){}
28 public boolean validate(Rule rule, List<ResponseFormat> errors) {
30 if(rule.isConditionalRule())
31 valid = getConditionValidator(rule.getCondition()).validate(rule.getCondition(), errors);
32 if(!ValidationUtils.validateNotEmpty(rule.getDescription())) {
34 errors.add(ErrConfMgr.INSTANCE.getResponseFormat(ActionStatus.MISSING_RULE_DESCRIPTION, null, null));
36 if(CollectionUtils.isEmpty(rule.getActions())) {
38 errors.add(ErrConfMgr.INSTANCE.getResponseFormat(ActionStatus.MISSING_ACTION, null, null));
40 valid = rule.getActions().stream()
41 .map(a -> getActionValidator(a).validate(a, errors))
42 .reduce(true, (x,y) -> x && y) && valid;
48 private IRuleElementValidator getActionValidator(BaseAction action) {
49 ActionTypeEnum type = ActionTypeEnum.getTypeByName(action.getActionType());
50 return RuleEditorElementType.getElementTypeByName(type.getType()).getValidator();
53 private IRuleElementValidator getConditionValidator(BaseCondition condition) {
54 return RuleEditorElementType.getElementTypeByName(condition.getClass().getSimpleName()).getValidator();