DCAE-D be initial commit
[sdc/dcae-d/dt-be-main.git] / dcaedt_be / src / main / java / org / onap / sdc / dcae / rule / editor / validators / MapActionValidator.java
1 package org.onap.sdc.dcae.rule.editor.validators;
2
3 import org.onap.sdc.dcae.composition.restmodels.ruleeditor.MapAction;
4 import org.onap.sdc.dcae.errormng.ActionStatus;
5 import org.onap.sdc.dcae.errormng.ErrConfMgr;
6 import org.onap.sdc.dcae.errormng.ResponseFormat;
7 import org.onap.sdc.dcae.rule.editor.utils.ValidationUtils;
8 import org.springframework.util.CollectionUtils;
9
10 import java.util.List;
11
12 public class MapActionValidator extends ActionValidator<MapAction> {
13
14         private static MapActionValidator mapActionValidator = new MapActionValidator();
15
16         public static MapActionValidator getInstance() {
17                 return mapActionValidator;
18         }
19
20         private MapActionValidator(){}
21
22         @Override
23         public boolean validate(MapAction action, List<ResponseFormat> errors) {
24                 boolean valid = super.validate(action, errors);
25                 if (action.getMap() == null || CollectionUtils.isEmpty(action.getMapValues())) {
26                         valid = false;
27                         errors.add(ErrConfMgr.INSTANCE.getResponseFormat(ActionStatus.MISSING_ENTRY, null, action.getTarget()));
28                 } else {
29                         if (action.mapHasDefault() && !ValidationUtils.validateNotEmpty(action.getMapDefaultValue())) {
30                                 valid = false;
31                                 errors.add(ErrConfMgr.INSTANCE.getResponseFormat(ActionStatus.MISSING_DEFAULT_VALUE, null, action.getTarget()));
32                         }
33                         try {
34                                 if (!validateMapValues(action)) {
35                                         valid = false;
36                                         errors.add(ErrConfMgr.INSTANCE.getResponseFormat(ActionStatus.MISSING_ENTRY, null, action.getTarget()));
37                                 }
38                         } catch (IllegalStateException err) {
39                                 valid = false;
40                                 errors.add(ErrConfMgr.INSTANCE.getResponseFormat(ActionStatus.DUPLICATE_KEY, null));
41                         }
42                 }
43                 return valid;
44         }
45
46         private boolean validateMapValues(MapAction action) {
47                 return action.transformToMap().entrySet().stream().noneMatch(p -> !ValidationUtils.validateNotEmpty(p.getKey()) || !ValidationUtils.validateNotEmpty(p.getValue()));
48         }
49 }