package fr.iutfbleau.projetIHM2021FI2.MNP; import fr.iutfbleau.projetIHM2021FI2.API.*; import java.time.LocalDate; import java.util.*; import java.util.function.Predicate; /** * Usine non persistante stockant les réservations dans une structure de données permettant de simuler un ensemble. * * */ public interface ReservationFactory{ /** * Recherche une chambre adéquate à partir de * @param p une préréservation * @return la chambre * @throws NullPointerException si un argument est null * @throws IllegalStateException si une chambre correspondant à cette Préréservation n'existe pas. * * Ne devrait pas retourner un objet null. */ public Chambre getChambre(Prereservation p); /** * Recherche toutes les chambres adéquates à partir de * @param p une préréservation * @return les chambres (set de chambre) * @throws NullPointerException si un argument est null * @throws IllegalStateException si une chambre correspondant à cette Préréservation n'existe pas. * * Ne devrait pas retourner un objet null. */ public Set getChambres(Prereservation p); /** * Fabrique (ajoute) une réservation * @param p une préréservation * @param c une chambre (normalement libre et adaptée à la préréservation) * @return la réservation * @throws NullPointerException si un argument est null * @throws IllegalArgumentException si la chambre ne correspondant pas au type de chambre de la préréservation. * @throws IllegalStateException si la chambre n'est pas disponible. * * Ne devrait pas retourner un objet null. */ public Reservation createReservation(Prereservation p, Chambre c); /** * Cherche les réservations * @param d une date * @return la ou les réservation(s) à cette date sous forme d'un ensemble * @throws NullPointerException si un argument est null * * Ne devrait pas retourner un objet null, par contre peut être un ensemble qui est vide. */ public Set getReservation(LocalDate d); /** * Cherche le nombre de chambres disponibles pour une date (réservées ou non). * @param d une date * @return un entier * @throws NullPointerException si un argument est null * * Ne devrait pas retourner un entier négatif. */ public int getDisponibles(LocalDate d); /** * Cherche les réservations * @param d une date * @param t un type de chambre * @return la ou les réservation(s) pour ce type de chambre à cette date sous forme d'un ensemble * @throws NullPointerException si un argument est null * * Ne devrait pas retourner un objet null, par contre peut être un ensemble qui est vide. */ public Set getReservation(LocalDate d, TypeChambre t); /** * Cherche le nombre de chambres disponibles d'un certain type pour une date (réservées ou non). * @param d une date * @param t un type de chambre * @return un entier * @throws NullPointerException si un argument est null * * Ne devrait pas retourner un entier négatif. */ public int getDisponibles(LocalDate d, TypeChambre t); /** * Cherche la proportion de chambres disponibles pour une date (réservées sur réservables). * @param d une date * @return un entier entre 0 et 100 * @throws NullPointerException si un argument est null */ public int getRatio(LocalDate d); /** * Cherche la proportion de chambres disponibles d'un certain type pour une date (réservées sur réservables). * @param d une date * @param t un type de chambre * @return un entier entre 0 et 100 * @throws NullPointerException si un argument est null */ public int getRatio(LocalDate d, TypeChambre t); /** * Cherche le nombre moyen de chambres disponibles entre deux date (réservées ou non), arrondies à l'entier inférieur. * @param d1 une date * @param d2 une date * @return un entier * @throws NullPointerException si un argument est null * @throws IllegalArgumentException si l'ordre temporel d1 avant d2 n'est pas respecté. * * Ne devrait pas retourner un entier négatif. */ public int getDisponibles(LocalDate d1, LocalDate d2); /** * Cherche les réservations * @param d1 une date * @param d2 une date * @param t un type de chambre * @return la ou les réservation(s) pour ce type de chambre entre les dates sous forme d'un ensemble * @throws NullPointerException si un argument est null * @throws IllegalArgumentException si l'ordre temporel d1 avant d2 n'est pas respecté. * * Ne devrait pas retourner un objet null, par contre peut être un ensemble qui est vide. */ public Set getReservation(LocalDate d1, LocalDate d2, TypeChambre t); /** * Cherche le nombre moyen de chambres disponibles d'un certain type entre deux date (réservées ou non), arrondies à l'entier inférieur. * @param d1 une date * @param d2 une date * @param t un type de chambre * @return un entier * @throws NullPointerException si un argument est null * @throws IllegalArgumentException si l'ordre temporel d1 avant d2 n'est pas respecté. * * Ne devrait pas retourner un entier négatif. */ public int getDisponibles(LocalDate d1, LocalDate d2, TypeChambre t); /** * Cherche la proportion moyenne de chambres disponibles pour une date (réservées sur réservables). * @param d1 une date * @param d2 une date * @return un entier entre 0 et 100 * @throws NullPointerException si un argument est null */ public int getRatio(LocalDate d1, LocalDate d2); /** * Cherche la proportion moyenne de chambres disponibles d'un certain type pour une date (réservées sur réservables). * @param d1 une date * @param d2 une date * @param t un type de chambre * @return un entier entre 0 et 100 * @throws NullPointerException si un argument est null */ public int getRatio(LocalDate d1, LocalDate d2, TypeChambre t); }