--- /dev/null
+
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.controller.topologymanager;
+
+import java.io.Serializable;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.opendaylight.controller.sal.core.NodeConnector;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The Interface provides methods to manipulate user configured link.
+ */
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.NONE)
+public class TopologyUserLinkConfig implements Serializable {
+ private static final long serialVersionUID = 1L;
+ private static final Logger logger = LoggerFactory.getLogger(TopologyUserLinkConfig.class);
+
+ public enum STATUS {
+ SUCCESS("Success"), LINKDOWN("Link Down"), INCORRECT(
+ "Incorrect Connection");
+ private STATUS(String name) {
+ this.name = name;
+ }
+
+ private String name;
+
+ public String toString() {
+ return name;
+ }
+
+ public static STATUS fromString(String str) {
+ if (str == null)
+ return LINKDOWN;
+ if (str.equals(SUCCESS.toString()))
+ return SUCCESS;
+ if (str.equals(LINKDOWN.toString()))
+ return LINKDOWN;
+ if (str.equals(INCORRECT.toString()))
+ return INCORRECT;
+ return LINKDOWN;
+ }
+ }
+
+ @XmlElement
+ private String status;
+ @XmlElement
+ private String name;
+ @XmlElement
+ private String srcNodeConnector;
+ @XmlElement
+ private String dstNodeConnector;
+
+ public TopologyUserLinkConfig() {
+ super();
+ status = STATUS.LINKDOWN.toString();
+ }
+
+ public TopologyUserLinkConfig(String name, String srcNodeConnector, String dstNodeConnector) {
+ super();
+ this.name = name;
+ this.srcNodeConnector = srcNodeConnector;
+ this.dstNodeConnector = dstNodeConnector;
+ }
+
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+
+ public STATUS getStatus() {
+ return STATUS.fromString(status);
+ }
+
+ public void setStatus(STATUS s) {
+ this.status = s.toString();
+ }
+
+ public String getSrcNodeConnector() {
+ return srcNodeConnector;
+ }
+
+ public void setSrcNodeConnector(String srcNodeConnector) {
+ this.srcNodeConnector = srcNodeConnector;
+ }
+
+ public String getDstNodeConnector() {
+ return dstNodeConnector;
+ }
+
+ public void setDstNodeConnector(String dstNodeConnector) {
+ this.dstNodeConnector = dstNodeConnector;
+ }
+
+ public boolean isValidNodeConnector(String nodeConnectorStr) {
+ NodeConnector nc = NodeConnector.fromString(nodeConnectorStr);
+ if (nc == null) return false;
+ return true;
+ }
+
+ public boolean isValid() {
+ if (name == null || srcNodeConnector == null || dstNodeConnector == null) {
+ return false;
+ }
+
+ if (!isValidNodeConnector(srcNodeConnector) ||
+ !isValidNodeConnector(dstNodeConnector)) {
+ logger.debug("Invalid NodeConnector in user link: {}", this);
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime
+ * result
+ + ((dstNodeConnector == null) ? 0 : dstNodeConnector.hashCode());
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ result = prime
+ * result
+ + ((srcNodeConnector == null) ? 0 : srcNodeConnector.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ TopologyUserLinkConfig other = (TopologyUserLinkConfig) obj;
+ if (dstNodeConnector == null) {
+ if (other.dstNodeConnector != null)
+ return false;
+ } else if (!dstNodeConnector.equals(other.dstNodeConnector))
+ return false;
+ if (srcNodeConnector == null) {
+ if (other.srcNodeConnector != null)
+ return false;
+ } else if (!srcNodeConnector.equals(other.srcNodeConnector))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "TopologyUserLinkConfig [status=" + status + ", name=" + name
+ + ", srcNodeConnector=" + srcNodeConnector
+ + ", dstNodeConnector=" + dstNodeConnector + "]";
+ }
+}