2 * ============LICENSE_START=======================================================
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.onap.aai.babel.xml.generator.model;
23 import java.util.Collection;
24 import java.util.Collections;
25 import java.util.HashSet;
27 import java.util.Properties;
29 import org.onap.aai.babel.xml.generator.XmlArtifactGenerationException;
30 import org.onap.aai.babel.xml.generator.data.ArtifactType;
31 import org.onap.aai.babel.xml.generator.data.WidgetConfigurationUtil;
32 import org.onap.aai.babel.xml.generator.error.IllegalAccessException;
33 import org.onap.aai.babel.xml.generator.types.ModelType;
35 public class Widget extends Model {
37 public static final String GENERATOR_AAI_CONFIGLPROP_NOT_FOUND =
38 "Cannot generate artifacts. Widget configuration not found for %s";
41 SERVICE, VF, VFC, VSERVER, VOLUME, FLAVOR, TENANT, VOLUME_GROUP, LINT, L3_NET, VFMODULE, IMAGE, OAM_NETWORK, ALLOTTED_RESOURCE, TUNNEL_XCONNECT, CONFIGURATION, CR, INSTANCE_GROUP;
44 private Set<String> keys = new HashSet<>();
46 protected String name;
48 protected boolean deleteFlag = false;
50 public Widget(Type widgetType, String name, boolean deleteFlag) {
53 this.deleteFlag = deleteFlag;
60 * @throws XmlArtifactGenerationException
62 public Widget(Widget baseWidget) throws XmlArtifactGenerationException {
63 this(baseWidget.getWidgetType(), baseWidget.getName(), baseWidget.getDeleteFlag());
64 if (type == Type.VSERVER) {
65 widgets.add(getWidget(Type.FLAVOR));
66 widgets.add(getWidget(Type.IMAGE));
67 widgets.add(getWidget(Type.TENANT));
68 widgets.add(getWidget(Type.VFC));
77 * @return a new widget of the specified type
78 * @throws XmlArtifactGenerationException
80 public static Widget getWidget(Type type) throws XmlArtifactGenerationException {
81 Widget widget = WidgetConfigurationUtil.createWidgetFromType(type);
83 throw new XmlArtifactGenerationException("No widget type is defined for " + type);
89 public boolean isResource() {
93 public String getId() {
94 String id = WidgetConfigurationUtil.getConfig()
95 .getProperty(ArtifactType.AAI.name() + ".model-version-id." + getName());
97 throw new IllegalArgumentException(String.format(GENERATOR_AAI_CONFIGLPROP_NOT_FOUND,
98 ArtifactType.AAI.name() + ".model-version-id." + getName()));
103 public ModelType getType() {
104 return ModelType.WIDGET;
107 public String getName() {
112 * Get Widget Id from properties file.
114 * @return - Widget Id
117 public String getWidgetId() {
118 Properties properties = WidgetConfigurationUtil.getConfig();
119 String id = properties.getProperty(ArtifactType.AAI.name() + ".model-invariant-id." + getName());
121 throw new IllegalArgumentException(String.format(GENERATOR_AAI_CONFIGLPROP_NOT_FOUND,
122 ArtifactType.AAI.name() + ".model-invariant-id." + getName()));
128 public int hashCode() {
129 return getId().hashCode();
133 public Type getWidgetType() {
138 * Equals method that compares Widget IDs.
141 * the Widget object to compare
142 * @return whether or not obj is equal to this Widget
145 public boolean equals(Object obj) {
146 boolean isEqual = false;
147 if (obj instanceof Widget) {
148 Widget other = (Widget) obj;
149 if (getId().equals(other.getId())) {
150 other.keys.addAll(this.keys);
157 public void addKey(String key) {
162 * Determine whether one or more keys belonging to this Widget appear in the specified Collection.
166 * @return the boolean
168 public boolean memberOf(Collection<String> keys) {
172 return !Collections.disjoint(this.keys, keys);
176 public boolean addResource(Resource resource) {
177 throw new IllegalAccessException(Model.GENERATOR_AAI_ERROR_UNSUPPORTED_WIDGET_OPERATION);
181 public boolean addWidget(Widget widget) {
182 if (getWidgetType() == Type.VSERVER) {
183 return widgets.add(widget);
189 public Map<String, Object> getProperties() {
190 return Collections.emptyMap();
194 public String toString() {
195 return getName() + " Widget keys=" + keys + ", resources=" + resources + ", widgets=" + widgets;
199 public boolean getDeleteFlag() {