All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fr.umontp.edt.Cours Maven / Gradle / Ivy

Go to download

Package Java permettant de récupérer l'emploi du temps des cours de l'IUT de Montpellier.

There is a newer version: 1.3.1
Show newest version
package fr.umontp.edt;

import java.text.ParseException;
import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import net.fortuna.ical4j.model.Component;
import net.fortuna.ical4j.model.DateTime;
import net.fortuna.ical4j.model.Property;

/**
 * Cours est la classe représentant un cours au sein du planning.
 * 

* Un objet Cours est caractérisé par les informations suivantes : *

    *
  • Une date.
  • *
  • D'une liste de professeurs.
  • *
  • D'une heure de début.
  • *
  • D'une heure de fin.
  • *
  • D'une durée.
  • *
  • D'une liste de {@link Groupe}.
  • *
  • D'un intitule.
  • *
* * @see Comparable * * @author emerick-biron * @author MathieuSoysal * @version 1.0.0 */ public class Cours implements Comparable { private LocalDate date; private String[] prof; private LocalTime heureDebut; private LocalTime heureFin; private String lieu; private int duree; private Groupe[] groupes; private String intitule; public Cours(LocalDate date, String[] prof, LocalTime heureDebut, LocalTime heureFin, String lieu, Groupe[] groupe, String intitule) { this.date = date; this.prof = prof; this.heureDebut = heureDebut; this.heureFin = heureFin; this.lieu = lieu; this.groupes = groupe; this.intitule = intitule; duree = (int) Duration.between(heureDebut, heureFin).toMinutes(); } /** * Constructeur Cours. *

* Le constructeur est chargé de trouver toutes attributs de class {@link Cours} * au sein du {@link Component}. *

* * @param vEvent l'évenement du calendrier qui représente un cours * * @see Component */ @SuppressWarnings("deprecation") Cours(Component vEvent) { Property summary = vEvent.getProperty(Property.SUMMARY); Property description = vEvent.getProperty(Property.DESCRIPTION); Property dtStart = vEvent.getProperty(Property.DTSTART); Property dtEnd = vEvent.getProperty(Property.DTEND); Property location = vEvent.getProperty(Property.LOCATION); DateTime dateDebut = null; DateTime dateFin = null; try { dateDebut = new DateTime(dtStart.getValue()); dateFin = new DateTime(dtEnd.getValue()); } catch (ParseException e) { e.printStackTrace(); } date = LocalDate.of(dateDebut.getYear() + 1900, dateDebut.getMonth() + 1, dateDebut.getDate()); heureDebut = LocalTime.of(dateDebut.getHours(), dateDebut.getMinutes()); heureFin = LocalTime.of(dateFin.getHours(), dateFin.getMinutes()); lieu = location.getValue(); intitule = summary.getValue(); prof = getProfFromDesc(description.getValue()); groupes = Groupe.getGroupeDepuisTexte(description.getValue()); duree = (int) Duration.between(heureDebut, heureFin).toMinutes(); } /** * Permet d'obtenir le(s) professeur(s) d'un VENVENT a partir de la description * de ce dernier * * @param desc description du VENVENT * @return {@code String[]} le(s) professeur(s) du present dans la description * @since 1.0 */ static String[] getProfFromDesc(String desc) { String regex = "(?<=\\n)[- A-Z]* [- A-Z]*(?=\\n)"; Matcher m = Pattern.compile(regex).matcher(desc); final List matches = new ArrayList<>(); while (m.find()) { matches.add(m.group(0)); } return matches.toArray(new String[matches.size()]); } @Override public int compareTo(Cours o) { int result = date.compareTo(o.date); if (result != 0) return result; result = heureDebut.compareTo(o.heureDebut); if (result != 0) return result; result = Integer.compare(duree, o.duree); if (result != 0) return result; for (Groupe groupe : groupes) for (Groupe autreGroupe : o.groupes) { result = groupe.getIntitule().compareTo(autreGroupe.getIntitule()); if (result != 0) return result; } return intitule.compareTo(o.intitule); } /** * @return {@code LocalDate} la date de début du cours */ public LocalDate getDate() { return date; } /** * @return {@code String[]} les professeurs organisant le cours */ public String[] getProf() { return prof; } /** * @return {@code LocalTime} l'heure de début du cours */ public LocalTime getHeureDebut() { return heureDebut; } /** * @return {@code LocalTime} l'heure de fin du cours */ public LocalTime getHeureFin() { return heureFin; } /** * @return {@code String} le lieu */ public String getLieu() { return lieu; } /** * @return {@code int} la durée du cours */ public int getDuree() { return duree; } /** * @return {@code Groupe[]} les groupes assignés au cours * * @see Groupe */ public Groupe[] getGroupes() { return groupes; } /** * @return {@code String} l'intitulé du cours */ public String getIntitule() { return intitule; } @Override public String toString() { return intitule.toUpperCase(Locale.ROOT) + " :\n Date : " + date + "\n Commence à " + heureDebut + ", finit à " + heureFin + "\n Enseignant :" + Arrays.toString(prof) + " \n Localisation : " + lieu + " \n Groupe : " + Arrays.toString(groupes); } /* * (non-Javadoc) * * @see java.lang.Object#hashCode() */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((date == null) ? 0 : date.hashCode()); for (Groupe groupe : groupes) result = prime * result + ((groupe == null) ? 0 : groupe.hashCode()); result = prime * result + ((heureDebut == null) ? 0 : heureDebut.hashCode()); result = prime * result + ((lieu == null) ? 0 : lieu.hashCode()); return result; } /* * (non-Javadoc) * * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Cours other = (Cours) obj; if (date == null) { if (other.date != null) return false; } else if (!date.equals(other.date)) return false; for (Groupe groupe : groupes) for (Groupe oGroupe : other.groupes) if (groupe != oGroupe) return false; if (heureDebut == null) { if (other.heureDebut != null) return false; } else if (!heureDebut.equals(other.heureDebut)) return false; if (lieu == null) { if (other.lieu != null) return false; } else if (!lieu.equals(other.lieu)) return false; return true; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy