re base code
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / impl / utils / PolicyTypeImportUtils.java
1 package org.openecomp.sdc.be.components.impl.utils;
2
3 import org.openecomp.sdc.be.dao.utils.MapUtil;
4 import org.openecomp.sdc.be.model.PolicyTypeDefinition;
5 import org.openecomp.sdc.be.model.PropertyDefinition;
6
7 import java.util.List;
8 import java.util.Map;
9 import java.util.Objects;
10
11 import static org.apache.commons.collections.CollectionUtils.isNotEmpty;
12 import static org.springframework.util.CollectionUtils.isEmpty;
13
14 public class PolicyTypeImportUtils {
15
16     private PolicyTypeImportUtils() {
17     }
18
19     public static boolean isPolicyTypesEquals(PolicyTypeDefinition pt1, PolicyTypeDefinition pt2) {
20         if (pt1 == pt2) {
21             return true;
22         }
23         if (pt1 == null || pt2 == null) {
24             return false;
25         }
26         return Objects.equals(pt1.getType(), pt2.getType()) &&
27                 Objects.equals(pt1.getName(), pt2.getName()) &&
28                 Objects.equals(pt1.getIcon(), pt2.getIcon()) &&
29                 Objects.equals(pt1.getVersion(), pt2.getVersion()) &&
30                 Objects.equals(pt1.getDerivedFrom(), pt2.getDerivedFrom()) &&
31                 Objects.equals(pt1.getTargets(), pt2.getTargets()) &&
32                 Objects.equals(pt1.getMetadata(), pt2.getMetadata()) &&
33                 Objects.equals(pt1.getDescription(), pt2.getDescription()) &&
34                 PolicyTypeImportUtils.isPolicyPropertiesEquals(pt1.getProperties(), pt2.getProperties());
35     }
36
37     private static boolean isPolicyPropertiesEquals(List<PropertyDefinition> pt1Props, List<PropertyDefinition> pt2Props) {
38         if (pt1Props == pt2Props) {
39             return true;
40         }
41         if (pt1Props == null && isEmpty(pt2Props) || pt2Props == null && isEmpty(pt1Props)) {
42             return true;
43         }
44         if (isPropertiesListSizesNotEquals(pt1Props, pt2Props)) {
45             return false;
46         }
47         Map<String, PropertyDefinition> pt1PropsByName = MapUtil.toMap(pt1Props, PropertyDefinition::getName);
48         long numberOfEqualsProperties = pt2Props.stream().filter(pt2Prop -> policyPropertyEquals(pt1PropsByName.get(pt2Prop.getName()), pt2Prop)).count();
49         return numberOfEqualsProperties == pt1Props.size();
50     }
51
52     private static boolean policyPropertyEquals(PropertyDefinition pt1Prop, PropertyDefinition pt2Prop) {
53         if (pt1Prop == pt2Prop) {
54             return true;
55         }
56         if (pt1Prop == null || pt2Prop == null) {
57             return false;
58         }
59         return Objects.equals(pt1Prop.getDefaultValue(), pt2Prop.getDefaultValue()) &&
60                Objects.equals(pt1Prop.isDefinition(), pt2Prop.isDefinition()) &&
61                Objects.equals(pt1Prop.getDescription(), pt2Prop.getDescription()) &&
62                Objects.equals(pt1Prop.isPassword(), pt2Prop.isPassword()) &&
63                Objects.equals(pt1Prop.isRequired(), pt2Prop.isRequired()) &&
64                Objects.equals(pt1Prop.getSchemaType(), pt2Prop.getSchemaType()) &&
65                Objects.equals(pt1Prop.getType(), pt2Prop.getType());
66     }
67
68     private static boolean isPropertiesListSizesNotEquals(List<PropertyDefinition> pt1Props, List<PropertyDefinition> pt2Props) {
69         return isEmpty(pt1Props) && isNotEmpty(pt2Props) ||
70                isEmpty(pt2Props) && isNotEmpty(pt1Props) ||
71                pt1Props.size() != pt2Props.size();
72     }
73
74 }