/**
- * ============LICENSE_START=======================================================
+ * ============LICENSE_START=======================================================
* org.onap.aai
* ================================================================================
- * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017-2018 European Software Marketing Ltd.
+ * Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved.
+ * Copyright (c) 2017-2019 European Software Marketing Ltd.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* limitations under the License.
* ============LICENSE_END=========================================================
*/
-package org.onap.aai.babel.xml.generator.model;
-import static org.onap.aai.babel.xml.generator.data.GeneratorConstants.GENERATOR_AAI_CONFIGLPROP_NOT_FOUND;
+package org.onap.aai.babel.xml.generator.model;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
-import java.util.List;
-import java.util.Properties;
import java.util.Set;
-import org.onap.aai.babel.xml.generator.data.ArtifactType;
-import org.onap.aai.babel.xml.generator.data.GeneratorConstants;
+import org.onap.aai.babel.xml.generator.XmlArtifactGenerationException;
import org.onap.aai.babel.xml.generator.data.WidgetConfigurationUtil;
import org.onap.aai.babel.xml.generator.error.IllegalAccessException;
import org.onap.aai.babel.xml.generator.types.ModelType;
-import org.onap.aai.babel.xml.generator.types.ModelWidget;
-public abstract class Widget extends Model {
+public class Widget extends Model {
+
+ public static final String GENERATOR_AAI_CONFIGLPROP_NOT_FOUND = "Cannot generate artifacts. Widget configuration not found for %s";
private Set<String> keys = new HashSet<>();
+ protected String name;
+ protected WidgetType type;
+ protected boolean deleteFlag = false;
+
+ private String modelInvariantId;
+ private String modelVersionId;
+
+ public Widget(WidgetType widgetType, String name, boolean deleteFlag, String modelInvariantId, String modelVersionId) {
+ type = widgetType;
+ this.name = name;
+ this.deleteFlag = deleteFlag;
+ this.modelInvariantId = modelInvariantId;
+ this.modelVersionId = modelVersionId;
+ }
+
/**
- * Gets widget.
+ * Copy Constructor.
*
- * @param type the type
- * @return the widget
+ * @param baseWidget
+ * @throws XmlArtifactGenerationException
+ * if there is no widget mapping defined for any of the VSERVER child types
*/
- public static Widget getWidget(Type type) {
-
- switch (type) {
- case SERVICE:
- return new ServiceWidget();
- case VF:
- return new VfWidget();
- case VFC:
- return new VfcWidget();
- case VSERVER:
- return new VServerWidget();
- case VOLUME:
- return new VolumeWidget();
- case FLAVOR:
- return new FlavorWidget();
- case TENANT:
- return new TenantWidget();
- case VOLUME_GROUP:
- return new VolumeGroupWidget();
- case LINT:
- return new LIntfWidget();
- case L3_NET:
- return new L3NetworkWidget();
- case VFMODULE:
- return new VfModuleWidget();
- case IMAGE:
- return new ImageWidget();
- case OAM_NETWORK:
- return new OamNetwork();
- case ALLOTTED_RESOURCE:
- return new AllotedResourceWidget();
- case TUNNEL_XCONNECT:
- return new TunnelXconnectWidget();
- default:
- return null;
+ public Widget(Widget baseWidget) throws XmlArtifactGenerationException {
+ this(baseWidget.getWidgetType(), baseWidget.getName(), baseWidget.getDeleteFlag(), baseWidget.getWidgetId(), baseWidget.getId());
+ if (this.hasWidgetType("VSERVER")) {
+ widgets.add(createWidget("FLAVOR"));
+ widgets.add(createWidget("IMAGE"));
+ widgets.add(createWidget("TENANT"));
+ widgets.add(createWidget("VFC"));
}
}
/**
- * Gets id.
+ * Creates a new widget of the specified type.
*
- * @return the id
+ * @param type
+ * String value of the Widget Type
+ * @return a new widget of the specified type
+ * @throws XmlArtifactGenerationException
+ * if the configured widget mappings do not support the specified type
*/
- public String getId() {
- Properties properties = WidgetConfigurationUtil.getConfig();
- String id = properties.getProperty(ArtifactType.AAI.name() + ".model-version-id." + getName());
- if (id == null) {
- throw new IllegalArgumentException(String.format(GENERATOR_AAI_CONFIGLPROP_NOT_FOUND,
- ArtifactType.AAI.name() + ".model-version-id." + getName()));
+ public static Widget createWidget(String type) throws XmlArtifactGenerationException {
+ Widget widget = WidgetConfigurationUtil.createWidgetFromType(type);
+ if (widget == null) {
+ throw new XmlArtifactGenerationException("No widget type is defined for " + type);
}
- return id;
+ return widget;
+ }
+
+ /**
+ * Creates a new widget of the specified type.
+ *
+ * @param type
+ * the Widget Type
+ * @return a new widget of the specified type
+ * @throws XmlArtifactGenerationException
+ * if there is no configuration defined for the specified type
+ */
+ public static Widget createWidget(WidgetType type) throws XmlArtifactGenerationException {
+ return createWidget(type.toString());
+ }
+
+ public String getId() {
+ return modelVersionId;
}
public ModelType getType() {
- ModelWidget widgetModel = this.getClass().getAnnotation(ModelWidget.class);
- return widgetModel.type();
+ return ModelType.WIDGET;
}
public String getName() {
- ModelWidget widgetModel = this.getClass().getAnnotation(ModelWidget.class);
- return widgetModel.name();
+ return name;
}
/**
*/
@Override
public String getWidgetId() {
- Properties properties = WidgetConfigurationUtil.getConfig();
- String id = properties.getProperty(ArtifactType.AAI.name() + ".model-invariant-id." + getName());
- if (id == null) {
- throw new IllegalArgumentException(String.format(GENERATOR_AAI_CONFIGLPROP_NOT_FOUND,
- ArtifactType.AAI.name() + ".model-invariant-id." + getName()));
- }
- return id;
+ return modelInvariantId;
}
@Override
}
@Override
- public Type getWidgetType() {
- return null;
+ public WidgetType getWidgetType() {
+ return type;
}
/**
- * Equals.
+ * Equals method that compares Widget IDs.
*
- * @param obj Object
- * @return the boolean
+ * @param obj
+ * the Widget object to compare
+ * @return whether or not obj is equal to this Widget
*/
@Override
public boolean equals(Object obj) {
+ boolean isEqual = false;
if (obj instanceof Widget) {
- if (getId().equals(((Widget) obj).getId())) {
- ((Widget) obj).keys.addAll(this.keys);
- return true;
+ Widget other = (Widget) obj;
+ if (getId().equals(other.getId())) {
+ other.keys.addAll(this.keys);
+ isEqual = true;
}
- return false;
- } else {
- return false;
}
+ return isEqual;
}
public void addKey(String key) {
}
/**
- * Member of boolean.
+ * Determine whether one or more keys belonging to this Widget appear in the specified Collection.
*
- * @param keys the keys
+ * @param keys
+ * the keys
* @return the boolean
*/
- public boolean memberOf(List<String> keys) {
+ public boolean memberOf(Collection<String> keys) {
if (keys == null) {
return false;
}
return !Collections.disjoint(this.keys, keys);
}
- /**
- * All instances used boolean.
- *
- * @param collection the collection
- * @return the boolean
- */
- public boolean allInstancesUsed(Set<String> collection) {
- Set<String> keyCopy = new HashSet<>(keys);
- keyCopy.removeAll(collection);
- return keyCopy.isEmpty();
- }
-
@Override
public boolean addResource(Resource resource) {
- throw new IllegalAccessException(GeneratorConstants.GENERATOR_AAI_ERROR_UNSUPPORTED_WIDGET_OPERATION);
+ throw new IllegalAccessException(Model.GENERATOR_AAI_ERROR_UNSUPPORTED_WIDGET_OPERATION);
}
@Override
public boolean addWidget(Widget widget) {
+ if (getWidgetType() == WidgetType.valueOf("VSERVER")) {
+ return widgets.add(widget);
+ }
return true;
}
- public enum Type {
- SERVICE,
- VF,
- VFC,
- VSERVER,
- VOLUME,
- FLAVOR,
- TENANT,
- VOLUME_GROUP,
- LINT,
- L3_NET,
- VFMODULE,
- IMAGE,
- OAM_NETWORK,
- ALLOTTED_RESOURCE,
- TUNNEL_XCONNECT
+ @Override
+ public String toString() {
+ return getName() + " Widget keys=" + keys + ", resources=" + resources + ", widgets=" + widgets;
+ }
+
+ @Override
+ public boolean getDeleteFlag() {
+ return deleteFlag;
+ }
+
+ @Override
+ public String getModelTypeName() {
+ throw new IllegalAccessException(GENERATOR_AAI_ERROR_UNSUPPORTED_WIDGET_OPERATION);
+ }
+
+ @Override
+ public String getModelId() {
+ throw new IllegalAccessException(GENERATOR_AAI_ERROR_UNSUPPORTED_WIDGET_OPERATION);
}
+
+ @Override
+ public String getModelNameVersionId() {
+ throw new IllegalAccessException(GENERATOR_AAI_ERROR_UNSUPPORTED_WIDGET_OPERATION);
+ }
+
}