Package MNP
Class AbstractGroupeFactoryNP
- java.lang.Object
-
- MNP.AbstractGroupeFactoryNP
-
- All Implemented Interfaces:
AbstractGroupeFactory
public class AbstractGroupeFactoryNP extends java.lang.Object implements AbstractGroupeFactory
Usine abstraite gérant l'ensemble des groupes.
-
-
Constructor Summary
Constructors Constructor Description AbstractGroupeFactoryNP(int id, java.lang.String name, int min, int max)
Le constructeur fabrique le groupe promotion vide.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addToGroupe(Groupe g, Etudiant e)
permet d'ajouter un étudiant à un groupe.void
createGroupe(Groupe pere, java.lang.String name, int min, int max)
permet d'ajouter un groupe vide de type FREE comme sous-groupe d'un groupe donné.void
createPartition(Groupe pere, java.lang.String name, int n)
permet de créer une partition automatiquement sous un groupe donné.void
deleteGroupe(Groupe g)
permet de supprimer un groupe connu de l'usine abstraite qui ne contient pas de groupes.void
dropFromGroupe(Groupe g, Etudiant e)
permet d'enlever un étudiant d'un groupe.java.util.Set<Etudiant>
getEtudiants(java.lang.String nomEtu)
permet de retrouver un étudiant à partir d'un String.java.util.Set<Groupe>
getGroupesOfEtudiant(Etudiant etu)
permet de retrouver les groupes d'un étudiant.Groupe
getPromotion()
permet de récupérer le Groupe qui contient les étudiants de toute la promotionjava.lang.Boolean
knows(Groupe g)
Test plutôt optimiste.
-
-
-
Method Detail
-
knows
public java.lang.Boolean knows(Groupe g)
Test plutôt optimiste. Si la clé est identique alors on fait comme si c'était le bon groupe.- Specified by:
knows
in interfaceAbstractGroupeFactory
-
getPromotion
public Groupe getPromotion()
permet de récupérer le Groupe qui contient les étudiants de toute la promotion- Specified by:
getPromotion
in interfaceAbstractGroupeFactory
- Returns:
- la promo.
-
deleteGroupe
public void deleteGroupe(Groupe g)
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.- Specified by:
deleteGroupe
in interfaceAbstractGroupeFactory
- Throws:
java.lang.NullPointerException
- si un argument est nulljava.lang.IllegalStateException
- si le groupe contient des groupesjava.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)
-
createGroupe
public void createGroupe(Groupe pere, java.lang.String name, int min, int max)
permet d'ajouter un groupe vide de type FREE comme sous-groupe d'un groupe donné.- Specified by:
createGroupe
in interfaceAbstractGroupeFactory
- Parameters:
pere
- le groupe père du groupe à créername
- le nom du groupe à créermin
- ,max bornes indicatives sur la taille du groupe à créer- Throws:
java.lang.NullPointerException
- si un argument est nulljava.lang.IllegalArgumentException
- si le groupe pere est de type PARTITION ou si il n'y a pas 0 < min <= max
-
createPartition
public void createPartition(Groupe pere, java.lang.String name, int n)
permet de créer une partition automatiquement sous un groupe donné.- Specified by:
createPartition
in interfaceAbstractGroupeFactory
- Parameters:
pere
- le groupe père du groupe à partitionnername
- le nom des groupe à créer (on ajoute à la suite un numéro de 1 à n pour distinguer chaque groupe formant la partition)n
- le nombre de partitions- Throws:
java.lang.NullPointerException
- si un argument est nulljava.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.
-
addToGroupe
public void addToGroupe(Groupe g, Etudiant e)
permet d'ajouter un étudiant à un groupe.- Specified by:
addToGroupe
in interfaceAbstractGroupeFactory
- Parameters:
g
- le groupe dans lequel il faut ajouter l'étudiante
- l'étudiant à ajouter- Throws:
java.lang.NullPointerException
- si un argument est nulljava.lang.IllegalArgumentException
- la factory ne connaît pas gjava.lang.IllegalStateException
- le père de g ne contient pas e
-
dropFromGroupe
public void dropFromGroupe(Groupe g, Etudiant e)
permet d'enlever un étudiant d'un groupe.- Specified by:
dropFromGroupe
in interfaceAbstractGroupeFactory
- Parameters:
g
- le groupe dans lequel il faut enlever l'étudiante
- l'étudiant à enlever- Throws:
java.lang.NullPointerException
- si un argument est nulljava.lang.IllegalStateException
- g ne contient pas ejava.lang.IllegalArgumentException
- la factory ne connaît pas g
-
getEtudiants
public java.util.Set<Etudiant> getEtudiants(java.lang.String nomEtu)
permet de retrouver un étudiant à partir d'un String. NB. dans une version simple il doit s'agir du nom exact. dans une version un peu plus complexe, il s'agit des premières lettres du nom dans une version avancée, on peut autoriser une expression régulière plus ou moins complexe qui est générée si la première recherche n'a pas renvoyé de candidat.- Specified by:
getEtudiants
in interfaceAbstractGroupeFactory
- Parameters:
String
- nomEtu le nom approximmatif de l'étudiant- Returns:
- Set
l'ensemble des étudiants connus de la factory ayant un nom "proche" de ce string au sens de la remarque ci-dessus. - Throws:
java.lang.NullPointerException
- si le String est null.
-
getGroupesOfEtudiant
public java.util.Set<Groupe> getGroupesOfEtudiant(Etudiant etu)
permet de retrouver les groupes d'un étudiant.- Specified by:
getGroupesOfEtudiant
in interfaceAbstractGroupeFactory
- Parameters:
Etu
- un étudiant- Returns:
- Etudiant l'étudiant connu de la factory ayant cet identifiant
- Throws:
java.lang.NullPointerException
- si le String est null.
-
-