Package dovetaildb.apiservice

Source Code of dovetaildb.apiservice.ApiBuffer

package dovetaildb.apiservice;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;

import dovetaildb.bagindex.EditRec;
import dovetaildb.bagindex.TrivialBagIndex;
import dovetaildb.bytes.ArrayBytes;
import dovetaildb.bytes.Bytes;
import dovetaildb.dbservice.BagEntry;
import dovetaildb.dbservice.BagIndexBridge;
import dovetaildb.dbservice.DbServiceUtil;
import dovetaildb.dbservice.ProcessTransactionMapper;
import dovetaildb.iter.Iter;
import dovetaildb.iter.LiteralIter;
import dovetaildb.querynode.QueryNode;
import dovetaildb.querynode.QueryNodeTemplate;
import dovetaildb.util.LiteralHashMap;
import dovetaildb.util.Util;

public class ApiBuffer {

  private final HashSet<String> deletions = new HashSet<String>();
  private final Map<String,Object> entries = new HashMap<String,Object>();
 
  public HashSet<String> getDeletions() { return deletions; }

  public Map<String,Object> getEntries() { return entries; }

  public Iter query(Object query, Map<String, Object> options) {
    // TODO: this work should be done once and saved somehow
    // just need to figure out how to invalidate when something
    // changes
    ArrayList<EditRec> buffer = new ArrayList<EditRec>();
    long tmpId = -1000;
    for(Object entry : entries.values()) {
      DbServiceUtil.sencodeMulti(ArrayBytes.EMPTY_BYTES, entry, buffer, tmpId--, false);
    }
    TrivialBagIndex puts = new TrivialBagIndex();
    long revNum = puts.commitNewRev(buffer);
    BagIndexBridge bridge = new BagIndexBridge();
    bridge.setTxnMapper(new ProcessTransactionMapper());
    bridge.setBagEntry("",new BagEntry(puts, null, revNum));
    bridge.getTxnMapper().addRevsForTxn(0, Util.literalMap().p("",revNum));
    return bridge.query("", 0, query, options);
  }

  public void put(String id, Map entry) {
    if (deletions.contains(id)) {
      deletions.remove(id);
    }
    entries.put(id, entry);
  }

 
}
TOP

Related Classes of dovetaildb.apiservice.ApiBuffer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.