package org.farng.mp3.filename;
import java.util.Iterator;
import java.util.NoSuchElementException;
/**
* This class is an iterator for the <code>FilenameDelimiter</code> class.
*
* @author Eric Farng
* @version $Revision: 1637 $
*/
public class FilenameDelimiterIterator implements Iterator {
/**
* iterator for the composite before the delimiter
*/
private Iterator afterIterator = null;
/**
* iterator for the composite after the delimiter
*/
private Iterator beforeIterator = null;
/**
* Creates a new FilenameDelimiterIterator object.
*
* @param filenameDelimiter FilenameDelimiter to create an interator from.
*/
public FilenameDelimiterIterator(final FilenameDelimiter filenameDelimiter) {
super();
if (filenameDelimiter.getBeforeComposite() != null) {
beforeIterator = filenameDelimiter.getBeforeComposite().iterator();
}
if (filenameDelimiter.getAfterComposite() != null) {
afterIterator = filenameDelimiter.getAfterComposite().iterator();
}
}
/**
* Returns true if the iteration has more elements. (In other words, returns true if next would return an element
* rather than throwing an exception.)
*
* @return true if the iteration has more elements
*/
public boolean hasNext() {
boolean nextFlag = false;
if (beforeIterator != null) {
nextFlag = beforeIterator.hasNext();
}
if (afterIterator != null) {
nextFlag = nextFlag || afterIterator.hasNext();
}
return nextFlag;
}
/**
* Returns the next element in the iteration.
*
* @return the next element in the iteration.
*/
public Object next() {
if (beforeIterator != null && beforeIterator.hasNext()) {
return beforeIterator.next();
} else if (afterIterator != null && afterIterator.hasNext()) {
return afterIterator.next();
} else {
throw new NoSuchElementException("Iteration has no more elements.");
}
}
/**
* This method is not supported in this iterator.
*
* @throws UnsupportedOperationException This method is not supported in this iterator
*/
public void remove() {
//todo Implement this java.util.Iterator method
throw new UnsupportedOperationException("Method remove() not yet implemented.");
}
}