Package MNP

# Class AbstractGroupeFactoryNP

java.lang.Object
MNP.AbstractGroupeFactoryNP

All Implemented Interfaces:
  `AbstractGroupeFactory`

public class AbstractGroupeFactoryNP extends Object implements AbstractGroupeFactory
Usine abstraite gérant l'ensemble des groupes.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractGroupeFactoryNP(int id, String name, int min, int max)`
  Le constructeur fabrique le groupe promotion vide.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addToGroupe(Groupe g, Etudiant e)`
  permet d'ajouter un étudiant à un groupe.
  `void`
  `createGroupe(Groupe pere, 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, 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.
  `Set<Etudiant>`
  `getEtudiants(String nomEtu)`
  permet de retrouver un étudiant à partir d'un String.
  `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 promotion
  `Boolean`
  `knows(Groupe g)`
  Test plutôt optimiste.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### AbstractGroupeFactoryNP

    public AbstractGroupeFactoryNP(int id, String name, int min, int max)
    Le constructeur fabrique le groupe promotion vide. Il faut ensuite y ajouter les étudiants.

- ## Method Details

  - ### knows

    public 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 interface `AbstractGroupeFactory`

  - ### getPromotion

    public Groupe getPromotion()
    permet de récupérer le Groupe qui contient les étudiants de toute la promotion
    Specified by:
      `getPromotion` in interface `AbstractGroupeFactory`
    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 interface `AbstractGroupeFactory`
    Throws:
      `NullPointerException` - si un argument est null
      `IllegalStateException` - si le groupe contient des groupes
      `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, 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 interface `AbstractGroupeFactory`
    Parameters:
      `pere` - le groupe père du groupe à créer
      `name` - le nom du groupe à créer
      `min` - ,max bornes indicatives sur la taille du groupe à créer
    Throws:
      `NullPointerException` - si un argument est null
      `IllegalArgumentException` - si le groupe pere est de type PARTITION ou si il n'y a pas 0 invalid input: '<' min invalid input: '<'= max

  - ### createPartition

    public void createPartition(Groupe pere, String name, int n)
    permet de créer une partition automatiquement sous un groupe donné.
    Specified by:
      `createPartition` in interface `AbstractGroupeFactory`
    Parameters:
      `pere` - le groupe père du groupe à partitionner
      `name` - 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:
      `NullPointerException` - si un argument est null
      `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 interface `AbstractGroupeFactory`
    Parameters:
      `g` - le groupe dans lequel il faut ajouter l'étudiant
      `e` - l'étudiant à ajouter
    Throws:
      `NullPointerException` - si un argument est null
      `IllegalArgumentException` - la factory ne connaît pas g
      `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 interface `AbstractGroupeFactory`
    Parameters:
      `g` - le groupe dans lequel il faut enlever l'étudiant
      `e` - l'étudiant à enlever
    Throws:
      `NullPointerException` - si un argument est null
      `IllegalStateException` - g ne contient pas e
      `IllegalArgumentException` - la factory ne connaît pas g

  - ### getEtudiants

    public Set<Etudiant> getEtudiants(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 interface `AbstractGroupeFactory`
    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:
      `NullPointerException` - si le String est null.

  - ### getGroupesOfEtudiant

    public Set<Groupe> getGroupesOfEtudiant(Etudiant etu)
    permet de retrouver les groupes d'un étudiant.
    Specified by:
      `getGroupesOfEtudiant` in interface `AbstractGroupeFactory`
    Parameters:
      `Etu` - un étudiant
    Returns:
      Etudiant l'étudiant connu de la factory ayant cet identifiant
    Throws:
      `NullPointerException` - si le String est null.