update NetworkGraph objects

- Use Object type instead of built-in
- Port number to Long

Change-Id: I30847b6cca801e58ca49dd9d1667cfd33a8ffb92
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchImpl.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchImpl.java
index 325718a..c1d1a1a 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchImpl.java
@@ -3,9 +3,8 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.HashSet;
+import java.util.LinkedList;
 import java.util.Map;
-import java.util.Set;
 
 import net.onrc.onos.datastore.topology.RCPort;
 import net.onrc.onos.datastore.topology.RCSwitch;
@@ -21,17 +20,17 @@
  */
 public class SwitchImpl extends NetworkGraphObject implements Switch {
 
-	private long dpid;
-	private final Map<Short, Port> ports;
+	private Long dpid;
+	private final Map<Long, Port> ports;
 
-	public SwitchImpl(NetworkGraph graph) {
+	public SwitchImpl(NetworkGraph graph, Long dpid) {
 		super(graph);
-
-		ports = new HashMap<Short, Port>();
+		this.dpid = dpid;
+		ports = new HashMap<Long, Port>();
 	}
 
 	@Override
-	public long getDpid() {
+	public Long getDpid() {
 		return dpid;
 	}
 
@@ -41,7 +40,7 @@
 	}
 
 	@Override
-	public Port getPort(short number) {
+	public Port getPort(Long number) {
 		return ports.get(number);
 	}
 
@@ -58,8 +57,8 @@
 	}
 
 	@Override
-	public Link getLinkToNeighbor(long neighborDpid) {
-		for (Link link : graph.getLinksFromSwitch(dpid)) {
+	public Link getLinkToNeighbor(Long neighborDpid) {
+		for (Link link : graph.getOutgoingLinksFromSwitch(dpid)) {
 			if (link.getDestinationSwitch().getDpid() == neighborDpid) {
 				return link;
 			}
@@ -73,21 +72,14 @@
 		return null;
 	}
 
-	public void setDpid(long dpid) {
-		this.dpid = dpid;
-	}
-
 	public void addPort(Port port) {
 		this.ports.put(port.getNumber(), port);
 	}
-
-	@Override
-	public Iterable<Link> getLinks() {
-		Set<Link> links = new HashSet<>();
-		for( Port p : ports.values()) {
-		    links.add(p.getLink());
-		}
-		return links;
+	
+	public Port addPort(Long portNumber) {
+		PortImpl port = new PortImpl(graph, this, portNumber);
+		ports.put(port.getNumber(), port);
+		return port;
 	}
 
 	public void store() {
@@ -108,4 +100,28 @@
 		}
 
 	}
+
+	@Override
+	public Iterable<Link> getOutgoingLinks() {
+		LinkedList<Link> links = new LinkedList<Link>();
+		for (Port port: getPorts()) {
+			Link link = port.getOutgoingLink(); 
+			if (link != null) {
+				links.add(link);
+			}
+		}
+		return links;
+	}
+
+	@Override
+	public Iterable<Link> getIncomingLinks() {
+		LinkedList<Link> links = new LinkedList<Link>();
+		for (Port port: getPorts()) {
+			Link link = port.getIncomingLink(); 
+			if (link != null) {
+				links.add(link);
+			}
+		}
+		return links;
+	}
 }