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=732ec4ddaa45d0464bffde28c41956a9b4a46e71;hb=e8bb310641941ddbb073df33d92cfbe6f6029029;hp=49e3811501d384903aaad63a894bdf79c8558c4d;hpb=f7426888d5496b27b799b0e1e17f2756a407042c;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 49e3811..732ec4d 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,81 +18,73 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.babel.xml.generator.model; -import java.lang.reflect.InvocationTargetException; import java.util.Collection; import java.util.Collections; -import java.util.EnumMap; import java.util.HashSet; import java.util.Properties; import java.util.Set; -import org.onap.aai.babel.logging.ApplicationMsgs; -import org.onap.aai.babel.logging.LogHelper; +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; -import org.onap.aai.cl.api.Logger; -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, CR; - } + private Set keys = new HashSet<>(); - private static Logger log = LogHelper.INSTANCE; + protected String name; + protected WidgetType type; + protected boolean deleteFlag = false; - private Set keys = new HashSet<>(); + public Widget(WidgetType widgetType, String name, boolean deleteFlag) { + type = widgetType; + this.name = name; + this.deleteFlag = deleteFlag; + } - private static EnumMap> typeToWidget = new EnumMap<>(Widget.Type.class); - static { - typeToWidget.put(Type.SERVICE, ServiceWidget.class); - typeToWidget.put(Type.VF, VfWidget.class); - typeToWidget.put(Type.VFC, VfcWidget.class); - typeToWidget.put(Type.VSERVER, VServerWidget.class); - typeToWidget.put(Type.VOLUME, VolumeWidget.class); - typeToWidget.put(Type.FLAVOR, FlavorWidget.class); - typeToWidget.put(Type.TENANT, TenantWidget.class); - typeToWidget.put(Type.VOLUME_GROUP, VolumeGroupWidget.class); - typeToWidget.put(Type.LINT, LIntfWidget.class); - typeToWidget.put(Type.L3_NET, L3NetworkWidget.class); - typeToWidget.put(Type.VFMODULE, VfModuleWidget.class); - typeToWidget.put(Type.IMAGE, ImageWidget.class); - typeToWidget.put(Type.OAM_NETWORK, OamNetwork.class); - typeToWidget.put(Type.ALLOTTED_RESOURCE, AllotedResourceWidget.class); - typeToWidget.put(Type.TUNNEL_XCONNECT, TunnelXconnectWidget.class); - typeToWidget.put(Type.CONFIGURATION, ConfigurationWidget.class); - typeToWidget.put(Type.CR, CRWidget.class); + /** + * Copy Constructor. + * + * @param baseWidget + * @throws XmlArtifactGenerationException + */ + public Widget(Widget baseWidget) throws XmlArtifactGenerationException { + this(baseWidget.getWidgetType(), baseWidget.getName(), baseWidget.getDeleteFlag()); + if (type == WidgetType.valueOf("VSERVER")) { + widgets.add(getWidget(WidgetType.valueOf("FLAVOR"))); + widgets.add(getWidget(WidgetType.valueOf("IMAGE"))); + widgets.add(getWidget(WidgetType.valueOf("TENANT"))); + widgets.add(getWidget(WidgetType.valueOf("VFC"))); + } } /** * Gets widget. * - * @param type - * the type - * @return the widget + * @param typeString + * + * @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) { - Widget widget = null; - Class clazz = typeToWidget.get(type); - if (clazz != null) { - try { - widget = clazz.getConstructor().newInstance(); - } catch (InstantiationException | java.lang.IllegalAccessException | IllegalArgumentException - | InvocationTargetException | NoSuchMethodException | SecurityException e) { - log.error(ApplicationMsgs.INVALID_CSAR_FILE, e); - } + public static Widget getWidget(WidgetType type) throws XmlArtifactGenerationException { + Widget widget = WidgetConfigurationUtil.createWidgetFromType(type.toString()); + if (widget == null) { + throw new XmlArtifactGenerationException("No widget type is defined for " + type); } return widget; } 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())); @@ -101,13 +93,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; } /** @@ -132,8 +122,8 @@ public abstract class Widget extends Model { } @Override - public Type getWidgetType() { - return null; + public WidgetType getWidgetType() { + return type; } /** @@ -181,7 +171,35 @@ public abstract class Widget extends Model { @Override public boolean addWidget(Widget widget) { + if (getWidgetType() == WidgetType.valueOf("VSERVER")) { + return widgets.add(widget); + } return true; } + @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); + } + }