44import java .time .Duration ;
55import java .time .LocalDate ;
66import java .time .LocalTime ;
7- import java .util .ArrayList ;
87import java .util .Arrays ;
9- import java .util .List ;
108import java .util .Locale ;
11- import java .util .regex .Matcher ;
12- import java .util .regex .Pattern ;
139
1410import net .fortuna .ical4j .model .Component ;
1511import net .fortuna .ical4j .model .DateTime ;
3329 *
3430 * @author emerick-biron
3531 * @author MathieuSoysal
36- * @version 1.0 .0
32+ * @version 1.1 .0
3733 */
3834public class Cours implements Comparable <Cours > {
3935 private LocalDate date ;
40- private String [] prof ;
36+ private Professeur [] professeurs ;
4137 private LocalTime heureDebut ;
4238 private LocalTime heureFin ;
4339 private String lieu ;
4440 private int duree ;
4541 private Groupe [] groupes ;
4642 private String intitule ;
4743
48- public Cours (LocalDate date , String [] prof , LocalTime heureDebut , LocalTime heureFin , String lieu , Groupe [] groupe ,
49- String intitule ) {
44+ public Cours (LocalDate date , Professeur [] professeurs , LocalTime heureDebut , LocalTime heureFin , String lieu ,
45+ Groupe [] groupe , String intitule ) {
5046 this .date = date ;
51- this .prof = prof ;
47+ this .professeurs = professeurs ;
5248 this .heureDebut = heureDebut ;
5349 this .heureFin = heureFin ;
5450 this .lieu = lieu ;
@@ -90,27 +86,27 @@ public Cours(LocalDate date, String[] prof, LocalTime heureDebut, LocalTime heur
9086 heureFin = LocalTime .of (dateFin .getHours (), dateFin .getMinutes ());
9187 lieu = location .getValue ();
9288 intitule = summary .getValue ();
93- prof = getProfFromDesc (description .getValue ());
89+ professeurs = RepertoireProfesseur . getProfesseurDepuisDescriptionEtAjouterSiNonPresent (description .getValue ());
9490 groupes = Groupe .getGroupeDepuisTexte (description .getValue ());
9591 duree = (int ) Duration .between (heureDebut , heureFin ).toMinutes ();
9692 }
9793
9894 /**
99- * Permet d'obtenir le(s) professeur(s) d'un VENVENT a partir de la description
100- * de ce dernier
101- *
102- * @param desc description du VENVENT
103- * @return {@code String[]} le(s) professeur(s) du present dans la description
104- * @since 1.0
95+ * Permet de vérfier si un professeur est assigné à ce cours.
96+ *
97+ * @param professeur dont on veut vérier s'il est assigné au cour.
98+ * @return {@code true} si le professeur est assigne à ce cours, sinon
99+ * {@code false}.
100+ *
101+ * @see Cours#professeurs
102+ *
103+ * @since 1.1.0
105104 */
106- static String [] getProfFromDesc (String desc ) {
107- String regex = "(?<=\\ n)[- A-Z]* [- A-Z]*(?=\\ n)" ;
108- Matcher m = Pattern .compile (regex ).matcher (desc );
109- final List <String > matches = new ArrayList <>();
110- while (m .find ()) {
111- matches .add (m .group (0 ));
112- }
113- return matches .toArray (new String [matches .size ()]);
105+ public boolean estEnseignePar (Professeur professeur ) {
106+ for (Professeur professeurAssigne : professeurs )
107+ if (professeurAssigne == professeur )
108+ return true ;
109+ return false ;
114110 }
115111
116112 @ Override
@@ -124,12 +120,16 @@ public int compareTo(Cours o) {
124120 result = Integer .compare (duree , o .duree );
125121 if (result != 0 )
126122 return result ;
127- for (Groupe groupe : groupes )
128- for (Groupe autreGroupe : o .groupes ) {
129- result = groupe .getIntitule ().compareTo (autreGroupe .getIntitule ());
123+ result = Integer .compare (groupes .length , o .groupes .length );
124+ if (result != 0 )
125+ return result ;
126+ for (int i = 0 ; i < groupes .length ; i ++) {
127+ if (groupes [i ] != o .groupes [i ]) {
128+ result = groupes [i ].getIntitule ().compareTo (o .groupes [i ].getIntitule ());
130129 if (result != 0 )
131130 return result ;
132131 }
132+ }
133133 return intitule .compareTo (o .intitule );
134134 }
135135
@@ -143,8 +143,8 @@ public LocalDate getDate() {
143143 /**
144144 * @return {@code String[]} les professeurs organisant le cours
145145 */
146- public String [] getProf () {
147- return prof ;
146+ public Professeur [] getProfesseurs () {
147+ return professeurs ;
148148 }
149149
150150 /**
@@ -194,8 +194,8 @@ public String getIntitule() {
194194 @ Override
195195 public String toString () {
196196 return intitule .toUpperCase (Locale .ROOT ) + " :\n Date : " + date + "\n Commence à " + heureDebut + ", finit à "
197- + heureFin + "\n Enseignant :" + Arrays .toString (prof ) + " \n Localisation : " + lieu + " \n Groupe : "
198- + Arrays .toString (groupes );
197+ + heureFin + "\n Enseignant :" + Arrays .toString (professeurs ) + " \n Localisation : " + lieu
198+ + " \n Groupe : " + Arrays .toString (groupes );
199199 }
200200
201201 /*
0 commit comments