public static Id<Vehicle> obtainAutomaticVehicleId( Id<Person> personId, String mode, QSimConfigGroup config ) { Id<Vehicle> vehicleId ; if (config.getUsePersonIdForMissingVehicleId()) { // yyyy my strong preference would be to do away with this "car_" exception and to just // use <mode>_personId across the board. kai, may'18 switch (config.getVehiclesSource()) { case defaultVehicle: case fromVehiclesData: vehicleId = Id.createVehicleId(personId); break; case modeVehicleTypesFromVehiclesData: if(! mode.equals(TransportMode.car)) { vehicleId = Id.createVehicleId( personId.toString() + "_" + mode ); } else { vehicleId = Id.createVehicleId(personId); } break; default: throw new RuntimeException("not implemented") ; } } else { throw new IllegalStateException("Found a network route without a vehicle id."); // yyyyyy condition not really logical here. kai, jul'18 } return vehicleId; } }
private Map<String, VehicleType> getMode2VehicleType(){ Map<String, VehicleType> modeVehicleTypes = new HashMap<>(); switch ( this.qSimConfigGroup.getVehiclesSource() ) { case defaultVehicle: for (String mode : this.qSimConfigGroup.getMainModes()) { // initialize each mode with default vehicle type: VehicleType defaultVehicleType = VehicleUtils.getDefaultVehicleType(); modeVehicleTypes.put(mode, defaultVehicleType); if( scenario.getVehicles().getVehicleTypes().get(defaultVehicleType.getId())==null) { scenario.getVehicles().addVehicleType(defaultVehicleType); // adding default vehicle type to vehicles container } } break; case modeVehicleTypesFromVehiclesData: for (String mode : qSimConfigGroup.getMainModes()) { VehicleType vehicleType = scenario.getVehicles().getVehicleTypes().get( Id.create(mode, VehicleType.class) ) ; Gbl.assertNotNull(vehicleType); modeVehicleTypes.put(mode, vehicleType ); } break; case fromVehiclesData: // don't do anything break; default: throw new RuntimeException("not implemented yet."); } return modeVehicleTypes; }
private void createAndAddVehicleIfNotPresent(Id<Vehicle> vehicleId, VehicleType vehicleType) { // try to get vehicle from the vehicles container: Vehicle vehicle = scenario.getVehicles().getVehicles().get(vehicleId); if ( vehicle==null ) { // if it was not found, next step depends on config: switch ( qSimConfigGroup.getVehiclesSource() ) { case defaultVehicle: vehicle = VehicleUtils.getFactory().createVehicle(vehicleId, vehicleType); scenario.getVehicles().addVehicle(vehicle); break; case modeVehicleTypesFromVehiclesData: vehicle = VehicleUtils.getFactory().createVehicle(vehicleId, vehicleType); scenario.getVehicles().addVehicle(vehicle); break; case fromVehiclesData: // otherwise complain: throw new IllegalStateException("Expecting a vehicle id which is missing in the vehicles database: " + vehicleId); default: // also complain when someone added another config option here: throw new RuntimeException("not implemented") ; } } }
if ( config.qsim().getVehiclesSource()==VehiclesSource.fromVehiclesData && config.qsim().getUsePersonIdForMissingVehicleId() && containsModeChoice
switch( qSimConfigGroup.getVehiclesSource() ) { case defaultVehicle: case modeVehicleTypesFromVehiclesData: