Added outline of the path taken through the NetworkGraph by an event generated from the discovery modules

Change-Id: Id875f54f522e3a9135e1a7e9a989167ca532a7a5
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
index 14dfd64..539ca63 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/NetworkGraphImpl.java
@@ -28,13 +28,17 @@
  * re-ordering. e.g.) Link Add came in, but Switch was not there.
  *
  */
-public class NetworkGraphImpl extends AbstractNetworkGraph {
+public class NetworkGraphImpl extends AbstractNetworkGraph
+								implements NetworkGraphDiscoveryInterface {
 
     private static final Logger log = LoggerFactory
 	    .getLogger(NetworkGraphImpl.class);
+    
+    private final NetworkGraphDatastore datastore;
 
     public NetworkGraphImpl() {
 	super();
+	datastore = new NetworkGraphDatastore(this);
     }
 
     /**
@@ -518,4 +522,113 @@
 	    super(message);
 	}
     }
+
+    /* ******************************
+     * NetworkGraphDiscoveryInterface methods
+     * ******************************/
+    
+	@Override
+	public void putSwitchEvent(SwitchEvent switchEvent) {
+		if (checkAddSwitchInvariant()) {
+			datastore.addSwitch(switchEvent);
+			putSwitch(switchEvent);
+		}
+		// TODO handle invariant violation
+	}
+
+	@Override
+	public void removeSwitchEvent(SwitchEvent switchEvent) {
+		if (checkRemoveSwitchInvariant()) {
+			datastore.deactivateSwitch(switchEvent);
+			removeSwitch(switchEvent);
+		}
+		// TODO handle invariant violation
+	}
+
+	@Override
+	public void putPortEvent(PortEvent portEvent) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public void removePortEvent(PortEvent portEvent) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public void putLinkEvent(LinkEvent linkEvent) {
+		if (checkAddLinkInvariant()) {
+			datastore.addLink(linkEvent);
+			putLink(linkEvent);
+		}
+		// TODO handle invariant violation
+	}
+
+	@Override
+	public void removeLinkEvent(LinkEvent linkEvent) {
+		if (checkRemoveLinkInvariant()) {
+			datastore.removeLink(linkEvent);
+			removeLink(linkEvent);
+		}
+		// TODO handle invariant violation
+	}
+
+	@Override
+	public void updateDeviceEvent(DeviceEvent deviceToUpdate,
+			Set<InetAddress> updatedIpAddrs, Set<Port> updatedAttachmentPoints) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public void removeDeviceEvent(DeviceEvent deviceEvent) {
+		// TODO Auto-generated method stub
+		
+	}
+	
+	/* *****************
+	 * Internal methods to check invariants of the network graph
+	 * *****************/
+	
+	private boolean checkAddSwitchInvariant() {
+		// TODO implement
+		return true;
+	}
+	
+	private boolean checkRemoveSwitchInvariant() {
+		// TODO implement
+		return true;
+	}
+	
+	private boolean checkAddPortInvariant() {
+		// TODO implement
+		return true;
+	}
+	
+	private boolean checkRemovePortInvariant() {
+		// TODO implement
+		return true;
+	}
+	
+	private boolean checkAddLinkInvariant() {
+		// TODO implement
+		return true;
+	}
+	
+	private boolean checkRemoveLinkInvariant() {
+		// TODO implement
+		return true;
+	}
+	
+	private boolean checkAddDeviceInvariant() {
+		// TODO implement
+		return true;
+	}
+	
+	private boolean checkRemoveDeviceInvariant() {
+		// TODO implement
+		return true;
+	}
 }