X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Faai%2Fbabel%2Fxml%2Fgenerator%2Fmodel%2FWidget.java;h=44beb6597a339f0b5cdb6f7c7d451d36ebf6ef8e;hb=f03e49cdf5c8d54733416ab244826b9429c9c86c;hp=7f394387f0a19e0e8a29cc716adcc8db3409ae7e;hpb=5b6b32d3ab0dc27c72351f6aa9e0bdef8d599e13;p=aai%2Fbabel.git diff --git a/src/main/java/org/onap/aai/babel/xml/generator/model/Widget.java b/src/main/java/org/onap/aai/babel/xml/generator/model/Widget.java index 7f39438..44beb65 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/model/Widget.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/model/Widget.java @@ -2,8 +2,8 @@ * ============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. @@ -18,78 +18,83 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + 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.Map; import java.util.Properties; import java.util.Set; +import org.onap.aai.babel.xml.generator.XmlArtifactGenerationException; import org.onap.aai.babel.xml.generator.data.ArtifactType; 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"; + public static final String GENERATOR_AAI_CONFIGLPROP_NOT_FOUND = + "Cannot generate artifacts. Widget configuration not found for %s"; public enum Type { - SERVICE, VF, VFC, VSERVER, VOLUME, FLAVOR, TENANT, VOLUME_GROUP, LINT, L3_NET, VFMODULE, IMAGE, OAM_NETWORK, ALLOTTED_RESOURCE, TUNNEL_XCONNECT, CONFIGURATION; + SERVICE, VF, VFC, VSERVER, VOLUME, FLAVOR, TENANT, VOLUME_GROUP, LINT, L3_NET, VFMODULE, IMAGE, OAM_NETWORK, ALLOTTED_RESOURCE, TUNNEL_XCONNECT, CONFIGURATION, CR, INSTANCE_GROUP; } private Set keys = new HashSet<>(); + protected String name; + protected Type type; + protected boolean deleteFlag = false; + + public Widget(Type widgetType, String name, boolean deleteFlag) { + type = widgetType; + this.name = name; + this.deleteFlag = deleteFlag; + } + + /** + * Copy Constructor. + * + * @param baseWidget + * @throws XmlArtifactGenerationException + */ + public Widget(Widget baseWidget) throws XmlArtifactGenerationException { + this(baseWidget.getWidgetType(), baseWidget.getName(), baseWidget.getDeleteFlag()); + if (type == Type.VSERVER) { + widgets.add(getWidget(Type.FLAVOR)); + widgets.add(getWidget(Type.IMAGE)); + widgets.add(getWidget(Type.TENANT)); + widgets.add(getWidget(Type.VFC)); + } + } + /** * Gets widget. * * @param type * the type - * @return the widget + * @return a new widget of the specified type + * @throws XmlArtifactGenerationException + * if there is no configuration defined for the specified type */ - 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(); - case CONFIGURATION: - return new ConfigurationWidget(); - default: - return null; + public static Widget getWidget(Type type) throws XmlArtifactGenerationException { + Widget widget = WidgetConfigurationUtil.createWidgetFromType(type); + if (widget == null) { + throw new XmlArtifactGenerationException("No widget type is defined for " + type); } + return widget; + } + + @Override + public boolean isResource() { + return false; } public String getId() { - Properties properties = WidgetConfigurationUtil.getConfig(); - String id = properties.getProperty(ArtifactType.AAI.name() + ".model-version-id." + getName()); + String id = WidgetConfigurationUtil.getConfig() + .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())); @@ -98,13 +103,11 @@ public abstract class Widget extends Model { } 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; } /** @@ -130,27 +133,27 @@ public abstract class Widget extends Model { @Override public Type getWidgetType() { - return null; + return type; } /** - * Equals. + * Equals method that compares Widget IDs. * * @param obj - * Object - * @return the boolean + * 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) { @@ -158,32 +161,19 @@ public abstract class Widget extends Model { } /** - * Member of boolean. + * Determine whether one or more keys belonging to this Widget appear in the specified Collection. * * @param keys * the keys * @return the boolean */ - public boolean memberOf(List keys) { + public boolean memberOf(Collection 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 collection) { - Set keyCopy = new HashSet<>(keys); - keyCopy.removeAll(collection); - return keyCopy.isEmpty(); - } - @Override public boolean addResource(Resource resource) { throw new IllegalAccessException(Model.GENERATOR_AAI_ERROR_UNSUPPORTED_WIDGET_OPERATION); @@ -191,7 +181,24 @@ public abstract class Widget extends Model { @Override public boolean addWidget(Widget widget) { + if (getWidgetType() == Type.VSERVER) { + return widgets.add(widget); + } return true; } + @Override + public Map getProperties() { + return Collections.emptyMap(); + } + + @Override + public String toString() { + return getName() + " Widget keys=" + keys + ", resources=" + resources + ", widgets=" + widgets; + } + + @Override + public boolean getDeleteFlag() { + return deleteFlag; + } }