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

fr.umontp.edt.PlanningFiltreur 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 static java.util.Comparator.comparing;

import java.time.LocalDate;
import java.util.Arrays;
import java.util.List;

/**
 * PlanningFiltreur est la classe représentant un filtrage pour un
 * Planning.
 * 

* Une instance du planning est peut être caractérisé par les informations * suivantes : *

*
    *
  • Une ou plusieurs date.
  • *
  • Un ou plusieurs groupe.
  • *
  • Un ou plusieurs professeurs.
  • *
*

* Par défauts toutes ces attributs sont à {@code null}. *

* * @see Planning * * @author MathieuSoysal * @version 1.2.0 */ public class PlanningFiltreur { private LocalDate[] dates; private Groupe[] groupes; private Professeur[] professeurs; private PlanningFiltreur() { dates = null; groupes = null; professeurs = null; } /** * Instanciation de PlanningFiltreur. *

* A la l'instanciation d'un objet PlanningFiltreur, toutes les variables de * filtrage sont par défaut à {@code null}. *

* * @return {@code PlanningFiltreur} instancié * * @since 1.1.0 * * @see PlanningFiltreur#par(LocalDate...) */ public static PlanningFiltreur filtrer() { return new PlanningFiltreur(); } /** * Ajoute un filtrage par un ou plusieurs date. * * @param dates qui doivent filtrer le planning * * @return {@code PlanningFiltreur} résultant * * @see LocalDate */ public PlanningFiltreur par(LocalDate... dates) { this.dates = dates; return this; } /** * Ajoute un filtrage par un ou plusieurs groupe. * * @return {@code PlanningFiltreur} résultant * * @param groupes qui doivent filtrer le planning * * @see Groupe */ public PlanningFiltreur par(Groupe... groupes) { this.groupes = groupes; return this; } /** * Ajoute un filtrage par un ou plusieurs Professeur. * * @return {@code PlanningFiltreur} résultant * * @param professeurs qui doivent filtrer le planning * * @see Professeur */ public PlanningFiltreur par(Professeur... professeurs) { this.professeurs = professeurs; return this; } /** * @return {@code LocalDate[]} tableau des dates * * @see LocalDate */ public LocalDate[] getDates() { return dates; } /** * @return {@code LocalDate[]} tableau des groupes * * @see Groupe */ public Groupe[] getGroupes() { return groupes; } /** * @return {@code LocalDate[]} tableau des professeurs * * @see Professeur */ public Professeur[] getProfesseurs() { return professeurs; } /* * (non-Javadoc) * * @see java.lang.Object#hashCode() */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + Arrays.hashCode(dates); if (groupes != null) { List lGroupes = Arrays.asList(groupes); lGroupes.sort(comparing(Groupe::getIntitule)); result = prime * result + lGroupes.hashCode(); } else result = prime * result + Arrays.hashCode(groupes); if (professeurs != null) { List lProfesseurs = Arrays.asList(professeurs); lProfesseurs.sort(comparing(Professeur::getDenomination)); result = prime * result + lProfesseurs.hashCode(); } else result = prime * result + Arrays.hashCode(professeurs); 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; PlanningFiltreur other = (PlanningFiltreur) obj; if (!Arrays.equals(dates, other.dates)) return false; if (!memeGroupes(other.groupes)) return false; if (!Arrays.equals(professeurs, other.professeurs)) { if (professeurs.length == other.professeurs.length) { List listProfesseurs = Arrays.asList(professeurs); List listOtherProflistProfesseurs = Arrays.asList(other.professeurs); if (!(listProfesseurs.containsAll(listOtherProflistProfesseurs) && listOtherProflistProfesseurs.containsAll(listProfesseurs))) return false; } else return false; } return true; } private boolean memeGroupes(Groupe[] oGroupes) { if (!Arrays.equals(groupes, oGroupes)) { if (groupes.length == oGroupes.length) { List listGroupes = Arrays.asList(groupes); List listOtherGroupes = Arrays.asList(oGroupes); if (!(listGroupes.containsAll(listOtherGroupes) && listOtherGroupes.containsAll(listGroupes))) return false; } else return false; } return true; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy