mondrian.calc.impl
Class AbstractTupleIterable

java.lang.Object
  extended by mondrian.calc.impl.AbstractTupleIterable
All Implemented Interfaces:
Iterable<List<Member>>, TupleIterable

public abstract class AbstractTupleIterable
extends Object
implements TupleIterable

Abstract implementation of TupleIterable.

Derived classes need to implement only TupleIterable.tupleCursor(), and this implementation will implement tupleIterator() and iterator() by creating a wrapper around that cursor. (The cursor interface is easier to implement efficiently than the wider iterator interface.) If you have a more efficient implementation of cursor, override the tupleIterator method.

Author:
jhyde

Field Summary
protected  int arity
           
 
Constructor Summary
AbstractTupleIterable(int arity)
          Creates an AbstractTupleIterable.
 
Method Summary
 int getArity()
          Returns the number of members in each tuple.
 Iterator<List<Member>> iterator()
           
 Iterable<Member> slice(int column)
          Returns an iterable over the members at a given column.
 TupleIterator tupleIterator()
          Creates an iterator over the contents of this iterable.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface mondrian.calc.TupleIterable
tupleCursor
 

Field Detail

arity

protected final int arity
Constructor Detail

AbstractTupleIterable

public AbstractTupleIterable(int arity)
Creates an AbstractTupleIterable.

Parameters:
arity - Arity (number of members per tuple)
Method Detail

getArity

public int getArity()
Description copied from interface: TupleIterable
Returns the number of members in each tuple.

Specified by:
getArity in interface TupleIterable
Returns:
The number of members in each tuple

slice

public Iterable<Member> slice(int column)
Description copied from interface: TupleIterable
Returns an iterable over the members at a given column.

The iteratble returns an interator that is modifiable if and only if this TupleIterable is modifiable.

If this TupleIterable happens to be a TupleList, the method is overridden to return a List<Member>.

Specified by:
slice in interface TupleIterable
Parameters:
column - Ordinal of the member in each tuple to project
Returns:
Iterable that returns an iterator over members

iterator

public final Iterator<List<Member>> iterator()
Specified by:
iterator in interface Iterable<List<Member>>

tupleIterator

public TupleIterator tupleIterator()
Description copied from interface: TupleIterable
Creates an iterator over the contents of this iterable.

Always has the same effect as calling Iterable.iterator().

Specified by:
tupleIterator in interface TupleIterable
Returns:
cursor over the tuples returned by this iterable
See Also:
TupleIterable.tupleCursor()

Get Mondrian at SourceForge.net. Fast, secure and free Open Source software downloads