Created basic network graph objects, and implementation for the southbound API against the Ramcloud datastore

Change-Id: I2172dacb171f27ba2099ee5a52835030d2004689

Created basic objects and southbound API to build the network graph

Change-Id: I061efdf10e5e8549f7192844d10781dc28ee62d4

Added basic northbound get switch method on network graph

Change-Id: I4f2e4d4a4df00979abc927ef0772997dcdebc4e2
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchImpl.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchImpl.java
new file mode 100644
index 0000000..7b83224
--- /dev/null
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchImpl.java
@@ -0,0 +1,99 @@
+package net.onrc.onos.ofcontroller.networkgraph;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import edu.stanford.ramcloud.JRamCloud.ObjectDoesntExistException;
+import edu.stanford.ramcloud.JRamCloud.WrongVersionException;
+import net.onrc.onos.datastore.topology.RCPort;
+import net.onrc.onos.datastore.topology.RCSwitch;
+import net.onrc.onos.ofcontroller.util.FlowEntry;
+
+public class SwitchImpl extends NetworkGraphObject implements Switch {
+	
+	private long dpid;
+	private final Map<Short, Port> ports;
+
+	public SwitchImpl(NetworkGraph graph) {
+		super(graph);
+		
+		ports = new HashMap<Short, Port>();
+	}
+
+	@Override
+	public long getDpid() {
+		return dpid;
+	}
+
+	@Override
+	public Collection<Port> getPorts() {
+		return Collections.unmodifiableCollection(ports.values());
+	}
+
+	@Override
+	public Port getPort(short number) {
+		return ports.get(number);
+	}
+
+	@Override
+	public Collection<FlowEntry> getFlowEntries() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public Iterable<Switch> getNeighbors() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public Link getLinkToNeighbor(long neighborDpid) {
+		for (Link link : graph.getLinksFromSwitch(dpid)) {
+			if (link.getDestinationSwitch().getDpid() == neighborDpid) {
+				return link;
+			}
+		}
+		return null;
+	}
+
+	@Override
+	public Collection<Device> getDevices() {
+		// TODO Auto-generated method stub
+		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() {
+		return graph.getLinksFromSwitch(dpid);
+	}
+	
+	public void store() {
+		RCSwitch rcSwitch = new RCSwitch(dpid);
+		
+		for (Port port : ports.values()) {
+			RCPort rcPort = new RCPort(dpid, (long)port.getNumber());
+			rcSwitch.addPortId(rcPort.getId());
+		}
+		
+		
+		try {
+			rcSwitch.update();
+			
+		} catch (ObjectDoesntExistException | WrongVersionException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		
+	}
+}