// 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.stations.api;



/**
 * StationsManager provides an API for managing the stations and people traveling from 
 * Station A to B. A person can check in at a station with a planned destination 
 * by calling checkIn(). 
 * 
 * TrainOperators that have a train arriving at a station can call unboard/board to 
 * let passengers hop off/on the train.
 * 
 * The StationsManager will publish CheckIn/CheckOut events when a person checks in/out
 * of a station.
 * 
 * The StationsManager should also update the PassengersStatistics as persons visit stations. 
 * 
 * @author tverbele
 *
 */
public interface StationsManager {

	/**
	 * List all known stations
	 * @return
	 */
	List<Station> getStations();
	
	/**
	 * Return the segment for this station
	 * @param station
	 * @return
	 */
	String getStationSegment(String station);

	/**
	 * Return the station for this segment
	 */
	String getStation(String segment);
	
	/**
	 * List the passengers currently waiting in a station
	 * @param station
	 * @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/stations/api/StationsManager.java
import java.util.List;
import osgi.enroute.trains.passenger.api.Passenger;

package osgi.enroute.trains.stations.api;



/**
 * StationsManager provides an API for managing the stations and people traveling from 
 * Station A to B. A person can check in at a station with a planned destination 
 * by calling checkIn(). 
 * 
 * TrainOperators that have a train arriving at a station can call unboard/board to 
 * let passengers hop off/on the train.
 * 
 * The StationsManager will publish CheckIn/CheckOut events when a person checks in/out
 * of a station.
 * 
 * The StationsManager should also update the PassengersStatistics as persons visit stations. 
 * 
 * @author tverbele
 *
 */
public interface StationsManager {

	/**
	 * List all known stations
	 * @return
	 */
	List<Station> getStations();
	
	/**
	 * Return the segment for this station
	 * @param station
	 * @return
	 */
	String getStationSegment(String station);

	/**
	 * Return the station for this segment
	 */
	String getStation(String segment);
	
	/**
	 * List the passengers currently waiting in a station
	 * @param station
	 * @return
	 */
	List<Passenger> getPassengersWaiting(String station);