SDN-R add updated devicemanager
[ccsdk/features.git] / sdnr / wt / devicemanager / provider / src / main / java / org / onap / ccsdk / features / sdnr / wt / devicemanager / impl / xml / MwtNotificationBase.java
diff --git a/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/impl/xml/MwtNotificationBase.java b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/impl/xml/MwtNotificationBase.java
new file mode 100644 (file)
index 0000000..156f922
--- /dev/null
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt
+ * =================================================================================================
+ * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
+ * =================================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END==========================================================================
+ ******************************************************************************/
+package org.onap.ccsdk.features.sdnr.wt.devicemanager.impl.xml;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import javax.annotation.Nonnull;
+import javax.xml.bind.annotation.XmlElement;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.impl.util.InternalDateAndTime;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus.ConnectionStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ConnectionLogStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ConnectionlogBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.ConnectionlogEntity;
+
+public class MwtNotificationBase {
+
+    private static String EMPTY = "empty";
+
+    private String nodeName;
+    private String counter;
+    private String timeStamp;
+    private @Nonnull String objectId;
+
+    public MwtNotificationBase() {
+        // For Jaxb
+    }
+
+    public MwtNotificationBase(String nodeName, Integer counter, InternalDateAndTime timeStamp, String objectId) {
+        this.nodeName = nodeName;
+        this.counter = String.valueOf(counter);
+        this.timeStamp = timeStamp.getValue();
+        this.objectId = objectId;
+        if (this.objectId == null) {
+            this.objectId = EMPTY;
+        }
+    }
+
+    @XmlElement(name = "nodeName")
+    public String getNodeName() {
+        return nodeName;
+    }
+
+    @XmlElement(name = "counter")
+    public String getCounter() {
+        return counter;
+    }
+
+    @XmlElement(name = "timeStamp")
+    public String getTimeStamp() {
+        return timeStamp;
+    }
+
+    @XmlElement(name = "objectId")
+    public String getObjectId() {
+        return objectId;
+    }
+
+    /**
+     * Provide ConnectionlogEntity type
+     * @return ConnectionlogEntity
+     */
+    public ConnectionlogEntity getConnectionlogEntity() {
+        return new ConnectionlogBuilder()
+                .setNodeId(objectId)
+                .setStatus(getStatus())
+                .setTimestamp(new DateAndTime(timeStamp))
+                .build();
+    }
+
+    /**
+     * Provide connection status for mountpoint log.
+     * TODO Add status disconnected if mountpoint is required, but does not exists.
+     * @return
+     */
+    private ConnectionLogStatus getStatus() {
+
+        if (this instanceof ObjectCreationNotificationXml) {
+            return ConnectionLogStatus.Mounted;
+
+        } else if (this instanceof ObjectDeletionNotificationXml) {
+            return ConnectionLogStatus.Unmounted;
+
+        } else if (this instanceof AttributeValueChangedNotificationXml) {
+            String pnx = ((AttributeValueChangedNotificationXml)this).getNewValue();
+            if (pnx.equals(ConnectionStatus.Connected.getName())) {
+                return ConnectionLogStatus.Connected;
+
+            } else if (pnx.equals(ConnectionStatus.Connecting.getName())) {
+                return ConnectionLogStatus.Connecting;
+
+            } else if (pnx.equals(ConnectionStatus.UnableToConnect.getName())) {
+                return ConnectionLogStatus.UnableToConnect;
+            }
+        }
+        return ConnectionLogStatus.Undefined;
+    }
+
+    /**
+     * Type for the Database to document the the same name that is used in the websockets.
+     * @return String with type name of child class
+     */
+    @JsonProperty("type")
+    public String getType() {
+        return this.getClass().getSimpleName();
+    }
+
+    @Override
+    public String toString() {
+        return "MwtNotificationBase [getType()="+ getType() + ", nodeName=" + nodeName + ", counter=" + counter + ", timeStamp=" + timeStamp
+                + ", objectId=" + objectId + "]";
+    }
+
+
+
+}