package implementations;
/**
* Copyright 2011 Thibault Dory
* Licensed under the GPL Version 3 license
*/
import core.BenchDB;
import voldemort.VoldemortException;
import voldemort.client.ClientConfig;
import voldemort.client.SocketStoreClientFactory;
import voldemort.client.StoreClient;
import voldemort.client.StoreClientFactory;
/**
*
* @author Thibault Dory
* This class should work except for the searchDB function as there is no MapReduce implementation in Voldemort
*/
public class voldermortDB extends BenchDB{
StoreClient<String, String> client;
StoreClientFactory factory;
@Override
public int connectNode(String nodeAddress) {
int ret;
try{
String bootstrapUrl = "tcp://"+nodeAddress+":6666";
factory = new SocketStoreClientFactory(new ClientConfig().setBootstrapUrls(bootstrapUrl));
client = factory.getStoreClient("test");
ret = 1;
}catch(Exception e){
e.printStackTrace();
ret = -1;
}
return ret;
}
@Override
public String readDB(String ID) {
String res;
try{
res = client.get(ID).getValue();
} catch(VoldemortException e) {
res = null;
}
return res;
}
@Override
public int updateDB(String ID, String newValue) {
int ret;
try{
client.put(ID, newValue);
ret = 1;
} catch(VoldemortException e) {
ret = -1;
}
return ret;
}
@Override
public int writeDB(String ID, String Value) {
return updateDB(ID, Value);
}
@Override
public void searchDB(String keyword) {
// There is no MapReduce implementation in voldemort
}
@Override
public void close() {
factory.close();
}
}