aboutsummaryrefslogtreecommitdiffstats
path: root/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/impl/xml/MwtNotificationBase.java
blob: 13576d69d38f618f578213cbbc40efec21ad53d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*
 * ============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.rev201110.ConnectionLogStatus;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ConnectionlogBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.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
        this.objectId = EMPTY;
    }

    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 + "]";
    }



}