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.