Skip to content

Instantly share code, notes, and snippets.

@okram
Created July 18, 2014 21:33
Show Gist options
  • Save okram/476dfe924992f08d5b5e to your computer and use it in GitHub Desktop.
Save okram/476dfe924992f08d5b5e to your computer and use it in GitHub Desktop.
public class IfThenElseStep<S, E> extends FlatMapStep<S, E> {
public final SPredicate<Traverser<S>> ifPredicate;
public final Traversal<S, E> thenTraversal;
public final Traversal<S, E> elseTraversal;
public IfThenElseStep(final Traversal traversal, final SPredicate<Traverser<S>> ifPredicate, final Traversal<S, E> thenTraversal, final Traversal<S, E> elseTraversal) {
super(traversal);
this.ifPredicate = ifPredicate;
this.thenTraversal = thenTraversal;
this.elseTraversal = elseTraversal;
this.setFunction(traverser -> {
if (this.ifPredicate.test(traverser)) {
this.thenTraversal.addStarts(new SingleIterator<>(traverser));
return this.thenTraversal;
} else {
if (null == this.elseTraversal) {
return Collections.emptyIterator();
} else {
this.elseTraversal.addStarts(new SingleIterator<>(traverser));
return this.elseTraversal;
}
}
});
}
public IfThenElseStep(final Traversal traversal, final SPredicate<Traverser<S>> ifPredicate, final Traversal<S, E> thenTraversal) {
this(traversal, ifPredicate, thenTraversal, null);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment