Bugfix merci Dylan, plus ajout quelques fonctionalités pipeau pour tester les ratio pour le second sujet
This commit is contained in:
parent
2a124a8934
commit
a08b214242
@ -57,11 +57,12 @@ public class PrereservationFactoryNP implements PrereservationFactory{
|
||||
public Set<Prereservation> getPrereservations(String n, String p){
|
||||
Objects.requireNonNull(n,"Le nom recherché est null.");
|
||||
Objects.requireNonNull(p,"Le prénom recherché est null.");
|
||||
// on va extraire toutes les préréservations du cerveau
|
||||
Collection<Prereservation> c = this.brain.values();
|
||||
// on va extraire toutes les préréservations d'une copie du cerveau
|
||||
HashMap<String, Prereservation> copy_brain = (HashMap<String, Prereservation>) this.brain.clone();
|
||||
Collection<Prereservation> c = copy_brain.values();
|
||||
// on définit un prédicat sur les Préréservations :
|
||||
Predicate<Prereservation> filtre = preresa -> !preresa.getClient().getNom().equals(n) || !preresa.getClient().getPrenom().equals(p);
|
||||
// on filtre la collection.
|
||||
// on filtre la collection (ceci provoque des effets de bords sur le hashmap, d'où la copie ci-dessus. Merci à Dylan Giraud pour le bugfix).
|
||||
c.removeIf(filtre);
|
||||
if (c.isEmpty()){
|
||||
throw new IllegalStateException("Il n'y a pas de préréservation avec un Client ayant pour nom et prenom : " + n + " et " + p);
|
||||
|
@ -4,6 +4,7 @@ import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
import java.util.function.Predicate;
|
||||
import java.lang.*;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* Usine non persistante stockant les réservations dans une structure de données permettant de simuler un ensemble.
|
||||
@ -86,6 +87,10 @@ public class ReservationFactoryNP implements ReservationFactory{
|
||||
//
|
||||
private HashMap<LocalDate,Set<Reservation>> brain;
|
||||
|
||||
|
||||
// mostly useless stuff to pretend to implement some methods.
|
||||
private Random rnd;
|
||||
|
||||
// /**
|
||||
// * Constructeur
|
||||
// */
|
||||
@ -102,6 +107,10 @@ public class ReservationFactoryNP implements ReservationFactory{
|
||||
this.brokenMagic.put(TypeChambre.UNLD,Integer.valueOf(this.MAX_UNLD));
|
||||
|
||||
brain = new HashMap<LocalDate,Set<Reservation>>();
|
||||
|
||||
// crap stuff to do drawing
|
||||
this.rnd = new Random();
|
||||
rnd.setSeed(42);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -284,12 +293,32 @@ public class ReservationFactoryNP implements ReservationFactory{
|
||||
|
||||
/**
|
||||
* Cherche la proportion de chambres disponibles pour une date (réservées sur réservables).
|
||||
* (en théorie)
|
||||
*
|
||||
* En pratique cette méthode répond n'importe quoi mais ça devrait faire des jolis dessins.
|
||||
*
|
||||
* @param d une date
|
||||
* @return un entier entre 0 et 100
|
||||
* @throws NullPointerException si un argument est null
|
||||
*/
|
||||
public int getRatio(LocalDate d){
|
||||
throw new UnsupportedOperationException("pas encore implanté");
|
||||
//throw new UnsupportedOperationException("pas encore implanté");
|
||||
|
||||
// normalement vu le nombre de chambres ceci serait probablement correct
|
||||
// return 100;
|
||||
|
||||
// Je vais répondre un truc idiot pour faire des plus jolis dessins.
|
||||
int jourint = d.getDayOfWeek().getValue(); // une valeur entre 1 pour lundi et 7 pour dimanche.
|
||||
// tableau indexé par le jour
|
||||
int[] intArray = new int[]{ 30,40,60,65,40,60,30};
|
||||
|
||||
//un peu de bruit pour faire joli
|
||||
// Random rnd; intialisé dans constructeur maintenant, c'est un attribut.
|
||||
int max = 10;
|
||||
int min = 0;
|
||||
int bruit = this.rnd.nextInt((max - min) + 1) + min;
|
||||
|
||||
return intArray[jourint-1]+bruit;
|
||||
}
|
||||
|
||||
|
||||
|
@ -95,6 +95,36 @@ public class TestTexteMNP{
|
||||
System.out.print("I am sorry Madam, no booking under this reference.\n");
|
||||
}
|
||||
System.out.println("==========================");
|
||||
System.out.println("Le portier a un moment d'absence? on est dans total recall?");
|
||||
System.out.println("==========================");
|
||||
System.out.print("Hello Madam. Je cherche votre préreservation avec référence 2436-3909-NXLL\n");
|
||||
try{
|
||||
Prereservation preresa = bookingPointComAPISeulement.getPrereservation("2436-3909-NXLL");
|
||||
System.out.print("I found your booking.\n");
|
||||
System.out.println(preresa.monPrint());
|
||||
|
||||
Chambre libre=null;
|
||||
try{
|
||||
libre = grandLivreDOrAPISeulement.getChambre(preresa);
|
||||
System.out.print("I have a great room for you.\n");
|
||||
System.out.println(libre.monPrint());
|
||||
}
|
||||
catch(IllegalStateException e){
|
||||
System.out.print(e.getMessage());
|
||||
}
|
||||
try{
|
||||
System.out.print("You like this room? Excellent! Let me confirm the reservation for you.\n");
|
||||
Reservation resa = grandLivreDOrAPISeulement.createReservation(preresa,libre);
|
||||
System.out.println(resa.monPrint());
|
||||
}
|
||||
catch(IllegalStateException e){
|
||||
System.out.print(e.getMessage());
|
||||
}
|
||||
}
|
||||
catch(IllegalStateException e){
|
||||
System.out.print("I am sorry Madam, no booking under this reference.\n");
|
||||
}
|
||||
System.out.println("==========================");
|
||||
System.out.print("Hello Madam. Vous avez oubliée votre numéro de préréservation. Ce n'est pas grave, je vais chercher avec votre nom et prénom.\n");
|
||||
System.out.print("Marine Carpentier? C-A-R-P-E-N-T-I-E-R? Un instant, je vous prie.\n");
|
||||
try{
|
||||
@ -141,6 +171,54 @@ public class TestTexteMNP{
|
||||
System.out.print("I am sorry Madam, no booking under this reference.\n");
|
||||
}
|
||||
System.out.println("==========================");
|
||||
System.out.println("Deux clients à la suite. Ça ne marche pas sans le bugfix de Dylan avec le modèle non persistant.");
|
||||
System.out.println("==========================");
|
||||
System.out.print("Hello Sir. Vous avez oubliée votre numéro de préréservation. Ce n'est pas grave, je vais chercher avec votre nom et prénom.\n");
|
||||
System.out.print("Dumas Aaron? ah non, Aaron Dumas? OK. Un instant, je vous prie.\n");
|
||||
try{
|
||||
Set<Prereservation> preresas = bookingPointComAPISeulement.getPrereservations("Dumas","Aaron");
|
||||
System.out.print("I found your bookings.\n");
|
||||
for(Prereservation p : preresas){
|
||||
System.out.println(p.monPrint());
|
||||
Chambre libre = null;
|
||||
Set<Chambre> disponibles=null;
|
||||
try{
|
||||
disponibles = grandLivreDOrAPISeulement.getChambres(p);
|
||||
System.out.print("I have great rooms for you :\n");
|
||||
for(Chambre c : disponibles){
|
||||
System.out.println(c.monPrint());
|
||||
}
|
||||
// choix de la chambre au hasard simulant le choix du client
|
||||
int choix = random.nextInt(disponibles.size());
|
||||
System.out.println("choix: " + choix);
|
||||
int compter = 0;
|
||||
for(Chambre c : disponibles){
|
||||
if (compter == choix){
|
||||
libre = c;
|
||||
break;
|
||||
}
|
||||
compter++;
|
||||
}
|
||||
}
|
||||
catch(IllegalStateException e){
|
||||
System.out.print(e.getMessage());
|
||||
}
|
||||
try{
|
||||
System.out.println(libre.monPrint());
|
||||
System.out.print("You like this room? Excellent! Let me confirm the reservation for you.\n");
|
||||
Reservation resa = grandLivreDOrAPISeulement.createReservation(p,libre);
|
||||
System.out.println(resa.monPrint());
|
||||
}
|
||||
catch(IllegalStateException e){
|
||||
System.out.print(e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
catch(IllegalStateException e){
|
||||
System.out.print("I am sorry Madam, no booking under this reference.\n");
|
||||
}
|
||||
System.out.println("==========================");
|
||||
System.out.println("=== Vue du manageur ====");
|
||||
System.out.println("==========================");
|
||||
Set<Reservation> resas = grandLivreDOrAPISeulement.getReservation(LocalDate.of(2018,01,05));
|
||||
@ -148,6 +226,14 @@ public class TestTexteMNP{
|
||||
for(Reservation r : resas){
|
||||
System.out.println(r.monPrint());
|
||||
}
|
||||
System.out.println("Attention ce n'est pas cohérent mais nous avons le moyen de récupérer un ratio pour faire joli");
|
||||
System.out.print("Ratio du "+ LocalDate.of(2018,01,7) + " : " + grandLivreDOrAPISeulement.getRatio(LocalDate.of(2018,01,7)) + "%\n");
|
||||
System.out.print("Ratio du "+ LocalDate.of(2018,01,8) + " : " + grandLivreDOrAPISeulement.getRatio(LocalDate.of(2018,01,8)) + "%\n");
|
||||
System.out.print("Ratio du "+ LocalDate.of(2018,01,9) + " : " + grandLivreDOrAPISeulement.getRatio(LocalDate.of(2018,01,9)) + "%\n");
|
||||
System.out.print("Ratio du "+ LocalDate.of(2018,01,10) + " : " + grandLivreDOrAPISeulement.getRatio(LocalDate.of(2018,01,10)) + "%\n");
|
||||
System.out.print("Ratio du "+ LocalDate.of(2018,01,11) + " : " + grandLivreDOrAPISeulement.getRatio(LocalDate.of(2018,01,11)) + "%\n");
|
||||
System.out.print("Ratio du "+ LocalDate.of(2018,01,12) + " : " + grandLivreDOrAPISeulement.getRatio(LocalDate.of(2018,01,12)) + "%\n");
|
||||
System.out.print("Ratio du "+ LocalDate.of(2018,01,13) + " : " + grandLivreDOrAPISeulement.getRatio(LocalDate.of(2018,01,13)) + "%\n");
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user