Package dovetaildb.bytes

Examples of dovetaildb.bytes.CompoundBytes


  }
 
  public static void sencodeMulti(Bytes prefix, Object val, ArrayList<EditRec> buffer, long docId, boolean idDel) {
    if (val instanceof Map) {
      Map map = (Map)val;
      prefix = new CompoundBytes(prefix, HEADER_BYTE_MAPOPEN);
      buffer.add(new EditRec(docId, prefix, idDel));
      for(Object entryObj : map.entrySet()) {
        Map.Entry entry = (Map.Entry) entryObj;
        String key = (String)entry.getKey();
        Bytes sub = new CompoundBytes(prefix, sencodeMapKey(key));
        sub = new CompoundBytes(sub, HEADER_BYTE_COLON);
        sencodeMulti(sub, entry.getValue(), buffer, docId, idDel);
      }
    } else if (val instanceof List) {
      List list = (List)val;
      prefix = new CompoundBytes(prefix, HEADER_BYTE_LISTOPEN);
      buffer.add(new EditRec(docId, prefix, idDel));
      for(Object subVal : list) {
        sencodeMulti(prefix, subVal, buffer, docId, idDel);
      }
    } else {
      buffer.add(new EditRec(docId, new CompoundBytes(prefix,sencode(val)), false));
    }
  }
View Full Code Here


          (byte)((bits >>> 8 * 1) & 0xFF),
          (byte)((bits) & 0xFF)});
    } else if (val instanceof String) {
      try {
        Bytes valBytes = new ArrayBytes(((String)val).getBytes("utf-8"));
        return new CompoundBytes(HEADER_BYTE_S, valBytes);
      } catch (UnsupportedEncodingException e) {
        throw new RuntimeException(e);
      }
    } else if (val == null) {
      return HEADER_BYTE_L;
View Full Code Here

  public static QueryNodeTemplate applyPatternToBagIndex(Bytes prefix, Object pattern, BagIndex index, long revNum) {
    Map<String, QueryNode> vars = new HashMap<String, QueryNode>();
    QueryNode queryNode;
    if (pattern instanceof Map) {
      Map map = (Map)pattern;
      prefix = new CompoundBytes(prefix, HEADER_BYTE_MAPOPEN);
      ArrayList<QueryNode> nodes = new ArrayList<QueryNode>();
      for(Object entryObj : map.entrySet()) {
        Map.Entry entry = (Map.Entry) entryObj;
        String key = (String)entry.getKey();
        Object value = entry.getValue();
        Bytes curPrefix = new CompoundBytes(prefix, sencodeMapKey(key));
        curPrefix = new CompoundBytes(curPrefix, HEADER_BYTE_COLON);
        QueryNodeTemplate templ = applyPatternToBagIndex(curPrefix, value, index, revNum);
        if (templ.queryNode != null) {
          nodes.add(templ.queryNode);
          vars.putAll(templ.varMappings);
        }
      }
      if (nodes.isEmpty()) {
        queryNode = index.getTerm(prefix, revNum);
      } else {
        queryNode = AndQueryNode.make(nodes);
      }
    } else if (pattern instanceof List) {
      List list = (List)pattern;
      if (list.size() > 0 && SYMBOLS.contains(list.get(0).hashCode())) {
        return applyQueryToBagIndex(prefix, list, index, revNum);
      } else if (list.size() > 1) {
        throw new RuntimeException("malformed list structure in query: "+pattern);
      } else {
        prefix = new CompoundBytes(prefix, HEADER_BYTE_LISTOPEN);
        if (list.isEmpty()) {
          queryNode = index.getTerm(prefix, revNum);
        } else {
          QueryNodeTemplate templ = applyPatternToBagIndex(prefix, list.get(0), index, revNum);
          queryNode = templ.queryNode;
          vars.putAll(templ.varMappings);
        }
      }
    } else {
      queryNode = index.getTerm(new CompoundBytes(prefix,sencode(pattern)), revNum);
    }
    return new QueryNodeTemplate(queryNode, vars);
  }
View Full Code Here

  final Bytes prefix, min, max;
  final int minIsExcl, maxIsExcl;
 
  public FilteredRangeQueryNode(RangeQueryNode n, Bytes prefix, Bytes min, Bytes max, boolean minIsEx, boolean maxIsEx) {
    if (prefix != null) {
      if (min != null) min = new CompoundBytes(prefix,min);
      if (max != null) max = new CompoundBytes(prefix,max);
    }
    this.node = n;
    this.prefix = prefix;
    this.min = min;
    this.max = max;
View Full Code Here

        }
        return low;
    }
 
  public DbResult derefByKey(String key) {
    Bytes cmpKey = new CompoundBytes(DbServiceUtil.HEADER_BYTE_MAPOPEN,
        new CompoundBytes(DbServiceUtil.sencodeMapKey(key),
            DbServiceUtil.HEADER_BYTE_COLON));
    int keyLen = cmpKey.getLength();
    int idx = binarySearch(terms, cmpKey, numTerms);
    Bytes[] subTerms = new Bytes[numTerms-idx]; // at most this many elements
    int subIdx = 0;
    for(;idx<numTerms;idx++) {
      Bytes curTerm = terms[idx];
      if (cmpKey.isPrefixOf(curTerm)) {
        subTerms[subIdx++] = curTerm.subBytes(keyLen, curTerm.getLength()-keyLen);
      } else {
        break;
      }
    }
View Full Code Here

TOP

Related Classes of dovetaildb.bytes.CompoundBytes

Copyright © 2018 www.massapicom. 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.