/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package Sirius.navigator.types.iterator; import Sirius.navigator.types.treenode.*; import Sirius.server.middleware.types.*; import java.util.*; /** * DOCUMENT ME! * * @author pascal * @version $Revision$, $Date$ */ public class AttributeIteratorIterator { //~ Instance fields -------------------------------------------------------- private TreeNodeIterator treeNodeIterator = null; private final SingleAttributeIterator attributeIterator; //~ Constructors ----------------------------------------------------------- /** * Creates a new AttributeIteratorIterator object. * * @param treeNodeIterator DOCUMENT ME! */ public AttributeIteratorIterator(final TreeNodeIterator treeNodeIterator) { // this.treeNodeIterator = treeNodeIterator; // this.attributeIterator = new SingleAttributeIterator(); this(treeNodeIterator, new SimpleAttributeRestriction(), false); } /** * Creates a new AttributeIteratorIterator object. * * @param restriction DOCUMENT ME! * @param distinct DOCUMENT ME! */ public AttributeIteratorIterator(final AttributeRestriction restriction, final boolean distinct) { this(null, restriction, distinct); } /** * Creates a new AttributeIteratorIterator object. * * @param treeNodeIterator DOCUMENT ME! * @param restriction DOCUMENT ME! * @param distinct DOCUMENT ME! */ public AttributeIteratorIterator(final TreeNodeIterator treeNodeIterator, final AttributeRestriction restriction, final boolean distinct) { // this.treeNodeIterator = treeNodeIterator; this.attributeIterator = new SingleAttributeIterator(restriction, distinct); this.init(treeNodeIterator); } //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! * * @param object DOCUMENT ME! * * @return DOCUMENT ME! */ public boolean init(final Object object) { this.treeNodeIterator = null; if ((object != null) && (object instanceof TreeNodeIterator)) { return this.init((TreeNodeIterator)object); } return false; } /** * DOCUMENT ME! * * @param treeNodeIterator DOCUMENT ME! * * @return DOCUMENT ME! */ public boolean init(TreeNodeIterator treeNodeIterator) { this.treeNodeIterator = treeNodeIterator; if ((treeNodeIterator != null) && treeNodeIterator.hasNext()) { return true; } else { treeNodeIterator = null; return false; } } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public boolean hasNext() { if (treeNodeIterator != null) { return treeNodeIterator.hasNext(); } else { return false; } } /** * DOCUMENT ME! * * @return DOCUMENT ME! * * @throws NoSuchElementException DOCUMENT ME! */ public AttributeIterator next() throws NoSuchElementException { if (this.hasNext()) { attributeIterator.init(treeNodeIterator.next()); return attributeIterator; } else { throw new NoSuchElementException(); } } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public boolean isDistinct() { return attributeIterator.isDistinct(); } }