brouillon un peu mieux de ReservationFactoryNP -- disclaimer : use at your own risk
This commit is contained in:
parent
20012ff5d1
commit
2a124a8934
15
Makefile
15
Makefile
@ -53,6 +53,7 @@ ${BUILD}/API/Prereservation.class : ${SRC}/API/Prereservation.java \
|
|||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/Prereservation.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/Prereservation.java
|
||||||
|
|
||||||
${BUILD}/API/Reservation.class : ${SRC}/API/Reservation.java \
|
${BUILD}/API/Reservation.class : ${SRC}/API/Reservation.java \
|
||||||
|
${BUILD}/API/Chambre.class \
|
||||||
${BUILD}/API/Prereservation.class
|
${BUILD}/API/Prereservation.class
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/Reservation.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/Reservation.java
|
||||||
|
|
||||||
@ -61,7 +62,7 @@ ${BUILD}/API/PrereservationFactory.class : ${SRC}/API/PrereservationFactory.java
|
|||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/PrereservationFactory.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/PrereservationFactory.java
|
||||||
|
|
||||||
${BUILD}/API/ReservationFactory.class : ${SRC}/API/ReservationFactory.java \
|
${BUILD}/API/ReservationFactory.class : ${SRC}/API/ReservationFactory.java \
|
||||||
${BUILD}/API/Prereservation.class
|
${BUILD}/API/Reservation.class
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/ReservationFactory.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/ReservationFactory.java
|
||||||
|
|
||||||
## MNP ##
|
## MNP ##
|
||||||
@ -83,18 +84,22 @@ ${BUILD}/MNP/ReservationNP.class : ${SRC}/MNP/ReservationNP.java \
|
|||||||
${BUILD}/API/Reservation.class
|
${BUILD}/API/Reservation.class
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MNP/ReservationNP.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MNP/ReservationNP.java
|
||||||
|
|
||||||
${BUILD}/MNP/PrereservationFactory.class : ${SRC}/API/PrereservationFactory.java
|
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MNP/PrereservationFactory.java
|
|
||||||
|
|
||||||
${BUILD}/MNP/PrereservationFactoryNP.class : ${SRC}/MNP/PrereservationFactoryNP.java \
|
${BUILD}/MNP/PrereservationFactoryNP.class : ${SRC}/MNP/PrereservationFactoryNP.java \
|
||||||
${BUILD}/API/PrereservationFactory.class
|
${BUILD}/API/PrereservationFactory.class
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MNP/PrereservationFactoryNP.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MNP/PrereservationFactoryNP.java
|
||||||
|
|
||||||
|
${BUILD}/MNP/ReservationFactoryNP.class : ${SRC}/MNP/ReservationFactoryNP.java \
|
||||||
|
${BUILD}/MNP/ChambreNP.class \
|
||||||
|
${BUILD}/MNP/ReservationNP.class \
|
||||||
|
${BUILD}/API/ReservationFactory.class
|
||||||
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MNP/ReservationFactoryNP.java
|
||||||
|
|
||||||
## TEST ##
|
## TEST ##
|
||||||
|
|
||||||
${BUILD}/Test/TestTexteMNP.class : ${SRC}/Test/TestTexteMNP.java \
|
${BUILD}/Test/TestTexteMNP.class : ${SRC}/Test/TestTexteMNP.java \
|
||||||
${BUILD}/MNP/PrereservationNP.class \
|
${BUILD}/MNP/PrereservationNP.class \
|
||||||
${BUILD}/MNP/PrereservationFactoryNP.class
|
${BUILD}/MNP/PrereservationFactoryNP.class \
|
||||||
|
${BUILD}/MNP/ReservationFactoryNP.class
|
||||||
${JAVAC} -Xlint:deprecation ${JAVAC_OPTIONS} ${SRC}/Test/TestTexteMNP.java
|
${JAVAC} -Xlint:deprecation ${JAVAC_OPTIONS} ${SRC}/Test/TestTexteMNP.java
|
||||||
|
|
||||||
# ## JARS ##
|
# ## JARS ##
|
||||||
|
@ -28,16 +28,18 @@ public class ReservationFactoryNP implements ReservationFactory{
|
|||||||
|
|
||||||
// similaire pour stocker la valeur max, même un hotel magique devrait faire le ménage.
|
// similaire pour stocker la valeur max, même un hotel magique devrait faire le ménage.
|
||||||
private EnumMap<TypeChambre,Integer> brokenMagic;
|
private EnumMap<TypeChambre,Integer> brokenMagic;
|
||||||
|
|
||||||
|
// BUGFIX. ^ c'est le xor en java donc 10^6 ça ne fait pas un million mais autre chose
|
||||||
|
// Du coup en dessous j'écris 1000000 à la place.
|
||||||
// plus petite et plus grande valeur pour les chambres UNLS
|
// plus petite et plus grande valeur pour les chambres UNLS
|
||||||
private static int MIN_UNLS = 0;
|
private static int MIN_UNLS = 0;
|
||||||
private static int MAX_UNLS = 10^6 -1;
|
private static int MAX_UNLS = 1000000 -1;
|
||||||
// plus petite et plus grande valeur pour les chambres DEUXLS
|
// plus petite et plus grande valeur pour les chambres DEUXLS
|
||||||
private static int MIN_DEUXLS = 10^6;
|
private static int MIN_DEUXLS = 1000000;
|
||||||
private static int MAX_DEUXLS = 2*10^6 -1;
|
private static int MAX_DEUXLS = 2*1000000 -1;
|
||||||
// plus petite et plus grande valeur pour les chambres UNLD
|
// plus petite et plus grande valeur pour les chambres UNLD
|
||||||
private static int MIN_UNLD = 2*10^6;
|
private static int MIN_UNLD = 2*1000000;
|
||||||
private static int MAX_UNLD = 3*10^6 -1;
|
private static int MAX_UNLD = 3*1000000 -1;
|
||||||
|
|
||||||
// plus grand nombre de chambres à proposer si le client souhaite choisir (va automatiquement salir les chambres précédentes)
|
// plus grand nombre de chambres à proposer si le client souhaite choisir (va automatiquement salir les chambres précédentes)
|
||||||
private static int ADEQUATE = 5;
|
private static int ADEQUATE = 5;
|
||||||
@ -93,7 +95,7 @@ public class ReservationFactoryNP implements ReservationFactory{
|
|||||||
this.nextFreeRoom.put(TypeChambre.UNLS,Integer.valueOf(this.MIN_UNLS));
|
this.nextFreeRoom.put(TypeChambre.UNLS,Integer.valueOf(this.MIN_UNLS));
|
||||||
this.nextFreeRoom.put(TypeChambre.DEUXLS,Integer.valueOf(this.MIN_DEUXLS));
|
this.nextFreeRoom.put(TypeChambre.DEUXLS,Integer.valueOf(this.MIN_DEUXLS));
|
||||||
this.nextFreeRoom.put(TypeChambre.UNLD,Integer.valueOf(this.MIN_UNLD));
|
this.nextFreeRoom.put(TypeChambre.UNLD,Integer.valueOf(this.MIN_UNLD));
|
||||||
|
|
||||||
brokenMagic = new EnumMap<>(TypeChambre.class);
|
brokenMagic = new EnumMap<>(TypeChambre.class);
|
||||||
this.brokenMagic.put(TypeChambre.UNLS,Integer.valueOf(this.MAX_UNLS));
|
this.brokenMagic.put(TypeChambre.UNLS,Integer.valueOf(this.MAX_UNLS));
|
||||||
this.brokenMagic.put(TypeChambre.DEUXLS,Integer.valueOf(this.MAX_DEUXLS));
|
this.brokenMagic.put(TypeChambre.DEUXLS,Integer.valueOf(this.MAX_DEUXLS));
|
||||||
@ -143,7 +145,7 @@ public class ReservationFactoryNP implements ReservationFactory{
|
|||||||
int howMany = Math.min(this.brokenMagic.get(p.getTypeChambre()) - this.nextFreeRoom.get(p.getTypeChambre()), this.ADEQUATE);
|
int howMany = Math.min(this.brokenMagic.get(p.getTypeChambre()) - this.nextFreeRoom.get(p.getTypeChambre()), this.ADEQUATE);
|
||||||
|
|
||||||
for (int i=0; i< howMany ;i++) {
|
for (int i=0; i< howMany ;i++) {
|
||||||
Chambre c = new ChambreNP(numero,p.getTypeChambre());
|
Chambre c = new ChambreNP(numero+i,p.getTypeChambre());
|
||||||
res.add(c);
|
res.add(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,7 +163,7 @@ public class ReservationFactoryNP implements ReservationFactory{
|
|||||||
*/
|
*/
|
||||||
private void addReservationToBrain(Reservation r){
|
private void addReservationToBrain(Reservation r){
|
||||||
// mise à jour de la prochaine chambre libre à 1 de plus que moi
|
// mise à jour de la prochaine chambre libre à 1 de plus que moi
|
||||||
this.nextFreeRoom.put(r.getChambre().getType(),Integer.valueOf(r.getChambre().getNumero() + 1));
|
this.nextFreeRoom.put(r.getChambre().getType(),Integer.valueOf(r.getChambre().getNumero() + 1));
|
||||||
// Ajout pour toutes les dates de la réservation.
|
// Ajout pour toutes les dates de la réservation.
|
||||||
LocalDate d = r.getDateDebut();
|
LocalDate d = r.getDateDebut();
|
||||||
for (int i=0; i< r.getJours() ;i++) {
|
for (int i=0; i< r.getJours() ;i++) {
|
||||||
@ -184,7 +186,13 @@ public class ReservationFactoryNP implements ReservationFactory{
|
|||||||
this.brain.put(d,s);
|
this.brain.put(d,s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String prochainesChambresLibres(){
|
||||||
|
StringBuilder sb = new StringBuilder("prochaines chambres libres par type:\n");
|
||||||
|
for (TypeChambre t : TypeChambre.values()){
|
||||||
|
sb.append("\t _ " + t + " " + this.nextFreeRoom.get(t) + "\n");
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fabrique (ajoute) une réservation
|
* Fabrique (ajoute) une réservation
|
||||||
@ -203,10 +211,10 @@ public class ReservationFactoryNP implements ReservationFactory{
|
|||||||
if (c.getType()!=p.getTypeChambre()) {
|
if (c.getType()!=p.getTypeChambre()) {
|
||||||
throw new IllegalArgumentException("Erreur sur le type de la chambre: la préréservation indique " + p.getTypeChambre() + " mais la chambre est " + c.getType());
|
throw new IllegalArgumentException("Erreur sur le type de la chambre: la préréservation indique " + p.getTypeChambre() + " mais la chambre est " + c.getType());
|
||||||
}
|
}
|
||||||
else if (false) // n'arrive jamais dans l'hôtel magique.
|
else if (false) // on fait comme si ça n'arrive jamais dans l'hôtel magique (pour l'instant).
|
||||||
{
|
{
|
||||||
throw new IllegalArgumentException("Pas de chambre disponible de type " + p.getTypeChambre());
|
throw new IllegalArgumentException("La chambre " + c.monPrint() + " n'est pas disponible pour fabriquer une réservation à partir de la préréservation " + p.monPrint());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Reservation r = new ReservationNP(p.getReference(), p.getDateDebut(), p.getJours(), c, p.getClient());
|
Reservation r = new ReservationNP(p.getReference(), p.getDateDebut(), p.getJours(), c, p.getClient());
|
||||||
this.addReservationToBrain(r);
|
this.addReservationToBrain(r);
|
||||||
|
@ -3,6 +3,7 @@ import fr.iutfbleau.projetIHM2021FI2.API.*;
|
|||||||
import fr.iutfbleau.projetIHM2021FI2.MNP.*;
|
import fr.iutfbleau.projetIHM2021FI2.MNP.*;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
//import java.util.Random;
|
||||||
|
|
||||||
public class TestTexteMNP{
|
public class TestTexteMNP{
|
||||||
|
|
||||||
@ -52,6 +53,8 @@ public class TestTexteMNP{
|
|||||||
// On peut donc changer l'implémentation du modèle tant qu'on ne change pas l'API en préservant le bon fonctionement de la vue et du controleur.
|
// On peut donc changer l'implémentation du modèle tant qu'on ne change pas l'API en préservant le bon fonctionement de la vue et du controleur.
|
||||||
// Pour l'instant, nous n'avons ni vue, ni controleur, mais nous pouvons faire semblant en interagissant avec le modèle via l'API.
|
// Pour l'instant, nous n'avons ni vue, ni controleur, mais nous pouvons faire semblant en interagissant avec le modèle via l'API.
|
||||||
|
|
||||||
|
// pour choisir au hasard.
|
||||||
|
Random random = new Random();
|
||||||
|
|
||||||
System.out.print("Simulation manuelle du genre de chose que la vue pourrait faire.\n");
|
System.out.print("Simulation manuelle du genre de chose que la vue pourrait faire.\n");
|
||||||
|
|
||||||
@ -99,6 +102,39 @@ public class TestTexteMNP{
|
|||||||
System.out.print("I found your bookings.\n");
|
System.out.print("I found your bookings.\n");
|
||||||
for(Prereservation p : preresas){
|
for(Prereservation p : preresas){
|
||||||
System.out.println(p.monPrint());
|
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){
|
catch(IllegalStateException e){
|
||||||
|
Loading…
Reference in New Issue
Block a user