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

fr.umontp.edt.EmploiDuTempsProxy 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.time.LocalDate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.IdentityHashMap;

/**
 * EmploiDuTempsProxy est la classe représentant le proxy de la class
 * {@link EmploiDuTemps}.
 * 

* L'instance d'EmploiDuTempsProxy est caractérisé par une liste de cache. * * @author emerick-biron * @author MathieuSoysal * @version 1.4.0 * @see EmploiDuTemps * @see InterfaceEmploiDuTemps */ public final class EmploiDuTempsProxy implements InterfaceEmploiDuTemps { private static EmploiDuTempsProxy singleton = null; @SuppressWarnings("deprecation") private EmploiDuTemps emploiDuTemps; private EnumMap cacheGroupe; private IdentityHashMap cacheProfesseur; private HashMap cacheDate; private HashMap cachePlanningFiltreur; @SuppressWarnings("deprecation") private EmploiDuTempsProxy() { emploiDuTemps = EmploiDuTemps.getInstance(); actualiser(); } /** * Permet d'actualiser l'emploi du temps avec celui de l'ent. */ @SuppressWarnings("deprecation") @Override public void actualiser() { cacheDate = new HashMap<>(); cacheProfesseur = new IdentityHashMap<>(); cacheGroupe = new EnumMap<>(Groupe.class); cachePlanningFiltreur = new HashMap<>(); emploiDuTemps.actualiser(); } /** * @return l'instance de {@link EmploiDuTempsProxy}. * */ public static EmploiDuTempsProxy getInstance() { EmploiDuTempsProxy localInstance = singleton; if (localInstance == null) { synchronized (EmploiDuTempsProxy.class) { localInstance = singleton; if (localInstance == null) { localInstance = new EmploiDuTempsProxy(); } } } return localInstance; } /** * Permet d'obtenir le planning correspondant à une date ou plusieurs dates. * * @param dates dates pour lesquelles on veut obtenir le planning. * @return {@code Planning} correspondant * @see Planning * @since 1.3.0 */ @SuppressWarnings("deprecation") @Override public Planning getPlanningOf(LocalDate... dates) { Collection cours = new ArrayList<>(); for (LocalDate date : dates) cours.addAll(cacheDate.computeIfAbsent(date, k -> emploiDuTemps.getPlanningOf(k)).getCours()); return new Planning(cours); } /** * Permet d'obtenir le planning correspondant à une date et un groupe * * @param date date dont on veut obtenir le planning * @param groupe groupe dont on veut obtenir le planning * @return planning correspondant * @since 1.0 * * @see Groupe * @see Planning */ @Override public Planning getPlanningOf(LocalDate date, Groupe groupe) { return getPlanningOf(PlanningFiltreur.filtrer().par(date).par(groupe)); } /** * Permet d'obtenir le planning correspondant à un groupe ou plusieurs groupe. * * @param groupes groupes dont on veut obtenir le planning * @return planning correspondant * @see Groupe * @see Planning * @since 1.2.0 */ @SuppressWarnings("deprecation") @Override public Planning getPlanningOf(Groupe... groupes) { Collection cours = new ArrayList<>(); for (Groupe groupe : groupes) cours.addAll(cacheGroupe.computeIfAbsent(groupe, k -> emploiDuTemps.getPlanningOf(k)).getCours()); return new Planning(cours); } /** * Permet d'obtenir le planning correspondant à un professeur ou plusieurs * professeurs * * @param professeurs professeurs dont on veut obtenir le planning * @return planning correspondant * @since 1.1 * * @see Professeur * @see Planning */ @SuppressWarnings("deprecation") @Override public Planning getPlanningOf(Professeur... professeurs) { Collection cours = new ArrayList<>(); for (Professeur professeur : professeurs) cours.addAll(cacheProfesseur.computeIfAbsent(professeur, k -> emploiDuTemps.getPlanningOf(k)).getCours()); return new Planning(cours); } /** * Permet d'obtenir le planning correspondant au {@link PlanningFiltreur} * * @param planningFiltreur filtrant le planning * @return planning correspondant au filtre * @since 1.4.0 * * @see PlanningFiltreur * @see Planning */ @SuppressWarnings("deprecation") @Override public Planning getPlanningOf(PlanningFiltreur planningFiltreur) { return cachePlanningFiltreur.computeIfAbsent(planningFiltreur, k -> emploiDuTemps.getPlanningOf(planningFiltreur)); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy