+
+ 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() {
+ final String uuid = getModelNameVersionId();
+ return uuid == null ? 0 : uuid.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof Resource) {
+ return getModelNameVersionId().equals(((Resource) obj).getModelNameVersionId());
+ }
+ return false;
+ }
+
+ @Override
+ 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 == 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 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));
+ }
+ }