2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved.
6 * Copyright (c) 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=========================================================
22 package org.onap.aai.babel.xml.generator.model;
24 import java.util.Collection;
25 import java.util.Collections;
26 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
79 * if there is no configuration defined for the specified type
81 public static Widget getWidget(Type type) throws XmlArtifactGenerationException {
82 Widget widget = WidgetConfigurationUtil.createWidgetFromType(type);
84 throw new XmlArtifactGenerationException("No widget type is defined for " + type);
89 public String getId() {
90 String id = WidgetConfigurationUtil.getConfig()
91 .getProperty(ArtifactType.AAI.name() + ".model-version-id." + getName());
93 throw new IllegalArgumentException(String.format(GENERATOR_AAI_CONFIGLPROP_NOT_FOUND,
94 ArtifactType.AAI.name() + ".model-version-id." + getName()));
99 public ModelType getType() {
100 return ModelType.WIDGET;
103 public String getName() {
108 * Get Widget Id from properties file.
110 * @return - Widget Id
113 public String getWidgetId() {
114 Properties properties = WidgetConfigurationUtil.getConfig();
115 String id = properties.getProperty(ArtifactType.AAI.name() + ".model-invariant-id." + getName());
117 throw new IllegalArgumentException(String.format(GENERATOR_AAI_CONFIGLPROP_NOT_FOUND,
118 ArtifactType.AAI.name() + ".model-invariant-id." + getName()));
124 public int hashCode() {
125 return getId().hashCode();
129 public Type getWidgetType() {
134 * Equals method that compares Widget IDs.
137 * the Widget object to compare
138 * @return whether or not obj is equal to this Widget
141 public boolean equals(Object obj) {
142 boolean isEqual = false;
143 if (obj instanceof Widget) {
144 Widget other = (Widget) obj;
145 if (getId().equals(other.getId())) {
146 other.keys.addAll(this.keys);
153 public void addKey(String key) {
158 * Determine whether one or more keys belonging to this Widget appear in the specified Collection.
162 * @return the boolean
164 public boolean memberOf(Collection<String> keys) {
168 return !Collections.disjoint(this.keys, keys);
172 public boolean addResource(Resource resource) {
173 throw new IllegalAccessException(Model.GENERATOR_AAI_ERROR_UNSUPPORTED_WIDGET_OPERATION);
177 public boolean addWidget(Widget widget) {
178 if (getWidgetType() == Type.VSERVER) {
179 return widgets.add(widget);
185 public String toString() {
186 return getName() + " Widget keys=" + keys + ", resources=" + resources + ", widgets=" + widgets;
190 public boolean getDeleteFlag() {
195 public String getModelTypeName() {
196 throw new IllegalAccessException(GENERATOR_AAI_ERROR_UNSUPPORTED_WIDGET_OPERATION);
200 public String getModelId() {
201 throw new IllegalAccessException(GENERATOR_AAI_ERROR_UNSUPPORTED_WIDGET_OPERATION);
205 public String getModelNameVersionId() {
206 throw new IllegalAccessException(GENERATOR_AAI_ERROR_UNSUPPORTED_WIDGET_OPERATION);