001    package calhoun.analysis.crf.io;
002    
003    import java.util.Iterator;
004    
005    /** utility class to convert an iterator over training sequences into an iterator over the underlying 
006     * input sequences
007     * @param <T> the type of the underlying input sequence
008     */
009    public class IteratorAdapterTrainingSequenceInput<T> implements Iterator<InputSequence<? extends T>> {
010    
011            Iterator<? extends TrainingSequence<T>> trainingIterator;
012            
013            /** constructs a new iterator which will extract the input sequence from the training sequences
014             * @param trainingIterator the iterator over training sequences to extract the input sequence from
015             */
016            public IteratorAdapterTrainingSequenceInput(Iterator<? extends TrainingSequence<T>> trainingIterator) {
017                    this.trainingIterator = trainingIterator;               
018            }
019            
020            public boolean hasNext() {
021                    return trainingIterator.hasNext();
022            }
023    
024            public InputSequence<? extends T> next() {
025                    TrainingSequence<T> trainingSeq = trainingIterator.next();
026                    return trainingSeq.getInputSequence();
027            }
028    
029            public void remove() {
030                    throw new UnsupportedOperationException();
031            }
032    }