Package ca.carleton.gcrc.couch.date.impl

Examples of ca.carleton.gcrc.couch.date.impl.Interval


  public DateServiceActions(DateSource dateSource){
    this.dateSource = dateSource;
  }

  public JSONObject getDocIdsFromInterval(long min, long max) throws Exception {
    Interval interval = new Interval(min,max);
    DateSource.SearchResults searchResults = dateSource.getDateIntervalsIntersectingWith(interval);
    List<DocumentWithInterval> docWithInts = searchResults.documentWithIntervals;
   
    Set<String> docIds = new HashSet<String>();
    for(DocumentWithInterval docWithInt : docWithInts){
View Full Code Here


 
  static TreeRebalanceProcess.Result createTree(List<? extends TreeElement> elements) throws Exception {
    Result results = new Result();

    // Compute full interval, next cluster id and legacy nodes
    Interval fullInterval = null;
    results.nextClusterId = 1;
    Map<Integer,TreeNode> legacyNodes = new HashMap<Integer,TreeNode>();
    for(TreeElement element : elements){
      Integer clusterId = element.getClusterId();
     
      // Accumulate full interval
      if( null == fullInterval ){
        fullInterval = element.getInterval();
      } else {
        fullInterval = fullInterval.extendTo(element.getInterval());
      }
     
      // Figure out next cluster id
      if( null != clusterId ){
        if( clusterId >= results.nextClusterId ){
          results.nextClusterId = clusterId + 1;
        }
      }
     
      // Accumulate legacy nodes
      if( null != clusterId ){
        TreeNode legacyNode = legacyNodes.get(clusterId);
        if( null == legacyNode ){
          legacyNode = new TreeNode(clusterId, element.getInterval());
          legacyNodes.put(clusterId, legacyNode);
        } else {
          legacyNode.extendTo(element.getInterval());
        }
      }
    }
   
    // Need a full interval
    if( null == fullInterval ){
      // Create a default one
      fullInterval = new Interval(0, 1500000000000L);
    }
   
    // Create root node for tree
    TreeNodeWithElements rootNodeWithElements = new TreeNodeWithElements(results.nextClusterId, fullInterval);
    results.nextClusterId++;
View Full Code Here

       
        if( elements.size() > NODE_ELEMENT_THRESHOLD
         && null == lowNode ){
          // Time to create children nodes
          {
            Interval lowInterval = new Interval(node.getInterval().getMin(), node.getMidPoint());
            int lowClusterId = results.nextClusterId;
            results.nextClusterId++;
            lowNode = new TreeNodeWithElements(lowClusterId, lowInterval);
            node.setLowChildNode( lowNode.node );
           
            List<TreeElement> childElements = new ArrayList<TreeElement>(elements.size());
            for(TreeElement elem : elements){
              if( lowNode.includes(elem) ){
                childElements.add(elem);
                lowNode.addElement(elem, results);
              }
            }
            elements.removeAll(childElements);
          }

          {
            Interval highInterval = new Interval(node.getMidPoint(), node.getInterval().getMax());
            int highClusterId = results.nextClusterId;
            results.nextClusterId++;
            highNode = new TreeNodeWithElements(highClusterId, highInterval);
            node.setHighChildNode( highNode.node );
           
View Full Code Here

  private Interval interval;
  private String docId;
 
  public CouchTreeElement(String docId, Integer clusterId, long min, long max) throws Exception {
    this.clusterId = clusterId;
    this.interval = new Interval(min, max);
  }
View Full Code Here

  private TreeNode lowChildNode = null;
  private TreeNode highChildNode = null;

  public TreeNode(int clusterId, long min, long max, long mid) throws Exception {
    this.clusterId = clusterId;
    this.interval = new Interval(min, max);
    this.mid = mid;
  }
View Full Code Here

   
    this.interval = this.interval.extendTo(interval);
   
    if( interval.getMin() < this.interval.getMin()
     && null != lowChildNode ) {
      Interval lowInt = new Interval(interval.getMin(), mid);
      lowChildNode.extendTo(lowInt);
    }
   
    if( interval.getMax() > this.interval.getMax()
     && null != highChildNode ){
      Interval hiInt = new Interval(mid, interval.getMax());
      highChildNode.extendTo(hiInt);
    }
  }
View Full Code Here

  private static void insertElement(
      TreeNode node,
      TreeElement element,
      Result result,
      TreeOperations operations) throws Exception {
    Interval elemInt = element.getInterval();
   
    if( false == elemInt.isIncludedIn(node.getInterval()) ){
      // Must grow interval
      node.extendTo( element.getInterval() );
      result.treeModified = true;
    }
   
    if( elemInt.getMax() <= node.getMidPoint()
     && null != node.getLowChildNode() ){
      insertElement(node.getLowChildNode(), element, result, operations);
     
    } else if( elemInt.getMin() >= node.getMidPoint()
     && null != node.getHighChildNode() ){
      insertElement(node.getHighChildNode(), element, result, operations);
   
    } else {
      // Check if low should be created
      if( null == node.getLowChildNode()
       && elemInt.getMax() <= node.getMidPoint() ){
        int count = 1;
        List<TreeElement> nodeElements = operations.getElementsForClusterId(node.getClusterId());
        for(TreeElement nodeElement : nodeElements){
          if( nodeElement.getInterval().getMax() <= node.getMidPoint() ){
            ++count;
          }
        }
        if( count > NODE_ELEMENT_THRESHOLD ){
          // Should create low
          int clusterId = result.getNextClusterId();
          Interval childInt = new Interval(node.getInterval().getMin(), node.getMidPoint());
          TreeNode childNode = new TreeNode(clusterId,childInt);
          node.setLowChildNode(childNode);
          result.treeModified = true;
         
          result.insert(clusterId, element);
          return; // done
        }
      }
     
      // Check if high should be created
      if( null == node.getHighChildNode()
       && elemInt.getMin() >= node.getMidPoint() ){
        int count = 1;
        List<TreeElement> nodeElements = operations.getElementsForClusterId(node.getClusterId());
        for(TreeElement nodeElement : nodeElements){
          if( nodeElement.getInterval().getMin() >= node.getMidPoint() ){
            ++count;
          }
        }
        if( count > NODE_ELEMENT_THRESHOLD ){
          // Should create low
          int clusterId = result.getNextClusterId();
          Interval childInt = new Interval(node.getMidPoint(), node.getInterval().getMax());
          TreeNode childNode = new TreeNode(clusterId,childInt);
          node.setHighChildNode(childNode);
          result.treeModified = true;
         
          result.insert(clusterId, element);
View Full Code Here

TOP

Related Classes of ca.carleton.gcrc.couch.date.impl.Interval

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.