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;
28 import org.onap.aai.babel.xml.generator.XmlArtifactGenerationException;
29 import org.onap.aai.babel.xml.generator.data.WidgetConfigurationUtil;
30 import org.onap.aai.babel.xml.generator.error.IllegalAccessException;
31 import org.onap.aai.babel.xml.generator.types.ModelType;
33 public class Widget extends Model {
35 public static final String GENERATOR_AAI_CONFIGLPROP_NOT_FOUND = "Cannot generate artifacts. Widget configuration not found for %s";
37 private Set<String> keys = new HashSet<>();
39 protected String name;
40 protected WidgetType type;
41 protected boolean deleteFlag = false;
43 private String modelInvariantId;
44 private String modelVersionId;
46 public Widget(WidgetType widgetType, String name, boolean deleteFlag, String modelInvariantId, String modelVersionId) {
49 this.deleteFlag = deleteFlag;
50 this.modelInvariantId = modelInvariantId;
51 this.modelVersionId = modelVersionId;
58 * @throws XmlArtifactGenerationException
59 * if there is no widget mapping defined for any of the VSERVER child types
61 public Widget(Widget baseWidget) throws XmlArtifactGenerationException {
62 this(baseWidget.getWidgetType(), baseWidget.getName(), baseWidget.getDeleteFlag(), baseWidget.getWidgetId(), baseWidget.getId());
63 if (this.hasWidgetType("VSERVER")) {
64 widgets.add(createWidget("FLAVOR"));
65 widgets.add(createWidget("IMAGE"));
66 widgets.add(createWidget("TENANT"));
67 widgets.add(createWidget("VFC"));
72 * Creates a new widget of the specified type.
75 * String value of the Widget Type
76 * @return a new widget of the specified type
77 * @throws XmlArtifactGenerationException
78 * if the configured widget mappings do not support the specified type
80 public static Widget createWidget(String type) throws XmlArtifactGenerationException {
81 Widget widget = WidgetConfigurationUtil.createWidgetFromType(type);
83 throw new XmlArtifactGenerationException("No widget type is defined for " + type);
89 * Creates a new widget of the specified type.
93 * @return a new widget of the specified type
94 * @throws XmlArtifactGenerationException
95 * if there is no configuration defined for the specified type
97 public static Widget createWidget(WidgetType type) throws XmlArtifactGenerationException {
98 return createWidget(type.toString());
101 public String getId() {
102 return modelVersionId;
105 public ModelType getType() {
106 return ModelType.WIDGET;
109 public String getName() {
114 * Get Widget Id from properties file.
116 * @return - Widget Id
119 public String getWidgetId() {
120 return modelInvariantId;
124 public int hashCode() {
125 return getId().hashCode();
129 public WidgetType 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() == WidgetType.valueOf("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);