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){
|
public Set<Prereservation> getPrereservations(String n, String p){
|
||||||
Objects.requireNonNull(n,"Le nom recherché est null.");
|
Objects.requireNonNull(n,"Le nom recherché est null.");
|
||||||
Objects.requireNonNull(p,"Le prénom recherché est null.");
|
Objects.requireNonNull(p,"Le prénom recherché est null.");
|
||||||
// on va extraire toutes les préréservations du cerveau
|
// on va extraire toutes les préréservations d'une copie du cerveau
|
||||||
Collection<Prereservation> c = this.brain.values();
|
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 :
|
// 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);
|
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);
|
c.removeIf(filtre);
|
||||||
if (c.isEmpty()){
|
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);
|
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.*;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import java.lang.*;
|
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.
|
* 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;
|
private HashMap<LocalDate,Set<Reservation>> brain;
|
||||||
|
|
||||||
|
|
||||||
|
// mostly useless stuff to pretend to implement some methods.
|
||||||
|
private Random rnd;
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * Constructeur
|
// * Constructeur
|
||||||
// */
|
// */
|
||||||
@ -102,6 +107,10 @@ public class ReservationFactoryNP implements ReservationFactory{
|
|||||||
this.brokenMagic.put(TypeChambre.UNLD,Integer.valueOf(this.MAX_UNLD));
|
this.brokenMagic.put(TypeChambre.UNLD,Integer.valueOf(this.MAX_UNLD));
|
||||||
|
|
||||||
brain = new HashMap<LocalDate,Set<Reservation>>();
|
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).
|
* 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
|
* @param d une date
|
||||||
* @return un entier entre 0 et 100
|
* @return un entier entre 0 et 100
|
||||||
* @throws NullPointerException si un argument est null
|
* @throws NullPointerException si un argument est null
|
||||||
*/
|
*/
|
||||||
public int getRatio(LocalDate d){
|
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.print("I am sorry Madam, no booking under this reference.\n");
|
||||||
}
|
}
|
||||||
System.out.println("==========================");
|
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("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");
|
System.out.print("Marine Carpentier? C-A-R-P-E-N-T-I-E-R? Un instant, je vous prie.\n");
|
||||||
try{
|
try{
|
||||||
@ -141,6 +171,54 @@ public class TestTexteMNP{
|
|||||||
System.out.print("I am sorry Madam, no booking under this reference.\n");
|
System.out.print("I am sorry Madam, no booking under this reference.\n");
|
||||||
}
|
}
|
||||||
System.out.println("==========================");
|
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("=== Vue du manageur ====");
|
||||||
System.out.println("==========================");
|
System.out.println("==========================");
|
||||||
Set<Reservation> resas = grandLivreDOrAPISeulement.getReservation(LocalDate.of(2018,01,05));
|
Set<Reservation> resas = grandLivreDOrAPISeulement.getReservation(LocalDate.of(2018,01,05));
|
||||||
@ -148,6 +226,14 @@ public class TestTexteMNP{
|
|||||||
for(Reservation r : resas){
|
for(Reservation r : resas){
|
||||||
System.out.println(r.monPrint());
|
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