001package org.matsim.contribs.discrete_mode_choice.model.constraints; 002 003import java.util.ArrayList; 004import java.util.Collection; 005import java.util.LinkedList; 006import java.util.List; 007 008import org.matsim.api.core.v01.population.Person; 009import org.matsim.contribs.discrete_mode_choice.model.DiscreteModeChoiceTrip; 010import org.matsim.contribs.discrete_mode_choice.model.trip_based.TripConstraint; 011import org.matsim.contribs.discrete_mode_choice.model.trip_based.TripConstraintFactory; 012 013/** 014 * Creates a CompositeTripConstraint. 015 * 016 * @author sebhoerl 017 */ 018public class CompositeTripConstraintFactory implements TripConstraintFactory { 019 final private List<TripConstraintFactory> factories = new LinkedList<>(); 020 021 public CompositeTripConstraintFactory() { 022 } 023 024 public CompositeTripConstraintFactory(List<TripConstraintFactory> factories) { 025 this.factories.addAll(factories); 026 } 027 028 public void addFactory(TripConstraintFactory factory) { 029 this.factories.add(factory); 030 } 031 032 @Override 033 public TripConstraint createConstraint(Person person, List<DiscreteModeChoiceTrip> planTrips, 034 Collection<String> availableModes) { 035 List<TripConstraint> constraints = new ArrayList<>(factories.size()); 036 factories.forEach(f -> constraints.add(f.createConstraint(person, planTrips, availableModes))); 037 return new CompositeTripConstraint(constraints); 038 } 039}