Add RamCloudDB method
diff --git a/src/main/java/net/onrc/onos/graph/RamCloudDBConnection.java b/src/main/java/net/onrc/onos/graph/RamCloudDBConnection.java
index a4fc6de..7841d3e 100644
--- a/src/main/java/net/onrc/onos/graph/RamCloudDBConnection.java
+++ b/src/main/java/net/onrc/onos/graph/RamCloudDBConnection.java
@@ -10,6 +10,8 @@
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.PropertiesConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  *
@@ -17,6 +19,7 @@
  */
 public class RamCloudDBConnection extends DBConnection {
     private RamCloudGraph graph;
+    private static Logger log = LoggerFactory.getLogger(RamCloudDBConnection.class);
 
     public RamCloudDBConnection(final String dbConfigFile) {
         System.out.println("dbconfigfile is + "+ dbConfigFile);
@@ -27,32 +30,46 @@
     
     @Override
     public FramedGraph getFramedGraph() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        if (isValid()) {
+            FramedGraph<RamCloudGraph> fg = new FramedGraph<RamCloudGraph>(graph);
+            return fg;
+        } else {
+            log.error("new FramedGraph failed");
+            return null;
+        }
     }
 
     @Override
     public void addEventListener(LocalGraphChangedListener listener) {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        //TO-DO
     }
 
     @Override
     public Boolean isValid() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        return (graph != null);
     }
 
     @Override
     public void commit() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        try {
+            graph.commit();
+        } catch (Exception e) {
+            log.error("{}", e.toString());
+        }
     }
 
     @Override
     public void rollback() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        try {
+            graph.rollback();
+        } catch (Exception e) {
+            log.error("{}", e.toString());
+        }
     }
 
     @Override
     public void close() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        commit();
     }
     
      private static final Configuration getConfiguration(final File dirOrFile) {
diff --git a/src/main/java/net/onrc/onos/graph/RamCloudDBOperation.java b/src/main/java/net/onrc/onos/graph/RamCloudDBOperation.java
index 69248a2..80c3109 100644
--- a/src/main/java/net/onrc/onos/graph/RamCloudDBOperation.java
+++ b/src/main/java/net/onrc/onos/graph/RamCloudDBOperation.java
@@ -4,15 +4,14 @@
  */
 package net.onrc.onos.graph;
 
-import com.thinkaurelius.titan.core.TitanGraph;
 import com.tinkerpop.blueprints.impls.ramcloud.RamCloudGraph;
 import com.tinkerpop.frames.FramedGraph;
-import java.io.File;
 import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects;
 import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IDeviceObject;
 import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowEntry;
 import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowPath;
 import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
+import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
 import net.onrc.onos.ofcontroller.util.FlowEntryId;
 import net.onrc.onos.ofcontroller.util.FlowId;
 import org.apache.commons.configuration.Configuration;
@@ -24,49 +23,29 @@
 public class RamCloudDBOperation extends DBOperation {
 
     public RamCloudDBOperation() {
-        //Configuration configuration= getConfiguration(new File(dbConfigFile));
-        //final String coordinatorURL = configuration.getProperty("connect.coordinator");
     }
 
     @Override
-    public INetMapTopologyObjects.ISwitchObject searchSwitch(String dpid) {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    public ISwitchObject searchSwitch(String dpid) {
+        final FramedGraph<RamCloudGraph> fg = conn.getFramedGraph();
+
+        return searchSwitch(dpid, fg);
     }
 
     @Override
-    public INetMapTopologyObjects.ISwitchObject searchActiveSwitch(String dpid) {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
-    }
-
-    @Override
-    public Iterable<INetMapTopologyObjects.ISwitchObject> getActiveSwitches() {
+    public Iterable<ISwitchObject> getActiveSwitches() {
         final FramedGraph<RamCloudGraph> fg = conn.getFramedGraph();
         
         return getActiveSwitches(fg);
     }
 
     @Override
-    public Iterable<INetMapTopologyObjects.ISwitchObject> getAllSwitches() {
+    public Iterable<ISwitchObject> getAllSwitches() {
         return getAllSwitches(conn.getFramedGraph());
     }
 
     @Override
-    public Iterable<INetMapTopologyObjects.ISwitchObject> getInactiveSwitches() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
-    }
-
-    @Override
-    public Iterable<INetMapTopologyObjects.IFlowEntry> getAllSwitchNotUpdatedFlowEntries() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
-    }
-
-    @Override
-    public void removeSwitch(INetMapTopologyObjects.ISwitchObject sw) {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
-    }
-
-    @Override
-    public INetMapTopologyObjects.IPortObject newPort(Short portNumber) {
+    public IPortObject newPort(Short portNumber) {
         final FramedGraph<RamCloudGraph> fg = conn.getFramedGraph();
         IPortObject obj = fg.addVertex(null, IPortObject.class);
         if (obj != null) {
@@ -77,7 +56,7 @@
     }
 
     @Override
-    public INetMapTopologyObjects.IPortObject newPort(String dpid, Short portNum) {
+    public IPortObject newPort(String dpid, Short portNum) {
         return super.newPort(dpid, portNum);
     }
 
@@ -95,7 +74,6 @@
         }
     }
 
-
     @Override
     public IDeviceObject searchDevice(String macAddr) {
         FramedGraph<RamCloudGraph> fg = conn.getFramedGraph();
@@ -118,7 +96,7 @@
 
 
     @Override
-    public INetMapTopologyObjects.IFlowPath searchFlowPath(FlowId flowId) {
+    public IFlowPath searchFlowPath(FlowId flowId) {
         FramedGraph<RamCloudGraph> fg = conn.getFramedGraph();
         return searchFlowPath(flowId, fg);
     }
@@ -130,7 +108,7 @@
     }
 
     @Override
-    public void removeFlowPath(INetMapTopologyObjects.IFlowPath flowPath) {
+    public void removeFlowPath(IFlowPath flowPath) {
         FramedGraph<RamCloudGraph> fg = conn.getFramedGraph();
         fg.removeVertex(flowPath.asVertex());
     }
@@ -142,18 +120,25 @@
     }
 
     @Override
-    public INetMapTopologyObjects.IFlowEntry searchFlowEntry(FlowEntryId flowEntryId) {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    public IFlowEntry searchFlowEntry(FlowEntryId flowEntryId) {
+        FramedGraph<RamCloudGraph> fg = conn.getFramedGraph();
+
+        return fg.getVertices("flow_entry_id", flowEntryId.toString()).iterator().hasNext()
+                ? fg.getVertices("flow_entry_id", flowEntryId.toString(),
+                IFlowEntry.class).iterator().next() : null;
     }
 
     @Override
-    public Iterable<INetMapTopologyObjects.IFlowEntry> getAllFlowEntries() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    public Iterable<IFlowEntry> getAllFlowEntries() {
+        FramedGraph<RamCloudGraph> fg = conn.getFramedGraph();
+
+        return fg.getVertices("type", "flow_entry", IFlowEntry.class);
     }
 
     @Override
-    public void removeFlowEntry(INetMapTopologyObjects.IFlowEntry flowEntry) {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    public void removeFlowEntry(IFlowEntry flowEntry) {
+        FramedGraph<RamCloudGraph> fg = conn.getFramedGraph();
+        fg.removeVertex(flowEntry.asVertex());
     }
 
     @Override
@@ -163,16 +148,16 @@
 
     @Override
     public void commit() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        conn.commit();
     }
 
     @Override
     public void rollback() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        conn.rollback();
     }
 
     @Override
     public void close() {
-        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        conn.close();
     }
 }