edu.stanford.nlp.trees.CompositeTreebank Maven / Gradle / Ivy
package edu.stanford.nlp.trees;
import java.io.File;
import java.io.FileFilter;
import java.util.Iterator;
import java.util.Collection;
/**
* @author Galen Andrew
*/
public class CompositeTreebank extends Treebank {
private Treebank t1;
private Treebank t2;
public CompositeTreebank(Treebank t1, Treebank t2) {
this.t1 = t1;
this.t2 = t2;
}
@Override
public void clear() {
t1.clear();
t2.clear();
}
@Override
public void loadPath(File path, FileFilter filt) {
throw new UnsupportedOperationException();
}
@Override
public void apply(TreeVisitor tp) {
for (Tree tree : this) {
tp.visitTree(tree);
}
}
@Override
public Iterator iterator() {
return new CompositeTreebankIterator(t1, t2);
}
private static class CompositeTreebankIterator implements Iterator {
private final Iterator it1;
private final Iterator it2;
public CompositeTreebankIterator(Collection c1, Collection c2) {
it1 = c1.iterator();
it2 = c2.iterator();
}
public boolean hasNext() {
return (it1.hasNext() || it2.hasNext());
}
public Tree next() {
Tree tree = it1.hasNext() ? it1.next() : it2.next();
return tree;
}
public void remove() {
throw new UnsupportedOperationException();
}
} // end static class CompositeTreebankIterator
}