94 lines
3.7 KiB
Java
94 lines
3.7 KiB
Java
package fr.iutfbleau.projetIHM2022FI2.API;
|
|
import java.util.*;
|
|
/**
|
|
* Usine abstraite gérant l'ensemble des groupes.
|
|
*
|
|
*/
|
|
|
|
public interface AbstractGroupeFactory {
|
|
|
|
/**
|
|
* permet de récupérer le Groupe qui contient les étudiants de toute la promotion
|
|
* @return la promo.
|
|
*/
|
|
public Groupe getPromotion();
|
|
|
|
/**
|
|
* permet de supprimer un groupe connu de l'usine abstraite qui ne contient pas de groupes.
|
|
* Pour détruire un groupe connu qui en contient d'autres il faut le faire récursivement.
|
|
*
|
|
* @throws java.lang.NullPointerException si un argument est null
|
|
* @throws java.lang.IllegalStateException si le groupe contient des groupes
|
|
* @throws java.lang.IllegalArgumentException si le groupe n'est pas connu de l'usine abstraite ou bien si le groupe est celui de toute la promotion (renvoyé par getPromotion)
|
|
*/
|
|
public void deleteGroupe(Groupe g);
|
|
|
|
/**
|
|
* permet d'ajouter un groupe vide de type FREE comme sous-groupe d'un groupe donné.
|
|
* @param pere le groupe père du groupe à créer
|
|
* @param name le nom du groupe à créer
|
|
* @param min,max bornes indicatives sur la taille du groupe à créer
|
|
*
|
|
* @throws java.lang.NullPointerException si un argument est null
|
|
* @throws java.lang.IllegalArgumentException si le groupe pere est de type PARTITION
|
|
* ou si il n'y a pas 0 < min <= max
|
|
*/
|
|
public void createGroupe(Groupe pere, String name, int min, int max);
|
|
|
|
/**
|
|
* permet de créer une partition automatiquement sous un groupe donné.
|
|
*
|
|
* @param pere le groupe père du groupe à partitionner
|
|
* @param name le nom des groupe à créer (on ajoutera à la suite un numéro ou une lettre pour distinguer chaque groupe)
|
|
* @param n le nombre de partitions
|
|
* @throws java.lang.NullPointerException si un argument est null
|
|
* @throws java.lang.IllegalArgumentException si le groupe pere est de type PARTITION
|
|
* ou n négatif ou nul
|
|
*
|
|
* NB. doit créer une "copie" de pere
|
|
* sous pere de type Partition et ajouter sous ce groupe, n groupes de type "FREE".
|
|
* les valeurs min et max de ces n groupes sont
|
|
* min = 0 et
|
|
* max = partie entière de N/n plus 1, où N est le nombre max du groupe pere.
|
|
*/
|
|
public void createPartition(Groupe pere, String name, int n);
|
|
|
|
/**
|
|
* permet d'ajouter un étudiant à un groupe.
|
|
*
|
|
* @param g le groupe dans lequel il faut ajouter l'étudiant
|
|
* @param e l'étudiant à ajouter
|
|
*
|
|
* @throws java.lang.NullPointerException si un argument est null
|
|
* @throws java.lang.IllegalArgumentException la factory ne connaît pas g
|
|
* @throws java.lang.IllegalStateException le père de g ne contient pas e
|
|
*/
|
|
public void addToGroupe(Groupe g, Etudiant e);
|
|
|
|
/**
|
|
* permet d'enlever un étudiant d'un groupe.
|
|
*
|
|
* @param g le groupe dans lequel il faut enlever l'étudiant
|
|
* @param e l'étudiant à enlever
|
|
*
|
|
* @throws java.lang.NullPointerException si un argument est null
|
|
* @throws java.lang.IllegalStateException g ne contient pas e
|
|
* @throws java.lang.IllegalArgumentException la factory ne connaît pas g
|
|
*/
|
|
public void dropFromGroupe(Groupe g, Etudiant e);
|
|
|
|
/**
|
|
* permet de retrouver un étudiant à partir de son identifiant
|
|
*
|
|
* @param id l'identifiant de l'étudiant
|
|
* @return Etudiant l'étudiant connu de la factory ayant cet identifiant
|
|
*
|
|
* @throws java.lang.IllegalStateException la factory ne connaît pas l'étudiant.
|
|
*/
|
|
public Etudiant getEtudiantFromId(int idEtu);
|
|
|
|
|
|
|
|
|
|
}
|