Package MNP

# Class AbstractChangementFactoryNP

java.lang.Object
MNP.AbstractChangementFactoryNP

All Implemented Interfaces:
  `AbstractChangementFactory`

public class AbstractChangementFactoryNP extends Object implements AbstractChangementFactory
Usine abstraite gérant l'ensemble des changements.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractChangementFactoryNP(AbstractGroupeFactory agf)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `applyChangement(Changement c)`
  permet de mettre en oeuvre un changement connu de l'usine abstraite.
  `void`
  `createChangement(Groupe A, Etudiant e, Groupe B)`
  permet d'ajouter un nouveau changement.
  `void`
  `deleteChangement(Changement c)`
  permet de supprimer un changement connu de l'usine abstraite.
  `Set<Changement>`
  `getAllChangements()`
  permet de récupérer les changements
  `AbstractGroupeFactory`
  `getGroupeFactory()`
  permet de récupérer l'usine abstraite pour les groupes qui fonctionne en tandem avec cette usine abstraite

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

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

- ## Constructor Details

  - ### AbstractChangementFactoryNP

    public AbstractChangementFactoryNP(AbstractGroupeFactory agf)

- ## Method Details

  - ### getGroupeFactory

    public AbstractGroupeFactory getGroupeFactory()
    permet de récupérer l'usine abstraite pour les groupes qui fonctionne en tandem avec cette usine abstraite
    Specified by:
      `getGroupeFactory` in interface `AbstractChangementFactory`
    Returns:
      cette usine abstraite pour les groupes

  - ### getAllChangements

    public Set<Changement> getAllChangements()
    permet de récupérer les changements
    Specified by:
      `getAllChangements` in interface `AbstractChangementFactory`
    Returns:
      l'ensemble de tous les changements en attente

  - ### applyChangement

    public void applyChangement(Changement c)
    permet de mettre en oeuvre un changement connu de l'usine abstraite.
    Specified by:
      `applyChangement` in interface `AbstractChangementFactory`
    Throws:
      `NullPointerException` - si un argument est null
      `IllegalStateException` - si le changement n'a pas de sens en l'état actuel (e.g. étudiant pas dans le groupe de départ a, groupe b inconnu, groupe a inconnu, etc).
      `IllegalArgumentException` - si inconnu de l'usine abstraite

  - ### deleteChangement

    public void deleteChangement(Changement c)
    permet de supprimer un changement connu de l'usine abstraite.
    Specified by:
      `deleteChangement` in interface `AbstractChangementFactory`
    Throws:
      `NullPointerException` - si un argument est null
      `IllegalArgumentException` - si inconnu de l'usine abstraite

  - ### createChangement

    public void createChangement(Groupe A, Etudiant e, Groupe B)
    permet d'ajouter un nouveau changement.
    Specified by:
      `createChangement` in interface `AbstractChangementFactory`
    Parameters:
      `A` - groupe actuel
      `B` - groupe demandé
      `e` - étudiant concerné par le changement
    Throws:
      `NullPointerException` - si un argument est null
      `IllegalArgumentException` - si les groupes ou l'étudiant ne sont pas connus de la factory partenaire, ou e n'appartient pas à A ou A et B ne sont pas frères dans l'arbre des groupes.