Manual link addition feature assumes Long for Switch identifier and Short for Port...
[controller.git] / opendaylight / topologymanager / src / main / java / org / opendaylight / controller / topologymanager / TopologyUserLinkConfig.java
1
2 /*
3  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
4  *
5  * This program and the accompanying materials are made available under the
6  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
7  * and is available at http://www.eclipse.org/legal/epl-v10.html
8  */
9
10 package org.opendaylight.controller.topologymanager;
11
12 import java.io.Serializable;
13 import java.util.ArrayList;
14 import java.util.List;
15 import javax.xml.bind.annotation.XmlAccessType;
16 import javax.xml.bind.annotation.XmlAccessorType;
17 import javax.xml.bind.annotation.XmlElement;
18 import javax.xml.bind.annotation.XmlRootElement;
19
20 import org.apache.commons.lang3.builder.HashCodeBuilder;
21 import org.opendaylight.controller.sal.core.Node;
22 import org.opendaylight.controller.sal.core.Node.NodeIDType;
23 import org.opendaylight.controller.sal.core.NodeConnector.NodeConnectorIDType;
24 import org.opendaylight.controller.sal.core.NodeConnector;
25 import org.opendaylight.controller.sal.utils.GUIField;
26 import org.slf4j.Logger;
27 import org.slf4j.LoggerFactory;
28
29 /**
30  * The Interface provides methods to manipulate user configured link.
31  */
32 @XmlRootElement
33 @XmlAccessorType(XmlAccessType.NONE)
34 public class TopologyUserLinkConfig implements Serializable {
35     private static final long serialVersionUID = 1L;
36     private static final Logger logger = LoggerFactory.getLogger(TopologyUserLinkConfig.class);
37
38     public enum STATUS {
39         SUCCESS("Success"), LINKDOWN("Link Down"), INCORRECT(
40                 "Incorrect Connection");
41         private STATUS(String name) {
42             this.name = name;
43         }
44
45         private String name;
46
47         public String toString() {
48             return name;
49         }
50
51         public static STATUS fromString(String str) {
52             if (str == null)
53                 return LINKDOWN;
54             if (str.equals(SUCCESS.toString()))
55                 return SUCCESS;
56             if (str.equals(LINKDOWN.toString()))
57                 return LINKDOWN;
58             if (str.equals(INCORRECT.toString()))
59                 return INCORRECT;
60             return LINKDOWN;
61         }
62     }
63
64     @XmlElement
65     private String status;
66     @XmlElement
67     private String name;
68     @XmlElement
69     private String srcNodeConnector;
70     @XmlElement
71     private String dstNodeConnector;
72
73     public TopologyUserLinkConfig() {
74         super();
75         status = STATUS.LINKDOWN.toString();
76     }
77
78     public TopologyUserLinkConfig(String name, String srcNodeConnector, String dstNodeConnector) {
79         super();
80         this.name = name;
81         this.srcNodeConnector = srcNodeConnector;
82         this.dstNodeConnector = dstNodeConnector;
83     }
84
85
86     public String getName() {
87         return name;
88     }
89
90     public void setName(String name) {
91         this.name = name;
92     }
93
94
95     public STATUS getStatus() {
96         return STATUS.fromString(status);
97     }
98
99     public void setStatus(STATUS s) {
100         this.status = s.toString();
101     }
102
103     public String getSrcNodeConnector() {
104         return srcNodeConnector;
105     }
106
107     public void setSrcNodeConnector(String srcNodeConnector) {
108         this.srcNodeConnector = srcNodeConnector;
109     }
110
111     public String getDstNodeConnector() {
112         return dstNodeConnector;
113     }
114
115     public void setDstNodeConnector(String dstNodeConnector) {
116         this.dstNodeConnector = dstNodeConnector;
117     }
118
119     public boolean isValidNodeConnector(String nodeConnectorStr) {
120         NodeConnector nc = NodeConnector.fromString(nodeConnectorStr);
121         if (nc == null) return false;
122         return true;
123     }
124
125     public boolean isValid() {
126         if (name == null || srcNodeConnector == null || dstNodeConnector == null) {
127             return false;
128         }
129
130         if (!isValidNodeConnector(srcNodeConnector) || 
131                 !isValidNodeConnector(dstNodeConnector)) {
132             logger.warn("Invalid NodeConnector");
133             return false;
134         }
135
136         return true;
137     }
138
139     @Override
140     public int hashCode() {
141         final int prime = 31;
142         int result = 1;
143         result = prime
144                 * result
145                 + ((dstNodeConnector == null) ? 0 : dstNodeConnector.hashCode());
146         result = prime * result + ((name == null) ? 0 : name.hashCode());
147         result = prime
148                 * result
149                 + ((srcNodeConnector == null) ? 0 : srcNodeConnector.hashCode());
150         return result;
151     }
152
153     @Override
154     public boolean equals(Object obj) {
155         if (this == obj)
156             return true;
157         if (obj == null)
158             return false;
159         if (getClass() != obj.getClass())
160             return false;
161         TopologyUserLinkConfig other = (TopologyUserLinkConfig) obj;
162         if (dstNodeConnector == null) {
163             if (other.dstNodeConnector != null)
164                 return false;
165         } else if (!dstNodeConnector.equals(other.dstNodeConnector))
166             return false;
167         if (srcNodeConnector == null) {
168             if (other.srcNodeConnector != null)
169                 return false;
170         } else if (!srcNodeConnector.equals(other.srcNodeConnector))
171             return false;
172         return true;
173     }
174
175     @Override
176     public String toString() {
177         return "TopologyUserLinkConfig [status=" + status + ", name=" + name
178                 + ", srcNodeConnector=" + srcNodeConnector
179                 + ", dstNodeConnector=" + dstNodeConnector + "]";
180     }
181 }