All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opentripplanner.transit.raptor.util.paretoset.ParetoSetEventListenerComposite Maven / Gradle / Ivy

There is a newer version: 2.5.0
Show newest version
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);
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy