package org.farng.mp3.filename;
import java.util.Iterator;
import java.util.NoSuchElementException;
/**
* This class is an iterator for the <code>FilenameParenthesis</code> class.
*
* @author Eric Farng
* @version $Revision: 1637 $
*/
public class FilenameParenthesisIterator implements Iterator {
/**
* iterator after the parenthesis
*/
private Iterator afterIterator = null;
/**
* iterator before the parenthesis
*/
private Iterator beforeIterator = null;
/**
* iterator between the parenthesis
*/
private Iterator middleIterator = null;
/**
* Creates a new FilenameParenthesisIterator object.
*
* @param filenameParenthesis FilenameParenthesis object to iterate through
*/
public FilenameParenthesisIterator(final FilenameParenthesis filenameParenthesis) {
super();
if (filenameParenthesis.getBeforeComposite() != null) {
beforeIterator = filenameParenthesis.getBeforeComposite().iterator();
}
if (filenameParenthesis.getMiddleComposite() != null) {
middleIterator = filenameParenthesis.getMiddleComposite().iterator();
}
if (filenameParenthesis.getAfterComposite() != null) {
afterIterator = filenameParenthesis.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 (middleIterator != null) {
nextFlag = nextFlag || middleIterator.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 (middleIterator != null && middleIterator.hasNext()) {
return middleIterator.next();
} else if (afterIterator != null && afterIterator.hasNext()) {
return afterIterator.next();
}
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.");
}
}