First draft of SelfContained Object for Event

Change-Id: Ib590f60d54343376022f36541127d3a475c4f8e1
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/DeviceEvent.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/DeviceEvent.java
new file mode 100644
index 0000000..a69b57a
--- /dev/null
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/DeviceEvent.java
@@ -0,0 +1,55 @@
+package net.onrc.onos.ofcontroller.networkgraph;
+
+import java.net.InetAddress;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import net.floodlightcontroller.util.MACAddress;
+import net.onrc.onos.ofcontroller.networkgraph.PortEvent.SwitchPort;
+
+/**
+ * Self-contained Device object for event
+ *
+ * TODO: We probably want common base class/interface for Self-Contained Event Object
+ *
+ */
+public class DeviceEvent {
+    private final MACAddress mac;
+    protected List<SwitchPort> attachmentPoints;
+    protected Set<InetAddress> ipAddresses;
+
+    public DeviceEvent(MACAddress mac) {
+	this.mac = mac;
+	this.attachmentPoints = new LinkedList<>();
+	this.ipAddresses = new HashSet<>();
+    }
+
+    public MACAddress getMac() {
+	return mac;
+    }
+
+    public List<SwitchPort> getAttachmentPoints() {
+	return attachmentPoints;
+    }
+
+    public void setAttachmentPoints(List<SwitchPort> attachmentPoints) {
+	this.attachmentPoints = attachmentPoints;
+    }
+
+    boolean addIpAddress(InetAddress addr) {
+	return this.ipAddresses.add(addr);
+    }
+
+    boolean removeIpAddress(InetAddress addr) {
+	return this.ipAddresses.remove(addr);
+    }
+
+    @Override
+    public String toString() {
+	return "[DeviceEvent " + mac + " attachmentPoints:" + attachmentPoints + " ipAddr:" + ipAddresses + "]";
+    }
+
+
+}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/LinkEvent.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/LinkEvent.java
new file mode 100644
index 0000000..bcea838
--- /dev/null
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/LinkEvent.java
@@ -0,0 +1,36 @@
+package net.onrc.onos.ofcontroller.networkgraph;
+
+import net.onrc.onos.ofcontroller.networkgraph.PortEvent.SwitchPort;
+
+/**
+ * Self-contained Link object for event
+ *
+ * TODO: We probably want common base class/interface for Self-Contained Event Object
+ *
+ */
+public class LinkEvent {
+    private final SwitchPort src;
+    private final SwitchPort dst;
+
+    public LinkEvent(Long src_dpid, Long src_port_no, Long dst_dpid,
+	    Long dst_port_no) {
+
+	src = new SwitchPort(src_dpid, src_port_no);
+	dst = new SwitchPort(dst_dpid, dst_port_no);
+
+    }
+
+    public SwitchPort getSrc() {
+        return src;
+    }
+
+    public SwitchPort getDst() {
+        return dst;
+    }
+
+    @Override
+    public String toString() {
+	return "[LinkEvent " + src + "->" + dst + "]";
+    }
+
+}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/PortEvent.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/PortEvent.java
new file mode 100644
index 0000000..f51ee58
--- /dev/null
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/PortEvent.java
@@ -0,0 +1,55 @@
+package net.onrc.onos.ofcontroller.networkgraph;
+
+/**
+ * Self-contained Port object for event
+ *
+ * TODO: We probably want common base class/interface for Self-Contained Event Object
+ *
+ */
+public class PortEvent {
+    public static class SwitchPort {
+        public final Long dpid;
+        public final Long number;
+
+        public SwitchPort(Long dpid, Long number) {
+            this.dpid = dpid;
+            this.number = number;
+        }
+
+        public Long getDpid() {
+            return dpid;
+        }
+
+        public Long getNumber() {
+            return number;
+        }
+
+        @Override
+        public String toString() {
+            return "(" + Long.toHexString(dpid) + "@" + number + ")";
+        }
+
+    }
+
+    private final SwitchPort id;
+    // TODO Add Hardware Address
+    // TODO Add Description
+
+    public PortEvent(Long dpid, Long number) {
+	this.id = new SwitchPort(dpid, number);
+    }
+
+    public Long getDpid() {
+	return id.dpid;
+    }
+
+    public Long getNumber() {
+	return id.number;
+    }
+
+    @Override
+    public String toString() {
+	return "[PortEvent 0x" + Long.toHexString(id.dpid) + "@" + id.number + "]";
+    }
+
+}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchEvent.java b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchEvent.java
new file mode 100644
index 0000000..5444dd2
--- /dev/null
+++ b/src/main/java/net/onrc/onos/ofcontroller/networkgraph/SwitchEvent.java
@@ -0,0 +1,25 @@
+package net.onrc.onos.ofcontroller.networkgraph;
+
+/**
+ * Self-contained Switch object for event
+ *
+ * TODO: We probably want common base class/interface for Self-Contained Event Object
+ *
+ */
+public class SwitchEvent {
+    private final Long dpid;
+
+    public SwitchEvent(Long dpid) {
+	this.dpid = dpid;
+    }
+
+    public Long getDpid() {
+	return dpid;
+    }
+
+    @Override
+    public String toString() {
+	return "[SwitchEvent 0x" + Long.toHexString(dpid) + "]";
+    }
+
+}