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/NetworkGraphImpl.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
new file mode 100644
index 0000000..5f42ef2
--- /dev/null
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
@@ -0,0 +1,84 @@
+package net.onrc.onos.ofcontroller.networkgraph;
+
+import java.net.InetAddress;
+
+import net.floodlightcontroller.util.MACAddress;
+import net.onrc.onos.datastore.topology.RCPort;
+import net.onrc.onos.datastore.topology.RCSwitch;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import edu.stanford.ramcloud.JRamCloud.ObjectDoesntExistException;
+
+public class NetworkGraphImpl implements NetworkGraph {
+
+	private static final Logger log = LoggerFactory.getLogger(NetworkGraphImpl.class);
+	
+	@Override
+	public Switch getSwitch(long dpid) {
+		SwitchImpl sw = new SwitchImpl(this);
+		
+		RCSwitch rcSwitch = new RCSwitch(dpid);
+		try {
+			rcSwitch.read();
+		} catch (ObjectDoesntExistException e) {
+			log.warn("Tried to get a switch that doesn't exist {}", dpid);
+			return null;
+		}
+		
+		sw.setDpid(rcSwitch.getDpid());
+		
+		for (byte[] portId : rcSwitch.getAllPortIds()) {
+			RCPort rcPort = RCPort.createFromKey(portId);
+			try {
+				rcPort.read();
+				
+				PortImpl port = new PortImpl(this);
+				//port.setDpid(dpid);
+				
+				// TODO why are port numbers long?
+				//port.setPortNumber((short)rcPort.getNumber());
+				
+				port.setSwitch(sw);
+				sw.addPort(port);
+				
+			} catch (ObjectDoesntExistException e) {
+				log.warn("Tried to read port that doesn't exist", rcPort);
+			}
+		}
+		
+		return sw;
+	}
+
+	@Override
+	public Iterable<Switch> getSwitches() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public Iterable<Link> getLinks() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public Iterable<Link> getLinksFromSwitch(long dpid) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public Iterable<Device> getDeviceByIp(InetAddress ipAddress) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public Iterable<Device> getDeviceByMac(MACAddress address) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+}