-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJour.java
More file actions
120 lines (98 loc) · 4.27 KB
/
Jour.java
File metadata and controls
120 lines (98 loc) · 4.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import java.io.Serializable;
import java.lang.reflect.Array;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.LinkedList;
// Cette classe contient les informations des jours
// Cette classe n'est pas finie , il manque les methodes
public class Jour implements Serializable {
private ArrayList<Creneau> creneaux;
private LocalDate date;
private final Utilisateur utilisateur;
private int nbTachesAccomplies;
private boolean felicitations;
public Jour(LocalDate date,Utilisateur utilisateur) throws ExceptionDateInvalide{
if (date == null || date.isBefore(LocalDate.now())){
// Si la date est null , ou elle est avant la date actuelle , on lance une exception
throw new ExceptionDateInvalide("La date est invalide");
}
this.date = date;
this.utilisateur = utilisateur;
this.nbTachesAccomplies = 0;
this.felicitations = false;
this.creneaux = new ArrayList<Creneau>();
}
// -------------------------------------- Delimitation Setters/Getters --------------------------------------
public int getNbTachesAccomplies() {
return nbTachesAccomplies;
}
public void setNbTachesAccomplies(int nbTachesAccomplies) {
this.nbTachesAccomplies = nbTachesAccomplies;
}
public Utilisateur getUtilisateur() {
return utilisateur;
}
public ArrayList<Creneau> getCreneaux() {
return creneaux;
}
public void setCreneaux(ArrayList<Creneau> creneaux) {
this.creneaux = creneaux;
}
public LocalDate getDate() {
return date;
}
public void setDate(LocalDate date) {
this.date = date;
}
public void ajouterCreneau(Creneau creneau) {
this.creneaux.add(creneau);
}
public void suppCreneau(Creneau creneau) {
this.creneaux.remove(creneau);
}
// -------------------------------------- Delimitation Setters/Getters --------------------------------------
// Incremente le nombre de taches accomplies
public void incTachesAccomplies(){
nbTachesAccomplies++;
if (nbTachesAccomplies == utilisateur.getNbMinimalTachesParJour() && !felicitations){
felicitations = true;
// TODO : utilisateur.feliciter();
} // Si il y'a eu assez de taches accomplies et que l'utilisateur , on le félicite (utile pour l'attribution des badges)
}
public void ajouterTache(Tache tache){
//TODO
}
public void ajouterCreneaux(Creneau creneau){
creneaux.add(creneau);
}
public void ajouterCreneau(LocalTime debut, LocalTime fin) throws ExceptionCollisionHorairesCreneau,ExceptionDateInvalide,ExceptionDureeInvalide{
// Permets d'ajouter un creneau a un jour.
// On verifie si la date est valide
if(date == null || date.isBefore(LocalDate.now())){
throw new ExceptionDateInvalide("La date est invalide");
}
for (Creneau creneau : creneaux) {
// On teste si il y'a collision avec un creneau existant , si oui , on renvoies une exception CollisionHorairesCreneau
if (timeCollision(creneau.getDebut(),creneau.getFin(),debut) || timeCollision(creneau.getDebut(),creneau.getFin(),fin) || creneau.getDebut().compareTo(debut) == 0){
throw new ExceptionCollisionHorairesCreneau("Il y'a une collision horaire avec un creneau existant");
}
}
// On peux donc creer ce creneau.
Creneau creneau = new Creneau(debut, fin, this, utilisateur);
creneaux.add(creneau);
}
public void afficher(){
System.out.println("---------------- Affichage journée ----------------");
System.out.println("Date : " + date);
System.out.println("Nombre de taches accomplies : " + nbTachesAccomplies);
for (Creneau creneau : creneaux) {
creneau.afficher();
}
System.out.println("---------------------------------------------------");
}
public static boolean timeCollision(LocalTime startTime, LocalTime endTime, LocalTime currentTime) {
// Cette fonction retourne vrai si currentTime est compris entre startTime et endTime
return currentTime.isAfter(startTime) && currentTime.isBefore(endTime);
}
}