* ============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 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.types.ModelType;
+
public class Resource extends Model {
+ private WidgetType 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(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() {
- return getModelNameVersionId().hashCode();
+ final String uuid = getModelNameVersionId();
+ return uuid == null ? 0 : uuid.hashCode();
}
@Override
}
@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) throws XmlArtifactGenerationException {
+ if (type == WidgetType.valueOf("VFMODULE")) {
+ if (widget.memberOf(members)) {
+ if (vserver == null && widget.hasWidgetType("VSERVER")) {
+ addVserverWidget(widget);
+ } else if (widget.hasWidgetType("LINT")) {
+ return addLIntfWidget(widget);
+ } else if (widget.hasWidgetType("VOLUME")) {
+ addVolumeWidget(widget);
+ return true;
+ }
+ if (!widget.hasWidgetType("OAM_NETWORK")) {
+ return widgets.add(widget);
+ }
+ }
+ return false;
+ } else {
+ return widgets.add(widget);
+ }
}
@Override
- public boolean addWidget(Widget widget) {
- return widgets.add(widget);
+ public WidgetType getWidgetType() {
+ return type;
}
@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 getModelTypeName() {
+ return "resource";
+ }
+
+ @Override
+ public String toString() {
+ 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) {
+ 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.createWidget("LINT"));
+ }
+ if (addvolume) {
+ vserver.addWidget(Widget.createWidget("VOLUME"));
+ }
+ }
+
}