Rename the groupfilter.config System Property
[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     public boolean getDeleteFlag() {
61         return deleteFlag;
62     }
63
64     public String getWidgetInvariantId() {
65         return Widget.getWidget(getWidgetType()).getWidgetId();
66     }
67
68     public String getWidgetId() {
69         return Widget.getWidget(getWidgetType()).getId();
70     }
71
72     public void setProperties(Map<String, Object> properties) {
73         this.properties = properties;
74     }
75
76     @Override
77     public Map<String, Object> getProperties() {
78         return properties;
79     }
80
81     public void setIsResource(boolean isResource) {
82         this.isResource = isResource;
83     }
84
85     @Override
86     public boolean isResource() {
87         return isResource;
88     }
89
90     public void setMembers(List<String> members) {
91         this.members = members;
92     }
93
94     @Override
95     public boolean addResource(Resource resource) {
96         return resources.add(resource);
97     }
98
99     /**
100      * Adds a Widget.
101      *
102      * @param widget
103      *            the widget
104      * @return the boolean
105      */
106     @Override
107     public boolean addWidget(Widget widget) {
108         if (type == Type.VFMODULE) {
109             if (widget.memberOf(members)) {
110                 if (vserver == null && widget instanceof VServerWidget) {
111                     addVserverWidget(widget);
112                 } else if (widget instanceof LIntfWidget) {
113                     return addLIntfWidget(widget);
114                 } else if (widget instanceof VolumeWidget) {
115                     addVolumeWidget(widget);
116                     return true;
117                 }
118                 if (!(widget instanceof OamNetwork)) {
119                     return widgets.add(widget);
120                 }
121             }
122             return false;
123         } else {
124             return widgets.add(widget);
125         }
126     }
127
128     public Type getWidgetType() {
129         return type;
130     }
131
132     @Override
133     public String toString() {
134         return "Widget type " + getWidgetType() + ", isResource=" + isResource() + ", deleteFlag=" + deleteFlag;
135     }
136
137     private void addVolumeWidget(Widget widget) {
138         if (vserver != null) {
139             vserver.addWidget(widget);
140         } else {
141             addvolume = true;
142         }
143     }
144
145     /**
146      * @param widget
147      * @return
148      */
149     private boolean addLIntfWidget(Widget widget) {
150         if (vserver != null) {
151             vserver.addWidget(widget);
152             return true;
153         } else {
154             addlintf = true;
155             return false;
156         }
157     }
158
159     private void addVserverWidget(Widget widget) {
160         vserver = widget;
161         if (addlintf) {
162             vserver.addWidget(new LIntfWidget());
163         }
164         if (addvolume) {
165             vserver.addWidget(new VolumeWidget());
166         }
167     }
168
169 }