org.opentripplanner.transit.raptor.util.paretoset.ParetoSetEventListenerComposite Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of otp Show documentation
Show all versions of otp Show documentation
The OpenTripPlanner multimodal journey planning system
package org.opentripplanner.transit.raptor.util.paretoset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
/**
* The {@link ParetoSet} do only support ONE listener, this class uses the
* composite pattern to forward all events to a set of listeners, while
* playing the role of {@link ParetoSetEventListener} towards the set.
*
* @param the set element type
*/
public class ParetoSetEventListenerComposite implements ParetoSetEventListener {
private final List> listeners = new ArrayList<>();
@SafeVarargs
public ParetoSetEventListenerComposite(ParetoSetEventListener... listeners) {
this(Arrays.asList(listeners));
}
private ParetoSetEventListenerComposite(Collection> listeners) {
this.listeners.addAll(listeners);
}
@Override
public void notifyElementAccepted(T newElement) {
for (ParetoSetEventListener it : listeners) {
it.notifyElementAccepted(newElement);
}
}
@Override
public void notifyElementDropped(T element, T droppedByElement) {
for (ParetoSetEventListener it : listeners) {
it.notifyElementDropped(element, droppedByElement);
}
}
@Override
public void notifyElementRejected(T element, T rejectedByElement) {
for (ParetoSetEventListener it : listeners) {
it.notifyElementRejected(element, rejectedByElement);
}
}
}