Allow RAMCloud to start from a configurable option

Change-Id: Iaab651dbb19be7abe71431a243feca5960d7faf2
diff --git a/src/main/java/com/tinkerpop/blueprints/impls/ramcloud/RamCloudWrite.java b/src/main/java/com/tinkerpop/blueprints/impls/ramcloud/RamCloudWrite.java
index 6b3fba2..69eed7f 100644
--- a/src/main/java/com/tinkerpop/blueprints/impls/ramcloud/RamCloudWrite.java
+++ b/src/main/java/com/tinkerpop/blueprints/impls/ramcloud/RamCloudWrite.java
@@ -29,7 +29,11 @@
 		pm.indexwrite_start("RamCloudIndex writeWithRules()");
 	    }
 	    rcClient.writeRule(tableId, rcKey, rcValue, rules);
-	    pm.indexwrite_end("RamCloudIndex writeWithRules()");
+            if (perfMonKind.equals(PerfMonEnum.WRITE)) {
+                pm.write_end("RamCloudIndex writeWithRules()");
+            } else if (perfMonKind.equals(PerfMonEnum.INDEXWRITE)) {
+                pm.indexwrite_end("RamCloudIndex writeWithRules()");
+            }
 	} catch (Exception e) {
 	    if (perfMonKind.equals(PerfMonEnum.WRITE)) {
 		pm.write_end("RamCloudIndex writeWithRules()");
diff --git a/src/main/java/net/onrc/onos/graph/GraphDBManager.java b/src/main/java/net/onrc/onos/graph/GraphDBManager.java
index ec7eb7f..3eec68f 100644
--- a/src/main/java/net/onrc/onos/graph/GraphDBManager.java
+++ b/src/main/java/net/onrc/onos/graph/GraphDBManager.java
@@ -9,14 +9,11 @@
 import java.util.List;
 import java.util.Map;
 
-/**
- *
- * @author nickkaranatsios
- */
 public class GraphDBManager {
     private static ThreadLocal<HashMap<String, DBConnection>> connections = new ThreadLocal<HashMap<String, DBConnection>>();
     private static DBOperation operation = null;
-    
+    private final static String DB_CONFIG_FILE = "conf/ramcloud.conf";
+
     static Map<String, DBConnection> getConnectionMap() {
         if (connections.get() == null) {
             connections.set(new HashMap<String, DBConnection>());
@@ -24,14 +21,18 @@
         return connections.get();
     }
 
-    public static DBOperation getDBOperation(final String dbStore, final String dbConfigFile) {
+    public static DBOperation getDBOperation() {
+        return getDBOperation("ramcloud");
+    }
+
+    public static DBOperation getDBOperation(final String dbStore) {
 	if (dbStore.equals("ramcloud")) {
 	    operation = new RamCloudDBOperation();
 	} else if (dbStore.equals("titan")) {
 	    operation = new TitanDBOperation();
 	}
 	if (operation != null) {
-	    operation.conn = GraphDBManager.getConnection(dbStore, dbConfigFile);
+	    operation.conn = GraphDBManager.getConnection(dbStore, DB_CONFIG_FILE);
 	}
         return operation;
     }
diff --git a/src/main/java/net/onrc/onos/graph/RamCloudDBConnection.java b/src/main/java/net/onrc/onos/graph/RamCloudDBConnection.java
index 547da44..f23db92 100644
--- a/src/main/java/net/onrc/onos/graph/RamCloudDBConnection.java
+++ b/src/main/java/net/onrc/onos/graph/RamCloudDBConnection.java
@@ -1,7 +1,3 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
 package net.onrc.onos.graph;
 
 import com.tinkerpop.blueprints.Vertex;
@@ -15,10 +11,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-/**
- *
- * @author nickkaranatsios
- */
 public class RamCloudDBConnection extends DBConnection {
     private RamCloudGraph graph;
     private FramedGraph<RamCloudGraph> fg;
diff --git a/src/main/java/net/onrc/onos/graph/RamCloudDBOperation.java b/src/main/java/net/onrc/onos/graph/RamCloudDBOperation.java
index 1487be7..5cc1e53 100644
--- a/src/main/java/net/onrc/onos/graph/RamCloudDBOperation.java
+++ b/src/main/java/net/onrc/onos/graph/RamCloudDBOperation.java
@@ -1,25 +1,5 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
 package net.onrc.onos.graph;
 
-import com.tinkerpop.blueprints.impls.ramcloud.RamCloudGraph;
-import com.tinkerpop.frames.FramedGraph;
-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;
-
-/**
- *
- * @author nickkaranatsios
- */
 public class RamCloudDBOperation extends DBOperation {
 
     public RamCloudDBOperation() {
diff --git a/src/main/java/net/onrc/onos/graph/TitanDBConnection.java b/src/main/java/net/onrc/onos/graph/TitanDBConnection.java
index f46e417..94ad43c 100644
--- a/src/main/java/net/onrc/onos/graph/TitanDBConnection.java
+++ b/src/main/java/net/onrc/onos/graph/TitanDBConnection.java
@@ -1,7 +1,3 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
 package net.onrc.onos.graph;
 
 import com.thinkaurelius.titan.core.TitanFactory;
@@ -14,10 +10,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-/**
- *
- * @author nickkaranatsios
- */
 public class TitanDBConnection extends DBConnection {
 
     private TitanGraph graph;
diff --git a/src/main/java/net/onrc/onos/graph/TitanDBOperation.java b/src/main/java/net/onrc/onos/graph/TitanDBOperation.java
index 1b211d6..a6ccfdf 100644
--- a/src/main/java/net/onrc/onos/graph/TitanDBOperation.java
+++ b/src/main/java/net/onrc/onos/graph/TitanDBOperation.java
@@ -1,26 +1,7 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
 package net.onrc.onos.graph;
 
-import com.thinkaurelius.titan.core.TitanGraph;
-import com.tinkerpop.blueprints.Vertex;
-import com.tinkerpop.frames.FramedGraph;
-import com.tinkerpop.frames.structures.FramedVertexIterable;
-import com.tinkerpop.gremlin.java.GremlinPipeline;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
 import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.*;
-import net.onrc.onos.ofcontroller.core.ISwitchStorage;
-import net.onrc.onos.ofcontroller.util.FlowEntryId;
-import net.onrc.onos.ofcontroller.util.FlowId;
 
-/**
- *
- * @author nickkaranatsios
- */
 public class TitanDBOperation extends DBOperation {
 
-}
\ No newline at end of file
+}
diff --git a/src/main/java/net/onrc/onos/graph/web/TopoDevicesResource.java b/src/main/java/net/onrc/onos/graph/web/TopoDevicesResource.java
index 4f4abba..2289a0b 100644
--- a/src/main/java/net/onrc/onos/graph/web/TopoDevicesResource.java
+++ b/src/main/java/net/onrc/onos/graph/web/TopoDevicesResource.java
@@ -13,7 +13,7 @@
 	
 	@Get("json")
 	public Iterator<IDeviceObject> retrieve() {
-		DBOperation op = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+		DBOperation op = GraphDBManager.getDBOperation();
 		
 		return op.getDevices().iterator();
 	}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java
index 6fcbb29..0699491 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java
@@ -38,7 +38,7 @@
 	@Override
 	public void init(final String dbStore, final String conf) {
 		try {
-			ope = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+			ope = GraphDBManager.getDBOperation();
 		} catch (Exception e) {
 			log.error("Couldn't open graph operation", e);
 		}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/LinkStorageImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/LinkStorageImpl.java
index b43c58a..1f7815d 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/internal/LinkStorageImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/LinkStorageImpl.java
@@ -33,7 +33,7 @@
 	 */
 	@Override
 	public void init(final String dbStore, final String conf) {
-		this.dbop = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+		this.dbop = GraphDBManager.getDBOperation();
 
 	}
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java
index ab73961..1f3a626 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/SwitchStorageImpl.java
@@ -38,7 +38,7 @@
 	 */
 	@Override
 	public void init(final String dbStore, final String conf) {
-		op = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+		op = GraphDBManager.getDBOperation();
 	}
 
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoLinkServiceImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoLinkServiceImpl.java
index 3aea9a4..718816d 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoLinkServiceImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoLinkServiceImpl.java
@@ -35,9 +35,7 @@
 
 	@Override
 	public List<Link> getActiveLinks() {
-		dbop = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
-		//dbop = GraphDBManager.getDBOperation("", "");
-		//dbop.commit(); //Commit to ensure we see latest data
+		dbop = GraphDBManager.getDBOperation();
 		Iterable<ISwitchObject> switches = dbop.getActiveSwitches();
 		List<Link> links = new ArrayList<Link>(); 
 		for (ISwitchObject sw : switches) {
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoSwitchServiceImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoSwitchServiceImpl.java
index df5ab70..56e6b73 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoSwitchServiceImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/TopoSwitchServiceImpl.java
@@ -15,7 +15,7 @@
 	protected final static Logger log = LoggerFactory.getLogger(TopoSwitchServiceImpl.class);
 
 	public TopoSwitchServiceImpl(final String dbStore, String conf) {
-		op = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+		op = GraphDBManager.getDBOperation();
 	}
 
 	public TopoSwitchServiceImpl() {
diff --git a/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java b/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java
index bc5962a..99357be 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/floodlightlistener/NetworkGraphPublisher.java
@@ -90,7 +90,7 @@
             Thread.currentThread().setName("SwitchCleanup@" + old);
             try {
             	log.debug("Running cleanup thread");
-		op = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+		op = GraphDBManager.getDBOperation();
                 switchCleanup();
             }
             catch (Exception e) {
@@ -451,7 +451,7 @@
 		Map<String, String> configMap = context.getConfigParams(this);
 		String conf = configMap.get(DBConfigFile);
                 String dbStore = configMap.get(GraphDBStore);
-		op = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+		op = GraphDBManager.getDBOperation();
 
 		floodlightProvider =
 	            context.getServiceImpl(IFloodlightProviderService.class);
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/ApplnObjectType.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/ApplnObjectType.java
index 8cb1316..6fa2cd1 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/ApplnObjectType.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/ApplnObjectType.java
@@ -4,10 +4,6 @@
  */
 package net.onrc.onos.ofcontroller.flowmanager;
 
-/**
- *
- * @author nickkaranatsios
- */
 public enum ApplnObjectType {
     FLOWPATH,
     FLOWENTRY,  
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/DBOperationType.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/DBOperationType.java
index e0de595..8764ce4 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/DBOperationType.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/DBOperationType.java
@@ -4,10 +4,6 @@
  */
 package net.onrc.onos.ofcontroller.flowmanager;
 
-/**
- *
- * @author nickkaranatsios
- */
 public enum DBOperationType {
     ADD,
     UPDATE,
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowDatabaseOperation.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowDatabaseOperation.java
index d8e50fc..cedfdfd 100755
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowDatabaseOperation.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowDatabaseOperation.java
@@ -5,7 +5,6 @@
 import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.LinkedList;
 import java.util.Map;
 
 import net.floodlightcontroller.core.IOFSwitch;
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEntity.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEntity.java
index ff890b6..327fae5 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEntity.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEntity.java
@@ -19,10 +19,6 @@
 import java.util.List;
 import java.util.Set;
 
-/**
- *
- * @author nickkaranatsios
- */
 public class FlowEntity implements FlowEntityManager {
     private String primaryKey;
     // TODO: Should remove since not implemented.
@@ -214,7 +210,9 @@
                     if (srcVertex == null) continue;
                     for (int j = 0; j < childEntity.edges.size(); j++) {
                         EntityEdge edge = (EntityEdge) childEntity.edges.get(j);
-                        edgesToSet.add(new RamCloudEdgeEntity(srcVertex, ((IBaseObject) edge.dst).asVertex(), edge.dir, edge.label));
+                        if (edge !=null) {
+                            edgesToSet.add(new RamCloudEdgeEntity(srcVertex, ((IBaseObject) edge.dst).asVertex(), edge.dir, edge.label));
+                        }
                     }
                 }
                 graph.addEdges(edgesToSet);
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEntityManager.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEntityManager.java
index 38e694b..5e45ee5 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEntityManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEntityManager.java
@@ -8,10 +8,6 @@
 import java.util.Map;
 import net.onrc.onos.graph.DBOperation;
 
-/**
- *
- * @author nickkaranatsios
- */
 public interface FlowEntityManager {
     public void setPrimaryKey(String key);
     public String getPrimaryKey();
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEventHandler.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEventHandler.java
index 74c8075..5ff1dc5 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEventHandler.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowEventHandler.java
@@ -126,7 +126,7 @@
      * Startup processing.
      */
     private void startup() {
-	this.dbHandler = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+	this.dbHandler = GraphDBManager.getDBOperation();
 
 	//
 	// Obtain the initial Topology state
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
index 715f9df..f4664cc 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
@@ -87,8 +87,8 @@
      */
     @Override
     public void init(final String dbStore, final String conf) {
-	dbHandlerApi = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
-	dbHandlerInner = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+	dbHandlerApi = GraphDBManager.getDBOperation();
+	dbHandlerInner = GraphDBManager.getDBOperation();
     }
 
     /**
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowSynchronizer.java b/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowSynchronizer.java
index bd98527..17ef14c 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowSynchronizer.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowprogrammer/FlowSynchronizer.java
@@ -50,7 +50,7 @@
     private Map<IOFSwitch, FutureTask<SyncResult>> switchThreads; 
 
     public FlowSynchronizer() {
-	dbHandler = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+	dbHandler = GraphDBManager.getDBOperation();
 	switchThreads = new HashMap<IOFSwitch, FutureTask<SyncResult>>();
     }
 
diff --git a/src/main/java/net/onrc/onos/ofcontroller/topology/TopologyManager.java b/src/main/java/net/onrc/onos/ofcontroller/topology/TopologyManager.java
index bf2fd6f..cae29ce 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/topology/TopologyManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/topology/TopologyManager.java
@@ -80,7 +80,7 @@
      */
     public void init(final String dbStore, String config) {
 	try {
-	    dbHandler = GraphDBManager.getDBOperation("ramcloud", "/tmp/ramcloud.conf");
+	    dbHandler = GraphDBManager.getDBOperation();
 	} catch (Exception e) {
 	    log.error(e.getMessage());
 	}