All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.browseengine.bobo.facets.impl.DefaultFacetIterator Maven / Gradle / Ivy

/**
 *
 */
package com.browseengine.bobo.facets.impl;

import com.browseengine.bobo.api.FacetIterator;
import com.browseengine.bobo.facets.data.TermValueList;
import com.browseengine.bobo.util.BigSegmentedArray;

public class DefaultFacetIterator extends FacetIterator {

  private final TermValueList _valList;
  private final BigSegmentedArray _count;
  private final int _countlength;
  private int _index;
  private final int _lastIndex;

  public DefaultFacetIterator(TermValueList valList, BigSegmentedArray counts, int countlength,
      boolean zeroBased) {
    _valList = valList;
    _count = counts;
    _countlength = countlength;
    _index = -1;
    _lastIndex = _countlength - 1;
    if (!zeroBased) _index++;
    facet = null;
    count = 0;
  }

  /*
   * (non-Javadoc)
   * @see java.util.Iterator#hasNext()
   */
  @Override
  public boolean hasNext() {
    return (_index < _lastIndex);
  }

  /*
   * (non-Javadoc)
   * @see java.util.Iterator#next()
   */
  @Override
  public Comparable next() {
    _index++;
    facet = (Comparable) _valList.getRawValue(_index);
    count = _count.get(_index);
    return format(facet);
  }

  /*
   * (non-Javadoc)
   * @see java.util.Iterator#remove()
   */
  @Override
  public void remove() {
    throw new UnsupportedOperationException("remove() method not supported for Facet Iterators");
  }

  /*
   * (non-Javadoc)
   * @see com.browseengine.bobo.api.FacetIterator#next(int)
   */
  @Override
  public Comparable next(int minHits) {
    while (++_index < _countlength) {
      if (_count.get(_index) >= minHits) {
        facet = (Comparable) _valList.getRawValue(_index);
        count = _count.get(_index);
        return format(facet);
      }
    }
    facet = null;
    count = 0;
    return null;
  }

  @Override
  public String format(Object val) {
    return _valList.format(val);
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy