package lastkilometer.BerkeleyDB;
import java.io.FileNotFoundException;
import java.util.Map.Entry;
//import java.util.concurrent.locks.Lock;
//import java.util.concurrent.locks.ReadWriteLock;
//import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.Set;
import com.sleepycat.bind.EntryBinding;
import com.sleepycat.bind.serial.SerialBinding;
import com.sleepycat.collections.StoredMap;
import com.sleepycat.je.DatabaseException;
/**
* 对数据库进行保存、查找、删除等操作
*
* 数据存入数据库的格式为:Map<IP,Map<在线日期,Map<时刻,点击量>>>
*
* */
public class BerkeleyDB extends AbstractDBD{
private StoredMap<String,Object> pendingUrisDB = null;
public BerkeleyDB(String homeDirectory) throws DatabaseException,FileNotFoundException {
super(homeDirectory);
// TODO Auto-generated constructor stub
EntryBinding<String> keyBinding = new SerialBinding<String>(javaCatalog, String.class);
EntryBinding<Object> valueBinding = new SerialBinding<Object>(javaCatalog,Object.class);
pendingUrisDB = new StoredMap<String, Object>(database, keyBinding, valueBinding, true);
}
/**
* 迭代数据库
*
* */
public Set<Entry<String, Object>> iteration(){
return pendingUrisDB.entrySet();
}
/**
* 存入数据库
*
* */
public void putData(String key, Object value){
put(key, value);
}
/**
* 根据key值取value值
* */
public Object getData(String key){
return get(key);
}
/**
* 根据key判断是否包含该记录
*
* */
public boolean containsKey(Object key){
return pendingUrisDB.containsKey(key);
}
/**
* 关闭数据库
* */
public void closeBDB(){
close();
}
@Override
protected void put(Object key, Object value) {
// TODO Auto-generated method stub
pendingUrisDB.put((String)key, value);
}
@Override
protected Object get(Object key) {
// TODO Auto-generated method stub
return pendingUrisDB.get(key);
}
@Override
protected Object delete(Object key) {
// TODO Auto-generated method stub
return pendingUrisDB.remove(key);
}
}