<commit_before>package osgi.enroute.trains.stations.api;

import java.util.List;

import osgi.enroute.trains.passenger.api.Passenger;

/**
 * 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<String> getStations();
	
	/**
	 * List the passengers currently waiting in a station
	 * @param station
	 * @return
	 */
	List<Passenger> getPassengersWaiting(String station);
	
	/**
	 * Person checks in at a station with a certain destination
	 * @param person
	 * @param station<commit_msg>fetch Station segment from StationsManager<commit_after>package osgi.enroute.trains.stations.api;

import java.util.List;

import osgi.enroute.trains.passenger.api.Passenger;

/**
 * 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<String> getStations();
	
	/**
	 * Return the segment for this station
	 * @param station
	 * @return
	 */
	// TODO should one rather track Station service themselves?
	String getStationSegment(String station);
	
	/**
	 * List the passengers currently waiting in a station
	 * @param station
	 * @return
	 */
	List<Passenger> getPassengersWaiting(String station);
	
	/**
	 * Person checks in at a station with a certain destination
	 * @param person
	 * @param station
{'fraction_non_alphanumeric': 0.07782426778242678, 'fraction_numerical': 0.0, 'mean_word_length': 3.633720930232558, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '682914', 'n_tokens_mistral': 689, 'n_tokens_neox': 630, 'n_words': 265}