package shared.dataInput; import network.Messages.Enums.RaceTypeEnum; import shared.model.Boat; import shared.model.CompoundMark; import shared.model.GPSCoordinate; import shared.model.Leg; import java.time.ZonedDateTime; import java.util.List; /** * An object that holds relevant data for a race.
* Information includes: {@link shared.model.Boat Boat}s, * {@link shared.model.Leg Leg}s, {@link shared.model.CompoundMark CompoundMark}s and * the {@link shared.model.GPSCoordinate GPSCoordinate}s. */ public interface RaceDataSource { /** * Returns the list of boats competing in the race. * @return Boats competing in the race. */ List getBoats(); /** * Returns the list of legs in the race. * @return The list of legs in the race. */ List getLegs(); /** * Returns a list of coordinates representing the boundary of the race. * @return The boundary of the race. */ List getBoundary(); /** * Returns a list of CompoundMarks in the race. * @return */ List getCompoundMarks(); /** * Returns the ID of the race. * @return The ID of the race. */ int getRaceId(); /** * Returns the type of race. * @return The type of race. */ RaceTypeEnum getRaceType(); /** * Returns the start time/date of the race. * @return The race's start time. */ ZonedDateTime getZonedDateTime(); /** * Returns the GPS coordinate of the top left of the race map area. * @return Top left GPS coordinate. */ GPSCoordinate getMapTopLeft(); /** * Returns the GPS coordinate of the bottom right of the race map area. * @return Bottom right GPS coordinate. */ GPSCoordinate getMapBottomRight(); }