[AAI] Release 1.13.1 docker artifact of babel
[aai/babel.git] / src / main / java / org / onap / aai / babel / xml / generator / model / Resource.java
index 911bf32..8c01a50 100644 (file)
 
 package org.onap.aai.babel.xml.generator.model;
 
+import com.google.common.collect.ImmutableMap;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
 import org.onap.aai.babel.xml.generator.XmlArtifactGenerationException;
-import org.onap.aai.babel.xml.generator.model.Widget.Type;
 import org.onap.aai.babel.xml.generator.types.ModelType;
 
 public class Resource extends Model {
-  
-    private Type type;
+
+    private WidgetType type;
     private boolean deleteFlag;
     private ModelType modelType = ModelType.RESOURCE;
     private Map<String, Object> properties = Collections.emptyMap();
@@ -40,11 +42,21 @@ public class Resource extends Model {
     boolean addvolume = false;
     List<String> members;
 
-    public Resource(Type type, boolean deleteFlag) {
+    public Resource(WidgetType type, boolean deleteFlag) {
         this.type = type;
         this.deleteFlag = deleteFlag;
     }
 
+    /**
+     * Copy Constructor.
+     *
+     * @param baseResource
+     */
+    public Resource(Resource baseResource) {
+        this(baseResource.getWidgetType(), baseResource.getDeleteFlag());
+        setModelType(baseResource.getModelType());
+    }
+
     @Override
     public int hashCode() {
         final String uuid = getModelNameVersionId();
@@ -71,15 +83,15 @@ public class Resource extends Model {
     public Map<String, Object> getProperties() {
         return properties;
     }
-    
+
     public void setModelType(ModelType type) {
         this.modelType = type;
     }
-    
+
     public ModelType getModelType() {
         return modelType;
     }
-    
+
     public void setMembers(List<String> members) {
         this.members = members;
     }
@@ -88,23 +100,23 @@ public class Resource extends Model {
      * Adds a Widget.
      *
      * @param widget
-     *     the widget
+     *            the widget
      * @return the boolean
-     * @throws XmlArtifactGenerationException 
+     * @throws XmlArtifactGenerationException
      */
     @Override
     public boolean addWidget(Widget widget) throws XmlArtifactGenerationException {
-        if (type == Type.VFMODULE) {
+        if (type == WidgetType.valueOf("VFMODULE")) {
             if (widget.memberOf(members)) {
-                if (vserver == null && widget.getWidgetType() == Type.VSERVER) {
+                if (vserver == null && widget.hasWidgetType("VSERVER")) {
                     addVserverWidget(widget);
-                } else if (widget.getWidgetType() == Type.LINT) {
+                } else if (widget.hasWidgetType("LINT")) {
                     return addLIntfWidget(widget);
-                } else if (widget.getWidgetType() == Type.VOLUME) {
+                } else if (widget.hasWidgetType("VOLUME")) {
                     addVolumeWidget(widget);
                     return true;
                 }
-                if (widget.getWidgetType() != Type.OAM_NETWORK) {
+                if (!widget.hasWidgetType("OAM_NETWORK")) {
                     return widgets.add(widget);
                 }
             }
@@ -113,20 +125,32 @@ public class Resource extends Model {
             return widgets.add(widget);
         }
     }
-    
-    public Type getWidgetType() {
+
+    @Override
+    public WidgetType getWidgetType() {
         return type;
     }
-    
+
+    @Override
     public String getModelTypeName() {
         return "resource";
     }
 
     @Override
     public String toString() {
-        return "Resource [widget type=" + getWidgetType() + ", deleteFlag=" + deleteFlag + ", modelType=" + modelType
-                + ", properties=" + properties + ", vserver=" + vserver + ", addlintf=" + addlintf + ", addvolume="
-                + addvolume + ", members=" + members + "]";
+        return ImmutableMap.<String, String>builder() //
+                .put("Resource", Optional.ofNullable(getModelId()).orElse("null")) //
+                .put("widget type", getWidgetType().toString()) //
+                .put("deleteFlag", Boolean.toString(deleteFlag)) //
+                .put("modelType", modelType.toString()) //
+                .put("properties", properties.toString()) //
+                .put("vserver", Optional.ofNullable(vserver).map(Widget::toString).orElse("null")) //
+                .put("addlintf", Boolean.toString(addlintf)) //
+                .put("addvolume", Boolean.toString(addvolume)) //
+                .put("members", Optional.ofNullable(members).map(List::toString).orElse("null")) //
+                .build().entrySet().stream() //
+                .map(e -> e.getKey() + "=" + e.getValue()) //
+                .collect(Collectors.joining(", "));
     }
 
     private void addVolumeWidget(Widget widget) {
@@ -154,10 +178,10 @@ public class Resource extends Model {
     private void addVserverWidget(Widget widget) throws XmlArtifactGenerationException {
         vserver = widget;
         if (addlintf) {
-            vserver.addWidget(Widget.getWidget(Type.LINT));
+            vserver.addWidget(Widget.createWidget("LINT"));
         }
         if (addvolume) {
-            vserver.addWidget(Widget.getWidget(Type.VOLUME));
+            vserver.addWidget(Widget.createWidget("VOLUME"));
         }
     }