package jelectrum.db.mongo; import java.util.Map; import java.util.Set; import java.util.LinkedList; import java.util.Collection; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.ByteArrayOutputStream; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; import java.text.DecimalFormat; import com.mongodb.DBCollection; import com.mongodb.DBObject; import com.mongodb.WriteConcern; import jelectrum.db.DBMap; import com.google.protobuf.ByteString; public class MongoMap extends DBMap { private DBCollection collection; public MongoMap(DBCollection collection) { this.collection = collection; } public void clear() { collection.drop(); } public boolean containsKey(String key) { boolean c = (collection.count(new MongoKey(key))>0); return c; } public ByteString get(String key) { DBObject o = collection.findOne(new MongoKey(key)); if (o==null) return null; return MongoEntry.getValueByte(o); } public void put(String key, ByteString value) { collection.save(new MongoEntry(key, value), WriteConcern.ACKNOWLEDGED); } public void putAll(Map<String, ByteString> m) { if (m.size() ==0) return; try { LinkedList<MongoEntry> lst = new LinkedList<MongoEntry>(); for(Map.Entry<String, ByteString> me : m.entrySet()) { lst.add(new MongoEntry(me.getKey(), me.getValue())); } collection.insert(lst, WriteConcern.ACKNOWLEDGED); } catch(com.mongodb.DuplicateKeyException e) { for(Map.Entry<String,ByteString> me : m.entrySet()) { put(me.getKey(), me.getValue()); } } } }