[AAI] Release 1.13.1 docker artifact of babel
[aai/babel.git] / src / main / java / org / onap / aai / babel / xml / generator / model / Widget.java
index e66b06c..8f71f2b 100644 (file)
@@ -2,8 +2,8 @@
  * ============LICENSE_START=======================================================
  * org.onap.aai
  * ================================================================================
- * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017-2019 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 java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
-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;
 
 public class Widget extends Model {
 
-    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, INSTANCE_GROUP;
-    }
+    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 Type type;
+    protected WidgetType type;
     protected boolean deleteFlag = false;
 
-    public Widget(Type widgetType, String name, boolean deleteFlag) {
+    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;
     }
 
     /**
-     * Copy Constructor
-     * 
+     * Copy Constructor.
+     *
      * @param baseWidget
-     * @throws XmlArtifactGenerationException 
+     * @throws XmlArtifactGenerationException
+     *             if there is no widget mapping defined for any of the VSERVER child types
      */
     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));
+        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 widget.
+     * Creates a new widget of the specified type.
      *
      * @param type
-     *            the type
+     *            String value of the Widget Type
      * @return a new widget of the specified type
-     * @throws XmlArtifactGenerationException 
+     * @throws XmlArtifactGenerationException
+     *             if the configured widget mappings do not support the specified type
      */
-    public static Widget getWidget(Type type) throws XmlArtifactGenerationException {
+    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);
@@ -85,19 +85,21 @@ public class Widget extends Model {
         return widget;
     }
 
-    @Override
-    public boolean isResource() {
-        return false;
+    /**
+     * 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() {
-        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()));
-        }
-        return id;
+        return modelVersionId;
     }
 
     public ModelType getType() {
@@ -115,13 +117,7 @@ public class Widget extends Model {
      */
     @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
@@ -130,7 +126,7 @@ public class Widget extends Model {
     }
 
     @Override
-    public Type getWidgetType() {
+    public WidgetType getWidgetType() {
         return type;
     }
 
@@ -179,17 +175,12 @@ public class Widget extends Model {
 
     @Override
     public boolean addWidget(Widget widget) {
-        if (getWidgetType() == Type.VSERVER) {
+        if (getWidgetType() == WidgetType.valueOf("VSERVER")) {
             return widgets.add(widget);
         }
         return true;
     }
 
-    @Override
-    public Map<String, Object> getProperties() {
-        return Collections.emptyMap();
-    }
-
     @Override
     public String toString() {
         return getName() + " Widget keys=" + keys + ", resources=" + resources + ", widgets=" + widgets;
@@ -199,4 +190,20 @@ public class Widget extends Model {
     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);
+    }
+
 }