Bugfix merci Dylan, plus ajout quelques fonctionalités pipeau pour tester les ratio pour le second sujet

This commit is contained in:
2022-02-16 11:55:47 +01:00
parent 2a124a8934
commit a08b214242
3 changed files with 120 additions and 4 deletions

View File

@@ -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);

View File

@@ -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;
}