Index ports for faster search
diff --git a/src/main/java/net/onrc/onos/graph/GraphDBOperation.java b/src/main/java/net/onrc/onos/graph/GraphDBOperation.java
index 0718db2..acfe43b 100644
--- a/src/main/java/net/onrc/onos/graph/GraphDBOperation.java
+++ b/src/main/java/net/onrc/onos/graph/GraphDBOperation.java
@@ -3,6 +3,8 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.openflow.protocol.OFPhysicalPort;
+
 import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IDeviceObject;
 import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowEntry;
 import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowPath;
@@ -12,6 +14,7 @@
 import net.onrc.onos.ofcontroller.util.FlowEntryId;
 import net.onrc.onos.ofcontroller.util.FlowId;
 
+import com.google.common.base.Stopwatch;
 import com.thinkaurelius.titan.core.TitanGraph;
 import com.tinkerpop.blueprints.Vertex;
 import com.tinkerpop.frames.FramedGraph;
@@ -56,7 +59,7 @@
 	 * @param dpid DPID of the switch 
 	 */
 	public ISwitchObject searchSwitch(String dpid) {
-		// TODO Auto-generated method stub
+
 		FramedGraph<TitanGraph> fg = conn.getFramedGraph();
 		
 		return (fg != null && fg.getVertices("dpid",dpid).iterator().hasNext()) ? 
@@ -136,11 +139,26 @@
 		FramedGraph<TitanGraph> fg = conn.getFramedGraph();	
 		fg.removeVertex(sw.asVertex());		
 	}
+	
+	@Override
+	public IPortObject newPort(String dpid, Short portNumber) {
+		FramedGraph<TitanGraph> fg = conn.getFramedGraph();	
+		IPortObject obj = fg.addVertex(null,IPortObject.class);
+		if (obj != null) {
+			obj.setType("port");
+			String id = dpid + portNumber.toString();
+			obj.setPortId(id);
+			obj.setNumber(portNumber);
+		}
+		return obj;	
+		
+	}
 
 	/**
 	 * Create a port having specified port number.
 	 * @param portNumber port number
 	 */
+	@Deprecated
 	public IPortObject newPort(Short portNumber) {
 		FramedGraph<TitanGraph> fg = conn.getFramedGraph();	
 		IPortObject obj = fg.addVertex(null,IPortObject.class);
@@ -156,32 +174,11 @@
 	 * @param dpid DPID of a switch
 	 * @param number port number of the switch's port
 	 */
-	public IPortObject searchPort(String dpid, short number) {
-		ISwitchObject sw = searchSwitch(dpid);
-		if (sw != null) {
-			
-			IPortObject port = null;
-			
-			// Requires Frames 2.3.0
-			
-			try {
-				port = sw.getPort(number);
-			} catch (Exception e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
-			}
-			
-			return port;
-		}
-			
-	//		if (sw != null) {
-	//			GremlinPipeline<Vertex, IPortObject> pipe = new GremlinPipeline<Vertex, IPortObject>();
-	//			pipe.start(sw.asVertex());
-	//			pipe.out("on").has("number", number);
-	//			FramedVertexIterable<IPortObject> r = new FramedVertexIterable<IPortObject>(conn.getFramedGraph(), (Iterable) pipe, IPortObject.class);
-	//			return r != null && r.iterator().hasNext() ? r.iterator().next() : null;
-	//		}
-		return null;
+	public IPortObject searchPort(String dpid, Short number) {
+		FramedGraph<TitanGraph> fg = conn.getFramedGraph();
+		String id = dpid + number.toString();
+		return (fg != null && fg.getVertices("port_id",id).iterator().hasNext()) ? 
+				fg.getVertices("port_id",id,IPortObject.class).iterator().next() : null;
 	}
 
 	/**
@@ -359,4 +356,6 @@
 	public void close() {
 		conn.close();
 	}
+
+
 }