Package dovetaildb.bagindex

Examples of dovetaildb.bagindex.Range


  public static final class RangeExtractor extends PatternVisitor {
    ArrayList<Range> ranges;
    @Override
    public void handleList(Bytes prefix, Bytes suffix, List<Object> list) {
      if (list.isEmpty()) {
        ranges.add(new Range(prefix, null, null, true, true));
      }
    }
View Full Code Here


      }
    }
    @Override
    public void handleMap(Bytes prefix, Bytes suffix, Map<String,Object> map) {
      if (map.isEmpty()) {
        ranges.add(new Range(prefix, null, null, true, true));
      }
    }
View Full Code Here

      }
    }
    @Override
    public void handleAtomic(Bytes prefix, Bytes suffix, Object value) {
      Bytes term = new CompoundBytes(prefix,sencode(value));
      ranges.add(new Range(term, ArrayBytes.EMPTY_BYTES, ArrayBytes.EMPTY_BYTES, true, true));
    }
View Full Code Here

    ensureIsAdvanced();
    if (outerNode == null) {
      outerNode = null;
      return;
    }
    QueryNode node = index.getRange(new Range(range), revNum);
    if (node == null) {
      outerNode = null;
      return;
    }
    long curDoc = outerNode.doc();
View Full Code Here

  }
 
  protected QueryNodeDbResult(QueryNode parent, Bytes prefix, Bytes suffix) {
    this.prefix = prefix;
    this.suffix = suffix;
    Range subRange = new Range(prefix, ArrayBytes.SINGLE_BYTE_OBJECTS[0], null, true, true);
    node = parent.specialize(new Range(subRange));
    if (node == null) {
      initializeAsNull();
    } else {
      if (node.doc() == Long.MAX_VALUE) {
        initializeAsNull();
View Full Code Here

        new EditRec(2, ArrayBytes.fromString("{id:s002")),
        new EditRec(2, ArrayBytes.fromString("{name:sphil")),
        new EditRec(4, ArrayBytes.fromString("{id:s004")),
        new EditRec(6, ArrayBytes.fromString("{id:s006")),
        new EditRec(6, ArrayBytes.fromString("{idle:strue")),
    }), new Range(
        ArrayBytes.fromString("{"),
        ArrayBytes.fromString("age:s31"),
        null,
        false, false
        ));
View Full Code Here

        QueryNodeTemplate templ = applyPatternToBagIndex(curPrefix, value, index, revNum);
        nodes.add(templ.queryNode);
        vars.putAll(templ.varMappings);
      }
      if (map.isEmpty()) {
        queryNode = index.getRange(new Range(prefix, null, null, true, true), revNum);
      } else {
        queryNode = AndQueryNode.make(nodes);
      }
    } else if (pattern instanceof List) {
      List list = (List)pattern;
View Full Code Here

      term2 = sencode(query.get(2));
      break;
    default:
      throw new ApiException("QueryFormatError", "Unknown query operator: \""+query.get(0)+"\"");
    }
    return new Range(prefix, term1, term2, !isExclusive1, !isExclusive2);
  }
View Full Code Here

  public static void extractRangesFrom(Bytes prefix, Object pattern, ArrayList<Range> ranges) {
    if (pattern instanceof Map) {
      Map map = (Map)pattern;
      prefix = new CompoundBytes(prefix, HEADER_BYTE_MAPOPEN);
      if (map.isEmpty()) {
        ranges.add(new Range(prefix, null, null, true, true));
      } else {
        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);
          extractRangesFrom(curPrefix, value, ranges);
        }
      }
    } else if (pattern instanceof List) {
      List<Object> list = (List<Object>)pattern;
      if (list.size() > 0 && SYMBOLS.contains(list.get(0).hashCode())) {
        int opHash = list.get(0).hashCode();
        switch(opHash) {
        case DbServiceUtil.OP_HASH_AS:
        case DbServiceUtil.OP_HASH_OR:
        case DbServiceUtil.OP_HASH_AND:
        case DbServiceUtil.OP_HASH_NOT:
          throw new ApiException("QueryFormatError", "Invalid narrowing operator: "+list.get(0));
        default:
          ranges.add(parseRange(prefix, opHash, list));
        }
      } 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()) {
          ranges.add(new Range(prefix, null, null, true, true));
        } else {
          extractRangesFrom(prefix, list.get(0), ranges);
        }
      }
    } else {
      Bytes term = new CompoundBytes(prefix,sencode(pattern));
      ranges.add(new Range(term, ArrayBytes.EMPTY_BYTES, ArrayBytes.EMPTY_BYTES, true, true));
    }
  }
View Full Code Here

    } else {
      int opHash = query.get(0).hashCode();
      int numArgs = query.size();
      switch(opHash) {
      case DbServiceUtil.OP_HASH_AS:
        queryNode = index.getRange(new Range(prefix, null, null, true, true), revNum);
        if (query.size() > 2) {
          throw new RuntimeException("Not yet supported");
//          QueryNodeTemplate subNode=applyQueryToBagIndex(prefix, (List)query.get(2), index, revNum);
//          vars.put((String)query.get(1), ExternalTermQueryNode.make(subNode.queryNode, queryNode));
//          queryNode = subNode.queryNode;
//          vars = subNode.varMappings;
        } else {
          vars.put((String)query.get(1), queryNode);
        }
        break;
      case DbServiceUtil.OP_HASH_OR:
      case DbServiceUtil.OP_HASH_AND:
        Object subQueryObject = query.get(1);
        if (!(subQueryObject instanceof List)) {
          throw new ApiException("QueryFormatError", "\""+query.get(0)+"\" operator must have a list in the first position, instead found: "+subQueryObject);
        }
        List<Object> subQueries = (List<Object>)query.get(1);
        int numQueries = subQueries.size();
        clauses = new ArrayList<QueryNode>(numQueries);
        for(int i=0; i<numQueries; i++) {
          QueryNodeTemplate node=applyPatternToBagIndex(prefix, subQueries.get(i), index, revNum);
          if (node.queryNode != null) clauses.add(node.queryNode);
          vars.putAll(node.varMappings);
        }
        if (opHash == DbServiceUtil.OP_HASH_OR) {
          queryNode = OrderedOrQueryNode.make(clauses);
        } else {
          queryNode = AndQueryNode.make(clauses);
        }
        break;
      case DbServiceUtil.OP_HASH_NOT:
        QueryNode matchesSoFar = index.getRange(new Range(prefix, null, null, true, true), revNum);
        clauses = new ArrayList<QueryNode>(numArgs-1);
        for(int i=1; i<numArgs; i++) {
          QueryNodeTemplate node=applyPatternToBagIndex(prefix, query.get(i), index, revNum);
          if (node.queryNode != null) clauses.add(node.queryNode);
        }
View Full Code Here

TOP

Related Classes of dovetaildb.bagindex.Range

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.