org.hypergraphdb.query.impl
Class ZigZagIntersectionResult<T>

java.lang.Object
  extended by org.hypergraphdb.query.impl.ZigZagIntersectionResult<T>
All Implemented Interfaces:
java.util.Iterator<T>, HGRandomAccessResult<T>, HGSearchResult<T>, RSCombiner<T>, TwoWayIterator<T>, CloseMe

public class ZigZagIntersectionResult<T>
extends java.lang.Object
implements HGRandomAccessResult<T>, RSCombiner<T>

The ZigZagIntersectionResult operates on two sorted, random access result sets.

Author:
Borislav Iordanov

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.hypergraphdb.HGRandomAccessResult
HGRandomAccessResult.GotoResult
 
Field Summary
 
Fields inherited from interface org.hypergraphdb.HGSearchResult
EMPTY
 
Fields inherited from interface org.hypergraphdb.HGSearchResult
EMPTY
 
Constructor Summary
ZigZagIntersectionResult()
           
ZigZagIntersectionResult(HGRandomAccessResult<T> left, HGRandomAccessResult<T> right)
           
 
Method Summary
 void close()
          Free all system resources held up by the result set and invalidate it for further use.
 T current()
          Returns the current element in the result set.
 HGRandomAccessResult.GotoResult goTo(T value, boolean exactMatch)
          Position the result set at a particular value if that value is indeed part of the result set.
 boolean hasNext()
           
 boolean hasPrev()
           Return true if there is a previous element in the current iteration state and false otherwise.
 void init(HGSearchResult<T> left, HGSearchResult<T> right)
           
 boolean isOrdered()
          Return true if the elements in this search result are in ordered and false otherwise.
 T next()
           
 T prev()
           Returns the previous element in this iteration.
 void remove()
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ZigZagIntersectionResult

public ZigZagIntersectionResult()

ZigZagIntersectionResult

public ZigZagIntersectionResult(HGRandomAccessResult<T> left,
                                HGRandomAccessResult<T> right)
Method Detail

init

public void init(HGSearchResult<T> left,
                 HGSearchResult<T> right)
Specified by:
init in interface RSCombiner<T>

goTo

public HGRandomAccessResult.GotoResult goTo(T value,
                                            boolean exactMatch)
Description copied from interface: HGRandomAccessResult

Position the result set at a particular value if that value is indeed part of the result set.

Specified by:
goTo in interface HGRandomAccessResult<T>
Parameters:
value - The value where this result set should be positioned.
exactMatch - A flag indicating whether the passed in value should match exactly a value in the result set, or whether the cursor should be positioned to the closest value. Here "closest" means "smallest greater than the value parameter.
Returns:
A GotoResult.

close

public void close()
Description copied from interface: HGSearchResult

Free all system resources held up by the result set and invalidate it for further use.

Specified by:
close in interface HGSearchResult<T>
Specified by:
close in interface CloseMe

current

public T current()
Description copied from interface: HGSearchResult

Returns the current element in the result set. If there is no current element, java.util.NoSuchElementException is thrown. There is no current element in one of two cases: either the result set is empty or the next method was never invoked.

Specified by:
current in interface HGSearchResult<T>
Returns:
The current element in a HGSearchResult.

isOrdered

public boolean isOrdered()
Description copied from interface: HGSearchResult

Return true if the elements in this search result are in ordered and false otherwise. It is assumed that when elements are ordered, they are instances of java.lang.Comparable

Specified by:
isOrdered in interface HGSearchResult<T>

hasPrev

public boolean hasPrev()
Description copied from interface: TwoWayIterator

Return true if there is a previous element in the current iteration state and false otherwise. After the iterator has been initialized, the value of hasPrev will always be false.

Specified by:
hasPrev in interface TwoWayIterator<T>

prev

public T prev()
Description copied from interface: TwoWayIterator

Returns the previous element in this iteration.

Specified by:
prev in interface TwoWayIterator<T>

hasNext

public boolean hasNext()
Specified by:
hasNext in interface java.util.Iterator<T>

next

public T next()
Specified by:
next in interface java.util.Iterator<T>

remove

public void remove()
Specified by:
remove in interface java.util.Iterator<T>