Fix outstanding Sonar issues
[aai/babel.git] / src / main / java / org / onap / aai / babel / xml / generator / model / Resource.java
1 /**
2  * ============LICENSE_START=======================================================
3  * org.onap.aai
4  * ================================================================================
5  * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved.
6  * Copyright © 2017-2019 European Software Marketing Ltd.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *       http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.aai.babel.xml.generator.model;
23
24 import java.util.Collections;
25 import java.util.List;
26 import java.util.Map;
27 import org.onap.aai.babel.xml.generator.model.Widget.Type;
28
29 public class Resource extends Model {
30
31     private Type type;
32     private boolean deleteFlag;
33     private boolean isResource = true;
34     private Map<String, Object> properties = Collections.emptyMap();
35
36     Widget vserver = null;
37     boolean addlintf = false;
38     boolean addvolume = false;
39     List<String> members;
40
41     public Resource(Type type, boolean deleteFlag) {
42         this.type = type;
43         this.deleteFlag = deleteFlag;
44     }
45
46     @Override
47     public int hashCode() {
48         final String uuid = getModelNameVersionId();
49         return uuid == null ? 0 : uuid.hashCode();
50     }
51
52     @Override
53     public boolean equals(Object obj) {
54         if (obj instanceof Resource) {
55             return getModelNameVersionId().equals(((Resource) obj).getModelNameVersionId());
56         }
57         return false;
58     }
59
60     @Override
61     public boolean getDeleteFlag() {
62         return deleteFlag;
63     }
64
65     @Override
66     public String getWidgetInvariantId() {
67         return Widget.getWidget(getWidgetType()).getWidgetId();
68     }
69
70     @Override
71     public String getWidgetId() {
72         return Widget.getWidget(getWidgetType()).getId();
73     }
74
75     public void setProperties(Map<String, Object> properties) {
76         this.properties = properties;
77     }
78
79     @Override
80     public Map<String, Object> getProperties() {
81         return properties;
82     }
83
84     public void setIsResource(boolean isResource) {
85         this.isResource = isResource;
86     }
87
88     @Override
89     public boolean isResource() {
90         return isResource;
91     }
92
93     public void setMembers(List<String> members) {
94         this.members = members;
95     }
96
97     @Override
98     public boolean addResource(Resource resource) {
99         return resources.add(resource);
100     }
101
102     /**
103      * Adds a Widget.
104      *
105      * @param widget
106      *     the widget
107      * @return the boolean
108      */
109     @Override
110     public boolean addWidget(Widget widget) {
111         if (type == Type.VFMODULE) {
112             if (widget.memberOf(members)) {
113                 if (vserver == null && widget instanceof VServerWidget) {
114                     addVserverWidget(widget);
115                 } else if (widget instanceof LIntfWidget) {
116                     return addLIntfWidget(widget);
117                 } else if (widget instanceof VolumeWidget) {
118                     addVolumeWidget(widget);
119                     return true;
120                 }
121                 if (!(widget instanceof OamNetwork)) {
122                     return widgets.add(widget);
123                 }
124             }
125             return false;
126         } else {
127             return widgets.add(widget);
128         }
129     }
130
131     public Type getWidgetType() {
132         return type;
133     }
134
135     @Override
136     public String toString() {
137         return "Widget type " + getWidgetType() + ", isResource=" + isResource() + ", deleteFlag=" + deleteFlag;
138     }
139
140     private void addVolumeWidget(Widget widget) {
141         if (vserver != null) {
142             vserver.addWidget(widget);
143         } else {
144             addvolume = true;
145         }
146     }
147
148     /**
149      * @param widget
150      * @return
151      */
152     private boolean addLIntfWidget(Widget widget) {
153         if (vserver != null) {
154             vserver.addWidget(widget);
155             return true;
156         } else {
157             addlintf = true;
158             return false;
159         }
160     }
161
162     private void addVserverWidget(Widget widget) {
163         vserver = widget;
164         if (addlintf) {
165             vserver.addWidget(new LIntfWidget());
166         }
167         if (addvolume) {
168             vserver.addWidget(new VolumeWidget());
169         }
170     }
171
172 }