package org.matsim.amodeus.scoring; import java.util.Collection; import org.matsim.amodeus.scoring.parameters.AmodeusScoringParametersForPerson; import org.matsim.api.core.v01.population.Person; import org.matsim.core.scoring.ScoringFunction; import org.matsim.core.scoring.ScoringFunctionFactory; import org.matsim.core.scoring.SumScoringFunction; public class AmodeusScoringFunctionFactory implements ScoringFunctionFactory { private final ScoringFunctionFactory delegate; private final AmodeusScoringParametersForPerson parameters; private final Collection<String> modes; public AmodeusScoringFunctionFactory(ScoringFunctionFactory delegate, Collection<String> modes, AmodeusScoringParametersForPerson parameters) { this.delegate = delegate; this.modes = modes; this.parameters = parameters; } @Override public ScoringFunction createNewScoringFunction(Person person) { SumScoringFunction scoringFunction = (SumScoringFunction) delegate.createNewScoringFunction(person); scoringFunction.addScoringFunction(new AmodeusScoringFunction(modes, parameters.getScoringParameters(person))); return scoringFunction; } }