001package org.matsim.contrib.util; 002 003import java.util.*; 004 005import org.matsim.api.core.v01.*; 006import org.matsim.api.core.v01.population.*; 007 008public class PopulationUtils { 009 public static void convertLegModes(List<String> passengerIds, String mode, Scenario scenario) { 010 Map<Id<Person>, ? extends Person> persons = scenario.getPopulation().getPersons(); 011 012 for (String id : passengerIds) { 013 Person person = persons.get(Id.create(id, Person.class)); 014 015 for (PlanElement pe : person.getSelectedPlan().getPlanElements()) { 016 if (pe instanceof Leg) { 017 ((Leg)pe).setMode(mode); 018 } 019 } 020 } 021 } 022 023 public static void removePersonsNotUsingMode(String mode, Scenario scenario) { 024 Map<Id<Person>, ? extends Person> persons = scenario.getPopulation().getPersons(); 025 Iterator<? extends Person> personIter = persons.values().iterator(); 026 027 while (personIter.hasNext()) { 028 Plan selectedPlan = personIter.next().getSelectedPlan(); 029 030 if (!hasLegOfMode(selectedPlan, mode)) { 031 personIter.remove(); 032 } 033 } 034 } 035 036 private static boolean hasLegOfMode(Plan plan, String mode) { 037 for (PlanElement pe : plan.getPlanElements()) { 038 if (pe instanceof Leg) { 039 if (((Leg)pe).getMode().equals(mode)) { 040 return true; 041 } 042 } 043 } 044 045 return false; 046 } 047}