package jelectrum.db.lobstack;

import java.util.Map;
import java.util.TreeMap;
import java.nio.ByteBuffer;

import jelectrum.db.DBMap;
import lobstack.Lobstack;

import com.google.protobuf.ByteString;


public class LobstackMap extends DBMap
{
  Lobstack stack;

  public LobstackMap(Lobstack stack)
  {
    this.stack = stack;
  }

  public ByteString get(String key)
  {
    try
    {
      ByteBuffer bb = stack.get(key);
      if (bb == null) return null;
      else return ByteString.copyFrom(bb);
    }
    catch(java.io.IOException e)
    {
      throw new RuntimeException(e);
    }
  }
  
  public void put(String key, ByteString value)
  {
    try
    {
      stack.put(key, ByteBuffer.wrap(value.toByteArray()));
    }
    catch(java.io.IOException e)
    {
      throw new RuntimeException(e);
    }
  }

  public void putAll(Map<String, ByteString> m)
  {
    try
    {
      TreeMap<String, ByteBuffer> pm = new TreeMap<>();
      for(Map.Entry<String, ByteString> me : m.entrySet())
      {
        pm.put(me.getKey(), ByteBuffer.wrap(me.getValue().toByteArray()));
      }
      stack.putAll(pm);
    }
    catch(java.io.IOException e)
    {
      throw new RuntimeException(e);
    }


  }


}