Re-implement model type value for Resource Mapping
[aai/babel.git] / src / main / java / org / onap / aai / babel / xml / generator / model / Resource.java
index 1b64907..911bf32 100644 (file)
@@ -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.
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
+
 package org.onap.aai.babel.xml.generator.model;
 
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+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 boolean deleteFlag;
+    private ModelType modelType = ModelType.RESOURCE;
+    private Map<String, Object> properties = Collections.emptyMap();
+
+    Widget vserver = null;
+    boolean addlintf = false;
+    boolean addvolume = false;
+    List<String> members;
+
+    public Resource(Type type, boolean deleteFlag) {
+        this.type = type;
+        this.deleteFlag = deleteFlag;
+    }
 
     @Override
     public int hashCode() {
@@ -37,19 +60,105 @@ public class Resource extends Model {
     }
 
     @Override
-    public boolean addResource(Resource resource) {
-        return resources.add(resource);
+    public boolean getDeleteFlag() {
+        return deleteFlag;
+    }
+
+    public void setProperties(Map<String, Object> properties) {
+        this.properties = properties;
     }
 
+    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;
+    }
+
+    /**
+     * Adds a Widget.
+     *
+     * @param widget
+     *     the widget
+     * @return the boolean
+     * @throws XmlArtifactGenerationException 
+     */
     @Override
-    public boolean addWidget(Widget widget) {
-        return widgets.add(widget);
+    public boolean addWidget(Widget widget) throws XmlArtifactGenerationException {
+        if (type == Type.VFMODULE) {
+            if (widget.memberOf(members)) {
+                if (vserver == null && widget.getWidgetType() == Type.VSERVER) {
+                    addVserverWidget(widget);
+                } else if (widget.getWidgetType() == Type.LINT) {
+                    return addLIntfWidget(widget);
+                } else if (widget.getWidgetType() == Type.VOLUME) {
+                    addVolumeWidget(widget);
+                    return true;
+                }
+                if (widget.getWidgetType() != Type.OAM_NETWORK) {
+                    return widgets.add(widget);
+                }
+            }
+            return false;
+        } else {
+            return widgets.add(widget);
+        }
+    }
+    
+    public Type getWidgetType() {
+        return type;
+    }
+    
+    public String getModelTypeName() {
+        return "resource";
     }
 
     @Override
-    public Widget.Type getWidgetType() {
-        org.onap.aai.babel.xml.generator.types.Model model =
-                this.getClass().getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class);
-        return model.widget();
+    public String toString() {
+        return "Resource [widget type=" + getWidgetType() + ", deleteFlag=" + deleteFlag + ", modelType=" + modelType
+                + ", properties=" + properties + ", vserver=" + vserver + ", addlintf=" + addlintf + ", addvolume="
+                + addvolume + ", members=" + members + "]";
     }
+
+    private void addVolumeWidget(Widget widget) {
+        if (vserver != null) {
+            vserver.addWidget(widget);
+        } else {
+            addvolume = true;
+        }
+    }
+
+    /**
+     * @param widget
+     * @return
+     */
+    private boolean addLIntfWidget(Widget widget) {
+        if (vserver != null) {
+            vserver.addWidget(widget);
+            return true;
+        } else {
+            addlintf = true;
+            return false;
+        }
+    }
+
+    private void addVserverWidget(Widget widget) throws XmlArtifactGenerationException {
+        vserver = widget;
+        if (addlintf) {
+            vserver.addWidget(Widget.getWidget(Type.LINT));
+        }
+        if (addvolume) {
+            vserver.addWidget(Widget.getWidget(Type.VOLUME));
+        }
+    }
+
 }