// Path: osgi.enroute.trains.api/src/osgi/enroute/trains/passenger/api/Passenger.java
// public class Passenger extends DTO {
// 
// 	// which person 
// 	public Person person;
// 	
// 	// on which train the passenger is currently on?
// 	public String onTrain = null;
// 	
// 	// in which station the passenger is currently waiting?
// 	public String inStation = null;
// 	
// 	// passenger destination
// 	public String destination = null;
// 	
// }


import java.util.List;
import osgi.enroute.trains.passenger.api.Passenger;
package osgi.enroute.trains.operator.api;



/**
 * A Train Operator will manage his fleet of trains to visit a number of stations and hence transport people
 * 
 * Passengers can check in in a station via the StationsManager. If an operator has a train arriving
 * in a station it can pick up passengers by calling the board method of the StationManager. 
 * 
 * The Train Operator will also post Arrival and Departure events when trains arrive/depart in/from a station
 * 
 * The Train Operator is responsible for choosing the schedule in which trains visit stations. 
 * It uses the Command events to interact with the TrackManager 
 *  
 * @author tverbele
 *
 */
public interface TrainOperator {

	/**
	 * List all trains of this operator
	 * @return
	 */
	List<String> getTrains();
	
	/**
	 * List all passengers currently traveling on the train
	 * @param train
	 * @return
	 */
// Path: osgi.enroute.trains.api/src/osgi/enroute/trains/passenger/api/Passenger.java
// public class Passenger extends DTO {
// 
// 	// which person 
// 	public Person person;
// 	
// 	// on which train the passenger is currently on?
// 	public String onTrain = null;
// 	
// 	// in which station the passenger is currently waiting?
// 	public String inStation = null;
// 	
// 	// passenger destination
// 	public String destination = null;
// 	
// }


// Path: osgi.enroute.trains.api/src/osgi/enroute/trains/operator/api/TrainOperator.java
import java.util.List;
import osgi.enroute.trains.passenger.api.Passenger;

package osgi.enroute.trains.operator.api;



/**
 * A Train Operator will manage his fleet of trains to visit a number of stations and hence transport people
 * 
 * Passengers can check in in a station via the StationsManager. If an operator has a train arriving
 * in a station it can pick up passengers by calling the board method of the StationManager. 
 * 
 * The Train Operator will also post Arrival and Departure events when trains arrive/depart in/from a station
 * 
 * The Train Operator is responsible for choosing the schedule in which trains visit stations. 
 * It uses the Command events to interact with the TrackManager 
 *  
 * @author tverbele
 *
 */
public interface TrainOperator {

	/**
	 * List all trains of this operator
	 * @return
	 */
	List<String> getTrains();
	
	/**
	 * List all passengers currently traveling on the train
	 * @param train
	 * @return
	 */
	List<Passenger> getPassengersOnTrain(String train);