package jelectrum.db.lobstack;
import java.util.Map;
import java.util.TreeMap;
import java.util.Set;
import java.util.HashSet;
import java.util.Collection;
import jelectrum.db.DBMapSet;
import java.nio.ByteBuffer;
import org.bitcoinj.core.Sha256Hash;
import lobstack.Lobstack;
import jelectrum.db.DBTooManyResultsException;
public class LobstackMapSet extends DBMapSet
{
private Lobstack stack;
public LobstackMapSet(Lobstack stack)
{
this.stack = stack;
}
public Set<Sha256Hash> getSet(String p, int max_results)
{
try
{
HashSet<Sha256Hash> ret = new HashSet<Sha256Hash>();
String search = p + "/";
int len = search.length();
int count = 0;
for(String s : stack.getByPrefix(search).keySet())
{
ret.add(new Sha256Hash(s.substring(len)));
count ++;
if (count > max_results) throw new DBTooManyResultsException();
}
return ret;
}
catch(java.io.IOException e){throw new RuntimeException(e);}
}
public void addAll(Collection<Map.Entry<String, Sha256Hash> > lst)
{
try
{
Map<String, ByteBuffer> write_map = new TreeMap<String, ByteBuffer>();
byte[] buff=new byte[0];
ByteBuffer bb = ByteBuffer.wrap(buff);
for(Map.Entry<String, Sha256Hash> me : lst)
{
write_map.put(me.getKey() + "/" + me.getValue(), bb);
}
stack.putAll(write_map);
}
catch(java.io.IOException e){throw new RuntimeException(e);}
}
public void add(String p, Sha256Hash v)
{
try
{
byte[] buff=new byte[0];
ByteBuffer bb = ByteBuffer.wrap(buff);
stack.put(p + "/" + v, bb);
}
catch(java.io.IOException e){throw new RuntimeException(e);}
}
}