Added oparent to sdc main
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / utils / MapUtils.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.sdc.be.components.utils;
22
23 import java.util.List;
24 import java.util.Map;
25
26 public class MapUtils {
27   public static boolean compareMaps(Map<String, Object> source, Map<String, Object> target) {
28     if (source == null && target == null) {
29       return true;
30     }
31     if ((source == null && target != null) || source != null && target == null
32         || source.keySet().size() != target.keySet().size()) {
33       return false;
34     }
35
36     for (Map.Entry<String, Object> entry : source.entrySet()) {
37       Object sourceObj = entry.getValue();
38       Object targetObj = target.get(entry.getKey());
39       if ((sourceObj == null && targetObj != null) || (sourceObj != null && targetObj == null)) {
40         return false;
41       }
42       if (!handleSourceAndTargetObjects(sourceObj, targetObj)) {
43         return false;
44       }
45     }
46     return true;
47
48   }
49
50   public static boolean compareLists(List<Object> source, List<Object> target) {
51     if (source == null && target == null) {
52       return true;
53     }
54     if ((source == null && target != null) || source != null && target == null ||
55         source.size() != target.size()) {
56       return false;
57     }
58     for (int i = 0; i < source.size(); i++) {
59       Object sourceObj = source.get(i);
60       Object targetObj = target.get(i);
61       if ((sourceObj == null && targetObj != null) || sourceObj != null && targetObj == null) {
62         return false;
63       }
64       if (!handleSourceAndTargetObjects(sourceObj, targetObj)) {
65         return false;
66       }
67     }
68     return true;
69   }
70
71   public static boolean handleSourceAndTargetObjects(Object sourceObj, Object targetObj) {
72
73     if (sourceObj == null && targetObj == null) {
74       return true;
75     }
76
77     if (sourceObj == null && targetObj != null) {
78       return false;
79     }
80     if (sourceObj.getClass().equals(targetObj.getClass())) {
81       if (sourceObj instanceof Map) {
82         if (!compareMaps((Map<String, Object>) sourceObj, (Map<String, Object>) targetObj)) {
83           return false;
84         }
85       } else if (sourceObj instanceof List) {
86         if (!compareLists((List<Object>) sourceObj, (List<Object>) targetObj)) {
87           return false;
88         }
89       } else  {
90
91         if(sourceObj.getClass() != targetObj.getClass()){
92           return false;
93         }
94
95         if (!sourceObj.equals(targetObj)) {
96           return false;
97         }
98       }
99     }
100     return true;
101   }
102
103
104 }