165 lines
6.2 KiB
Java
165 lines
6.2 KiB
Java
|
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<Chambre> 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<Reservation> 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<Reservation> 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<Reservation> getReservation(LocalDate d1, LocalDate d2, TypeChambre t);
|
||
|
|
||
|
/**
|
||
|
* Cherche le <b>nombre moyen</b> 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 <b>proportion moyenne</b> 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 <b>proportion moyenne</b> 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);
|
||
|
|
||
|
}
|