/* Copyright (C) 2003 University of Pennsylvania.
This file is part of "MALLET" (MAchine Learning for LanguagE Toolkit).
http://www.cs.umass.edu/~mccallum/mallet
This software is provided under the terms of the Common Public License,
version 1.0, as published by http://www.opensource.org. For further
information, see the file `LICENSE' included with this distribution. */
/**
@author Fernando Pereira <a href="mailto:pereira@cis.upenn.edu">pereira@cis.upenn.edu</a>
*/
package cc.mallet.pipe.iterator;
import java.util.Iterator;
import cc.mallet.pipe.*;
import cc.mallet.types.Instance;
/**
* Provides a {@link PipeExtendedIterator} that applies a {@link Pipe} to
* the {@link Instance}s returned by a given {@link PipeExtendedIterator},
* It is intended to encapsulate preprocessing that should not belong to the
* input {@link Pipe} of a {@link Classifier} or {@link Transducer}.
*
* @author <a href="mailto:pereira@cis.upenn.edu">Fernando Pereira</a>
* @version 1.0
*/
@Deprecated // Now that Pipe's support iteration directly, this should no longer be necessary? -AKM 9/2007
public class PipeExtendedIterator implements Iterator<Instance>
{
private Iterator<Instance> iterator;
private Pipe pipe;
/**
* Creates a new <code>PipeExtendedIterator</code> instance.
*
* @param iterator the base <code>PipeExtendedIterator</code>
* @param pipe The <code>Pipe</code> to postprocess the iterator output
*/
public PipeExtendedIterator (Iterator<Instance> iterator, Pipe pipe)
{
this.iterator = iterator;
this.pipe = pipe;
}
//public PipeExtendedIterator(ArrayDataAndTargetIterator iterator2, CharSequenceArray2TokenSequence sequence) {
// TODO Auto-generated constructor stub
//}
public boolean hasNext ()
{
return iterator.hasNext();
}
public Instance next ()
{
return pipe.pipe(iterator.next());
}
public void remove () {
throw new IllegalStateException ("This Iterator<Instance> does not support remove().");
}
}