Ajout doc pour les classes pricipales
This commit is contained in:
parent
e98bf1436a
commit
db48814c4f
@ -15,6 +15,10 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
|||||||
// Si il y a beaucoup de changements c'est plus rapide que de parcourir toute une liste.
|
// Si il y a beaucoup de changements c'est plus rapide que de parcourir toute une liste.
|
||||||
private HashMap<Integer,Changement> brain;
|
private HashMap<Integer,Changement> brain;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructeur de l'usine à changement.
|
||||||
|
* @param agf l'usine à groupe travaillant en tandem avec cette usine.
|
||||||
|
*/
|
||||||
public AbstractChangementFactoryNP(AbstractGroupeFactory agf){
|
public AbstractChangementFactoryNP(AbstractGroupeFactory agf){
|
||||||
Objects.requireNonNull(agf,"On ne peut pas créer une usine à changement dont l'usine à groupe parternaire est null");
|
Objects.requireNonNull(agf,"On ne peut pas créer une usine à changement dont l'usine à groupe parternaire est null");
|
||||||
this.agf=agf;
|
this.agf=agf;
|
||||||
@ -44,6 +48,8 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* permet de mettre en oeuvre un changement connu de l'usine abstraite.
|
* permet de mettre en oeuvre un changement connu de l'usine abstraite.
|
||||||
|
*
|
||||||
|
* @param c le changement à mettre en oeuvre.
|
||||||
*
|
*
|
||||||
* @throws java.lang.NullPointerException si un argument est null
|
* @throws java.lang.NullPointerException si un argument est null
|
||||||
* @throws java.lang.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).
|
* @throws java.lang.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).
|
||||||
@ -70,7 +76,9 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* permet de supprimer un changement connu de l'usine abstraite.
|
* permet de supprimer un changement connu de l'usine abstraite.
|
||||||
*
|
*
|
||||||
|
* @param c le changement à supprimer.
|
||||||
|
*
|
||||||
* @throws java.lang.NullPointerException si un argument est null
|
* @throws java.lang.NullPointerException si un argument est null
|
||||||
* @throws java.lang.IllegalArgumentException si inconnu de l'usine abstraite
|
* @throws java.lang.IllegalArgumentException si inconnu de l'usine abstraite
|
||||||
*/
|
*/
|
||||||
@ -101,7 +109,18 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
|||||||
this.brain.put(Integer.valueOf(c.getId()),c);
|
this.brain.put(Integer.valueOf(c.getId()),c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* permet d'ajouter un nouveau changement.
|
||||||
|
*
|
||||||
|
* @param A groupe actuel
|
||||||
|
* @param B groupe demandé
|
||||||
|
* @param e étudiant concerné par le changement
|
||||||
|
* @param raison la raison du changement
|
||||||
|
*
|
||||||
|
* @throws java.lang.NullPointerException si un argument est null
|
||||||
|
* @throws java.lang.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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void createChangement(Groupe A, Etudiant e, Groupe B, String raison) {
|
public void createChangement(Groupe A, Etudiant e, Groupe B, String raison) {
|
||||||
Objects.requireNonNull(A,"Le groupe d'origine ne peut pas être null");
|
Objects.requireNonNull(A,"Le groupe d'origine ne peut pas être null");
|
||||||
|
@ -21,6 +21,11 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
/**
|
/**
|
||||||
* Le constructeur fabrique le groupe promotion vide.
|
* Le constructeur fabrique le groupe promotion vide.
|
||||||
* Il faut ensuite y ajouter les étudiants.
|
* Il faut ensuite y ajouter les étudiants.
|
||||||
|
*
|
||||||
|
* @param name le nom de la promotion
|
||||||
|
* @param min le nombre minimum d'étudiants dans la promotion
|
||||||
|
* @param max le nombre maximum d'étudiants dans la promotion
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
public AbstractGroupeFactoryNP(String name, int min, int max){
|
public AbstractGroupeFactoryNP(String name, int min, int max){
|
||||||
Objects.requireNonNull(name,"On ne peut pas créer une promotion dont le nom est null");
|
Objects.requireNonNull(name,"On ne peut pas créer une promotion dont le nom est null");
|
||||||
@ -31,6 +36,9 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Test plutôt optimiste. Si la clé est identique alors on fait comme si c'était le bon groupe.
|
* Test plutôt optimiste. Si la clé est identique alors on fait comme si c'était le bon groupe.
|
||||||
|
* @param g le groupe à tester
|
||||||
|
* @return true si le groupe est connu de l'usine abstraite
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
public Boolean knows(Groupe g){
|
public Boolean knows(Groupe g){
|
||||||
return this.brain.containsKey(Integer.valueOf(g.getId()));
|
return this.brain.containsKey(Integer.valueOf(g.getId()));
|
||||||
@ -50,6 +58,8 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
* permet de supprimer un groupe connu de l'usine abstraite qui ne contient pas de groupes.
|
* 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.
|
* Pour détruire un groupe connu qui en contient d'autres il faut le faire récursivement.
|
||||||
*
|
*
|
||||||
|
* @param g le groupe à supprimer
|
||||||
|
*
|
||||||
* @throws java.lang.NullPointerException si un argument est null
|
* @throws java.lang.NullPointerException si un argument est null
|
||||||
* @throws java.lang.IllegalStateException si le groupe contient des groupes
|
* @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)
|
* @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)
|
||||||
@ -234,12 +244,24 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
return liste;
|
return liste;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ajout a l'API pour changer facilement de nom de groupe
|
||||||
|
*
|
||||||
|
* @param g le groupe
|
||||||
|
* @param name le nom
|
||||||
|
* @return true si possible
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean changeNameGroupe(Groupe g, String name) {
|
public boolean changeNameGroupe(Groupe g, String name) {
|
||||||
g.setName(name);
|
g.setName(name);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* refresh le Groupe ainsi que ses etudiants
|
||||||
|
* @param g le groupe
|
||||||
|
* @return le groupe refresh/un parent si il a été refresh
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Groupe refreshALL(Groupe g) {
|
public Groupe refreshALL(Groupe g) {
|
||||||
return g;
|
return g;
|
||||||
|
@ -12,11 +12,22 @@ public class ChangementNP implements Changement {
|
|||||||
|
|
||||||
//auto-incrément des changements
|
//auto-incrément des changements
|
||||||
private static int nextId=0;
|
private static int nextId=0;
|
||||||
|
// id du changement
|
||||||
private int id;
|
private int id;
|
||||||
|
// groupe d'origine et d'arrivée
|
||||||
private Groupe a,b;
|
private Groupe a,b;
|
||||||
|
// étudiant concerné
|
||||||
private Etudiant e;
|
private Etudiant e;
|
||||||
|
// raison de la demande
|
||||||
private String raison;
|
private String raison;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructeur d'un changement.
|
||||||
|
* @param a le groupe de départ
|
||||||
|
* @param b le groupe d'arrivée
|
||||||
|
* @param e l'étudiant demandant le changement
|
||||||
|
* @param raison la raison du changement
|
||||||
|
*/
|
||||||
public ChangementNP(Groupe a, Etudiant e, Groupe b){
|
public ChangementNP(Groupe a, Etudiant e, Groupe b){
|
||||||
Objects.requireNonNull(a,"On ne peut pas créer un changement avec un groupe à quitter null");
|
Objects.requireNonNull(a,"On ne peut pas créer un changement avec un groupe à quitter null");
|
||||||
Objects.requireNonNull(b,"On ne peut pas créer un changement avec un groupe à rejoindre null");
|
Objects.requireNonNull(b,"On ne peut pas créer un changement avec un groupe à rejoindre null");
|
||||||
@ -28,6 +39,14 @@ public class ChangementNP implements Changement {
|
|||||||
this.e=e;
|
this.e=e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructeur d'un changement.
|
||||||
|
* @param a le groupe de départ
|
||||||
|
* @param b le groupe d'arrivée
|
||||||
|
* @param e l'étudiant demandant le changement
|
||||||
|
* @param raison la raison du changement
|
||||||
|
*
|
||||||
|
*/
|
||||||
public ChangementNP(Groupe a, Etudiant e, Groupe b, String raison){
|
public ChangementNP(Groupe a, Etudiant e, Groupe b, String raison){
|
||||||
Objects.requireNonNull(a,"On ne peut pas créer un changement avec un groupe à quitter null");
|
Objects.requireNonNull(a,"On ne peut pas créer un changement avec un groupe à quitter null");
|
||||||
Objects.requireNonNull(b,"On ne peut pas créer un changement avec un groupe à rejoindre null");
|
Objects.requireNonNull(b,"On ne peut pas créer un changement avec un groupe à rejoindre null");
|
||||||
@ -70,7 +89,10 @@ public class ChangementNP implements Changement {
|
|||||||
public Etudiant getEtu(){
|
public Etudiant getEtu(){
|
||||||
return this.e;
|
return this.e;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* permet de récupérer la raison du changement
|
||||||
|
* @return la raison du changement
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getRaison() {
|
public String getRaison() {
|
||||||
return this.raison;
|
return this.raison;
|
||||||
|
@ -6,13 +6,18 @@ import java.util.*;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
public class EtudiantNP implements Etudiant{
|
public class EtudiantNP implements Etudiant{
|
||||||
|
// auto-incrément des étudiants
|
||||||
private static int nextId=0;
|
private static int nextId=0;
|
||||||
|
// id de l'étudiant
|
||||||
private int id;
|
private int id;
|
||||||
|
// nom et prénom de l'étudiant
|
||||||
private String nom, prenom;
|
private String nom, prenom;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructeur.
|
* Constructeur d'un étudiant.
|
||||||
|
* @param nom le nom de l'étudiant
|
||||||
|
* @param prenom le prénom de l'étudiant
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
public EtudiantNP(String nom, String prenom){
|
public EtudiantNP(String nom, String prenom){
|
||||||
Objects.requireNonNull(nom,"On ne peut pas créer un étudiant avec un nom null");
|
Objects.requireNonNull(nom,"On ne peut pas créer un étudiant avec un nom null");
|
||||||
|
@ -11,16 +11,25 @@ public class GroupeNP implements Groupe {
|
|||||||
private static int nextId=0;
|
private static int nextId=0;
|
||||||
// attributs naturels induits par getter de l'interface Groupe
|
// attributs naturels induits par getter de l'interface Groupe
|
||||||
private int id;
|
private int id;
|
||||||
|
// nom du groupe
|
||||||
private String name;
|
private String name;
|
||||||
|
// bornes limitatives du groupe
|
||||||
private int min,max;
|
private int min,max;
|
||||||
private TypeGroupe type;
|
// type de groupe
|
||||||
|
private TypeGroupe type;
|
||||||
|
// groupe père
|
||||||
private Groupe pointPoint;
|
private Groupe pointPoint;
|
||||||
// On utilise une interface set pour les sous-groupes et pour les membres (ce sont bien des ensembles en pratique).
|
// On utilise une interface set pour les sous-groupes et pour les membres (ce sont bien des ensembles en pratique).
|
||||||
private Set<Groupe> sousGroupes;
|
private Set<Groupe> sousGroupes;
|
||||||
|
// Liste des étudiants du groupe
|
||||||
private Set<Etudiant> membresDuGroupe;
|
private Set<Etudiant> membresDuGroupe;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Nouveau groupe vide de type ROOT sans étudiants, sans sous-Groupe
|
* Nouveau groupe vide de type ROOT sans étudiants, sans sous-Groupe
|
||||||
|
*
|
||||||
|
* @param name le nom du groupe
|
||||||
|
* @param min le nombre minimum d'étudiants
|
||||||
|
* @param max le nombre maximum d'étudiants
|
||||||
*/
|
*/
|
||||||
public GroupeNP(String name, int min, int max){
|
public GroupeNP(String name, int min, int max){
|
||||||
Objects.requireNonNull(name,"On ne peut pas créer un groupe dont le nom est null");
|
Objects.requireNonNull(name,"On ne peut pas créer un groupe dont le nom est null");
|
||||||
@ -36,6 +45,12 @@ public class GroupeNP implements Groupe {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Nouveau groupe vide de type FREE sans étudiants, sans sous-Groupe
|
* Nouveau groupe vide de type FREE sans étudiants, sans sous-Groupe
|
||||||
|
*
|
||||||
|
* @param name le nom du groupe
|
||||||
|
* @param min le nombre minimum d'étudiants
|
||||||
|
* @param max le nombre maximum d'étudiants
|
||||||
|
* @param pere le groupe père
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
public GroupeNP(Groupe pere, String name, int min, int max){
|
public GroupeNP(Groupe pere, String name, int min, int max){
|
||||||
Objects.requireNonNull(pere,"On ne peut pas créer un groupe dont le père est null");
|
Objects.requireNonNull(pere,"On ne peut pas créer un groupe dont le père est null");
|
||||||
@ -53,6 +68,7 @@ public class GroupeNP implements Groupe {
|
|||||||
/**
|
/**
|
||||||
* Nouveau groupe de type PARTITION dupliquant le groupe passé en paramètre (pour servir de racine à une partition de ce groupe de type FREE passé en paramètre).
|
* Nouveau groupe de type PARTITION dupliquant le groupe passé en paramètre (pour servir de racine à une partition de ce groupe de type FREE passé en paramètre).
|
||||||
*
|
*
|
||||||
|
* @param pere le groupe père
|
||||||
*/
|
*/
|
||||||
public GroupeNP(Groupe pere){
|
public GroupeNP(Groupe pere){
|
||||||
Objects.requireNonNull(pere,"On ne peut pas créer un groupe dont le père est null");
|
Objects.requireNonNull(pere,"On ne peut pas créer un groupe dont le père est null");
|
||||||
@ -68,6 +84,8 @@ public class GroupeNP implements Groupe {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Ajoute un étudiant. Se comporte comme add de l'interface Set.
|
* Ajoute un étudiant. Se comporte comme add de l'interface Set.
|
||||||
|
*
|
||||||
|
* @param e l'étudiant à ajouter
|
||||||
*
|
*
|
||||||
* @return true iff e est ajouté
|
* @return true iff e est ajouté
|
||||||
*/
|
*/
|
||||||
@ -78,6 +96,8 @@ public class GroupeNP implements Groupe {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Enlève un étudiant. Se comporte comme remove de l'interface Set.
|
* Enlève un étudiant. Se comporte comme remove de l'interface Set.
|
||||||
|
*
|
||||||
|
* @param e l'étudiant à enlever
|
||||||
*
|
*
|
||||||
* @return true iff e est enlevé
|
* @return true iff e est enlevé
|
||||||
*/
|
*/
|
||||||
@ -89,6 +109,8 @@ public class GroupeNP implements Groupe {
|
|||||||
/**
|
/**
|
||||||
* Ajoute un sous-groupe. Se comporte comme add de l'interface Set.
|
* Ajoute un sous-groupe. Se comporte comme add de l'interface Set.
|
||||||
* vérifie que le groupe passé en argument a bien renseigné this comme son père.
|
* vérifie que le groupe passé en argument a bien renseigné this comme son père.
|
||||||
|
*
|
||||||
|
* @param g le groupe à ajouter
|
||||||
*
|
*
|
||||||
* @return true iff g est ajouté
|
* @return true iff g est ajouté
|
||||||
*/
|
*/
|
||||||
@ -101,6 +123,8 @@ public class GroupeNP implements Groupe {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Enlève un groupe. Se comporte comme remove de l'interface Set.
|
* Enlève un groupe. Se comporte comme remove de l'interface Set.
|
||||||
|
*
|
||||||
|
* @param g le sous-groupe à enlever
|
||||||
*
|
*
|
||||||
* @return true iff e est enlevé
|
* @return true iff e est enlevé
|
||||||
*/
|
*/
|
||||||
@ -112,6 +136,7 @@ public class GroupeNP implements Groupe {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* permet de récupérer l'identifiant d'un groupe (référence interne sans intérêt irl).
|
* permet de récupérer l'identifiant d'un groupe (référence interne sans intérêt irl).
|
||||||
|
*
|
||||||
* @return l'identifiant.
|
* @return l'identifiant.
|
||||||
*/
|
*/
|
||||||
public int getId(){
|
public int getId(){
|
||||||
@ -188,6 +213,10 @@ public class GroupeNP implements Groupe {
|
|||||||
return this.membresDuGroupe;
|
return this.membresDuGroupe;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* permet de modifier le nom du groupe
|
||||||
|
* @param name le nouveau nom
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void setName(String s) {
|
public void setName(String s) {
|
||||||
this.name=s;
|
this.name=s;
|
||||||
|
@ -22,7 +22,11 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
|||||||
// On utilise une table de hachage pour retrouver facilement un changement (à partir de son id).
|
// On utilise une table de hachage pour retrouver facilement un changement (à partir de son id).
|
||||||
// Si il y a beaucoup de changements c'est plus rapide que de parcourir toute une liste.
|
// Si il y a beaucoup de changements c'est plus rapide que de parcourir toute une liste.
|
||||||
private HashMap<Integer,Changement> brain;
|
private HashMap<Integer,Changement> brain;
|
||||||
|
/**
|
||||||
|
* Constructeur de l'usine à changement.
|
||||||
|
* @param agf l'usine à groupe travaillant en tandem avec cette usine.
|
||||||
|
* @param fenetre la fenetre principale
|
||||||
|
*/
|
||||||
public AbstractChangementFactoryNP(AbstractGroupeFactory agf, JFrame fenetre){
|
public AbstractChangementFactoryNP(AbstractGroupeFactory agf, JFrame fenetre){
|
||||||
Objects.requireNonNull(agf,"On ne peut pas créer une usine à changement dont l'usine à groupe parternaire est null");
|
Objects.requireNonNull(agf,"On ne peut pas créer une usine à changement dont l'usine à groupe parternaire est null");
|
||||||
this.agf=agf;
|
this.agf=agf;
|
||||||
@ -30,7 +34,12 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
|||||||
this.brain=new HashMap<Integer,Changement>();
|
this.brain=new HashMap<Integer,Changement>();
|
||||||
this.getChange();
|
this.getChange();
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Constructeur de l'usine à changement.
|
||||||
|
* @param agf l'usine à groupe travaillant en tandem avec cette usine.
|
||||||
|
* @param fenetre la fenetre principale
|
||||||
|
* @param liste la liste des changements
|
||||||
|
*/
|
||||||
public AbstractChangementFactoryNP(AbstractGroupeFactory agf, JFrame fenetre, Set<Changement> liste){
|
public AbstractChangementFactoryNP(AbstractGroupeFactory agf, JFrame fenetre, Set<Changement> liste){
|
||||||
Objects.requireNonNull(agf,"On ne peut pas créer une usine à changement dont l'usine à groupe parternaire est null");
|
Objects.requireNonNull(agf,"On ne peut pas créer une usine à changement dont l'usine à groupe parternaire est null");
|
||||||
this.agf=agf;
|
this.agf=agf;
|
||||||
@ -66,7 +75,7 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* permet de mettre en oeuvre un changement connu de l'usine abstraite.
|
* permet de mettre en oeuvre un changement connu de l'usine abstraite.
|
||||||
*
|
* @param c le changement à mettre en oeuvre.
|
||||||
* @throws java.lang.NullPointerException si un argument est null
|
* @throws java.lang.NullPointerException si un argument est null
|
||||||
* @throws java.lang.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).
|
* @throws java.lang.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).
|
||||||
* @throws java.lang.IllegalArgumentException si inconnu de l'usine abstraite
|
* @throws java.lang.IllegalArgumentException si inconnu de l'usine abstraite
|
||||||
@ -97,7 +106,7 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* permet de supprimer un changement connu de l'usine abstraite.
|
* permet de supprimer un changement connu de l'usine abstraite.
|
||||||
*
|
* @param c le changement à supprimer.
|
||||||
* @throws java.lang.NullPointerException si un argument est null
|
* @throws java.lang.NullPointerException si un argument est null
|
||||||
* @throws java.lang.IllegalArgumentException si inconnu de l'usine abstraite
|
* @throws java.lang.IllegalArgumentException si inconnu de l'usine abstraite
|
||||||
*/
|
*/
|
||||||
@ -222,7 +231,11 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
|||||||
// FONCTION POUR SIMPLIFIER LES Modification BD
|
// FONCTION POUR SIMPLIFIER LES Modification BD
|
||||||
// ***********************
|
// ***********************
|
||||||
|
|
||||||
|
/**
|
||||||
|
* permet de se connecter à la base de donnée
|
||||||
|
*
|
||||||
|
* @return la connexion à la base de donnée
|
||||||
|
*/
|
||||||
private Connection cnx(){
|
private Connection cnx(){
|
||||||
//On se Connecte a la BD
|
//On se Connecte a la BD
|
||||||
try{
|
try{
|
||||||
@ -239,6 +252,13 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* permet de détécter une erreur de connexion à la base de donnée
|
||||||
|
*
|
||||||
|
* @return true si une erreur est détéctée, false sinon
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
private boolean erreurCO(){
|
private boolean erreurCO(){
|
||||||
if(JOptionPane.showConfirmDialog(this.fenetre, "erreur connection a la BD reassayer?", "erreur connection", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
|
if(JOptionPane.showConfirmDialog(this.fenetre, "erreur connection a la BD reassayer?", "erreur connection", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
|
||||||
return true;
|
return true;
|
||||||
@ -247,7 +267,13 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* permet de détécter une erreur SQL
|
||||||
|
*
|
||||||
|
* @return true si une erreur est détéctée, false sinon
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
private boolean erreurSQL(){
|
private boolean erreurSQL(){
|
||||||
if(JOptionPane.showConfirmDialog(this.fenetre, "erreur lors de la modification, reasssayer?", "erreur SQL", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
|
if(JOptionPane.showConfirmDialog(this.fenetre, "erreur lors de la modification, reasssayer?", "erreur SQL", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
|
||||||
return true;
|
return true;
|
||||||
@ -256,6 +282,12 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* permet de fermer la connexion à la base de donnée
|
||||||
|
*
|
||||||
|
* @param clos outil de fermture de la connexion
|
||||||
|
*
|
||||||
|
*/
|
||||||
private void close(AutoCloseable clos){
|
private void close(AutoCloseable clos){
|
||||||
try{
|
try{
|
||||||
clos.close();
|
clos.close();
|
||||||
@ -265,6 +297,9 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* permet de remplir la liste des changements de l'usine
|
||||||
|
*/
|
||||||
private void getChange(){
|
private void getChange(){
|
||||||
Connection cnx=this.cnx();
|
Connection cnx=this.cnx();
|
||||||
try{
|
try{
|
||||||
@ -288,7 +323,14 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
|||||||
}
|
}
|
||||||
this.close(cnx);
|
this.close(cnx);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* permet de chercher les sous-groupes d'un groupe
|
||||||
|
*
|
||||||
|
* @param idA id du groupe A
|
||||||
|
* @param idB id du groupe B
|
||||||
|
* @param retour tableau de groupe dans lequel on va stocker les groupes
|
||||||
|
* @param toFind le groupe à comparer (ou groupe père pour la première itération)
|
||||||
|
*/
|
||||||
private void getGroupe(int idA, int idB, Groupe[] retour, Groupe tofind){
|
private void getGroupe(int idA, int idB, Groupe[] retour, Groupe tofind){
|
||||||
if(retour[0]!=null && retour[1]!=null)
|
if(retour[0]!=null && retour[1]!=null)
|
||||||
return;
|
return;
|
||||||
@ -303,6 +345,10 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pemet de arfricher la liste des changements
|
||||||
|
*
|
||||||
|
*/
|
||||||
private void refresh(){
|
private void refresh(){
|
||||||
this.brain=new HashMap<Integer,Changement>();
|
this.brain=new HashMap<Integer,Changement>();
|
||||||
this.getChange();
|
this.getChange();
|
||||||
|
@ -28,6 +28,8 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Le constructeur fabrique le groupe promotion déja plein (utilisé en Modèle persistant de donné).
|
* Le constructeur fabrique le groupe promotion déja plein (utilisé en Modèle persistant de donné).
|
||||||
|
* @param fenetre fenetre principale
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
public AbstractGroupeFactoryNP(JFrame fenetre){
|
public AbstractGroupeFactoryNP(JFrame fenetre){
|
||||||
this.fenetre=fenetre;
|
this.fenetre=fenetre;
|
||||||
@ -38,6 +40,10 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
/**
|
/**
|
||||||
* Le constructeur fabrique le groupe promotion vide.
|
* Le constructeur fabrique le groupe promotion vide.
|
||||||
* Il faut ensuite y ajouter les étudiants.
|
* Il faut ensuite y ajouter les étudiants.
|
||||||
|
* @param fenetre fenetre principale
|
||||||
|
* @param name nom de la promotion
|
||||||
|
* @param min le nombre minimum d'étudiants dans la promotion
|
||||||
|
* @param max le nombre maximum d'étudiants dans la promotion
|
||||||
*/
|
*/
|
||||||
public AbstractGroupeFactoryNP(String name, int min, int max, JFrame fenetre){
|
public AbstractGroupeFactoryNP(String name, int min, int max, JFrame fenetre){
|
||||||
Objects.requireNonNull(name,"On ne peut pas créer une promotion dont le nom est null");
|
Objects.requireNonNull(name,"On ne peut pas créer une promotion dont le nom est null");
|
||||||
@ -51,14 +57,23 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Test plutôt optimiste. Si la clé est identique alors on fait comme si c'était le bon groupe.
|
* Test plutôt optimiste. Si la clé est identique alors on fait comme si c'était le bon groupe.
|
||||||
*
|
* @param g le groupe à tester
|
||||||
* @return true si le groupe est connu
|
* @return true si le groupe est connu
|
||||||
*/
|
*/
|
||||||
public Boolean knows(Groupe g){
|
public Boolean knows(Groupe g){
|
||||||
return this.brain.containsKey(Integer.valueOf(g.getId()));
|
return this.brain.containsKey(Integer.valueOf(g.getId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pemet de changer le nom d'un groupe dans la base de données
|
||||||
|
*
|
||||||
|
* @param g le groupe dont on veut changer le nom
|
||||||
|
* @param name le nouveau nom
|
||||||
|
*
|
||||||
|
* @return true si le changement a été effectué, false s'il y a eu une erreur
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
public boolean changeNameGroupe(Groupe g, String name){
|
public boolean changeNameGroupe(Groupe g, String name){
|
||||||
if(!this.knows(g)){
|
if(!this.knows(g)){
|
||||||
throw new IllegalArgumentException("Groupe inconu ");
|
throw new IllegalArgumentException("Groupe inconu ");
|
||||||
@ -99,6 +114,8 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
* permet de supprimer un groupe connu de l'usine abstraite qui ne contient pas de groupes.
|
* 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.
|
* Pour détruire un groupe connu qui en contient d'autres il faut le faire récursivement.
|
||||||
*
|
*
|
||||||
|
* @param g le groupe à supprimer
|
||||||
|
*
|
||||||
* @throws java.lang.NullPointerException si un argument est null
|
* @throws java.lang.NullPointerException si un argument est null
|
||||||
* @throws java.lang.IllegalStateException si le groupe contient des groupes
|
* @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)
|
* @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)
|
||||||
@ -315,6 +332,11 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
// ***********************
|
// ***********************
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* permet de se connecter à la base de donnée
|
||||||
|
*
|
||||||
|
* @return la connexion à la base de donnée
|
||||||
|
*/
|
||||||
private Connection cnx(){
|
private Connection cnx(){
|
||||||
//On se Connecte a la BD
|
//On se Connecte a la BD
|
||||||
try{
|
try{
|
||||||
@ -331,7 +353,13 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* permet de détécter une erreur de connexion à la base de donnée
|
||||||
|
*
|
||||||
|
* @return true si une erreur est détéctée, false sinon
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
private boolean erreurCO(){
|
private boolean erreurCO(){
|
||||||
if(JOptionPane.showConfirmDialog(this.fenetre, "erreur connection a la BD reassayer?", "erreur connection", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
|
if(JOptionPane.showConfirmDialog(this.fenetre, "erreur connection a la BD reassayer?", "erreur connection", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
|
||||||
return true;
|
return true;
|
||||||
@ -340,7 +368,13 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* permet de détécter une erreur SQL
|
||||||
|
*
|
||||||
|
* @return true si une erreur est détéctée, false sinon
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
private boolean erreurSQL(){
|
private boolean erreurSQL(){
|
||||||
if(JOptionPane.showConfirmDialog(this.fenetre, "erreur lors de la modification, reasssayer?", "erreur SQL", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
|
if(JOptionPane.showConfirmDialog(this.fenetre, "erreur lors de la modification, reasssayer?", "erreur SQL", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
|
||||||
return true;
|
return true;
|
||||||
@ -348,7 +382,11 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* permet de supprimer un étudiant de la base de donnée
|
||||||
|
* @param et l'étudiant à supprimer
|
||||||
|
* @param g le groupe dans lequel il est
|
||||||
|
*/
|
||||||
private void deleteEtu(Etudiant et, Groupe g){
|
private void deleteEtu(Etudiant et, Groupe g){
|
||||||
Connection cnx=this.cnx();
|
Connection cnx=this.cnx();
|
||||||
try{
|
try{
|
||||||
@ -366,7 +404,12 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
}
|
}
|
||||||
this.close(cnx);
|
this.close(cnx);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* permet de supprimer un étudiant de la base de donnée
|
||||||
|
* @param pst la requete préparée
|
||||||
|
* @param cnx la connexion à la base de donnée
|
||||||
|
* @param id le groupe parent
|
||||||
|
*/
|
||||||
private void deleteEtu(PreparedStatement pst, Connection cnx, int id){
|
private void deleteEtu(PreparedStatement pst, Connection cnx, int id){
|
||||||
try{
|
try{
|
||||||
pst.setInt(1, id);
|
pst.setInt(1, id);
|
||||||
@ -387,7 +430,12 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* permet de fermer la connexion à la base de donnée
|
||||||
|
*
|
||||||
|
* @param clos outil de fermture de la connexion
|
||||||
|
*
|
||||||
|
*/
|
||||||
private void close(AutoCloseable clos){
|
private void close(AutoCloseable clos){
|
||||||
try{
|
try{
|
||||||
clos.close();
|
clos.close();
|
||||||
@ -398,7 +446,12 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* permet d'ajouter un groupe de la base de donnée
|
||||||
|
* @param etudiant l'étudiant à ajouter
|
||||||
|
* @param g le groupe de l'étudiant
|
||||||
|
* @return true s'il n'y a pas eu d'erreur, false sinon
|
||||||
|
*/
|
||||||
private boolean saveEtu(Etudiant etudiant, Groupe g){
|
private boolean saveEtu(Etudiant etudiant, Groupe g){
|
||||||
Connection cnx = this.cnx();
|
Connection cnx = this.cnx();
|
||||||
try{
|
try{
|
||||||
@ -436,7 +489,11 @@ private boolean saveEtu(Etudiant etudiant, Groupe g){
|
|||||||
this.close(cnx);
|
this.close(cnx);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* permet d'ajouter un groupe dans la base de donnée
|
||||||
|
* @param g le groupe à ajouter
|
||||||
|
* @return true s'il n'y a pas eu d'erreur, false sinon
|
||||||
|
*/
|
||||||
private boolean saveGroupe(Groupe g){
|
private boolean saveGroupe(Groupe g){
|
||||||
Connection cnx=this.cnx();
|
Connection cnx=this.cnx();
|
||||||
try{
|
try{
|
||||||
@ -468,7 +525,11 @@ private boolean saveEtu(Etudiant etudiant, Groupe g){
|
|||||||
this.close(cnx);
|
this.close(cnx);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* permet de supprimer un groupe de la base de donnée
|
||||||
|
* @param g le groupe à supprimer
|
||||||
|
* @return true s'il n'y a pas eu d'erreur, false sinon
|
||||||
|
*/
|
||||||
private boolean suprGroupe(Groupe g){
|
private boolean suprGroupe(Groupe g){
|
||||||
Connection cnx=this.cnx();
|
Connection cnx=this.cnx();
|
||||||
try{
|
try{
|
||||||
@ -498,6 +559,9 @@ private boolean saveEtu(Etudiant etudiant, Groupe g){
|
|||||||
* FONCTION POUR INITIALISER LA FACTORY AVEC LA BD
|
* FONCTION POUR INITIALISER LA FACTORY AVEC LA BD
|
||||||
* ********************************
|
* ********************************
|
||||||
*/
|
*/
|
||||||
|
/**
|
||||||
|
* permet de charger les groupes de la base de donnée
|
||||||
|
*/
|
||||||
private void init(){
|
private void init(){
|
||||||
Connection cnx=this.cnx();
|
Connection cnx=this.cnx();
|
||||||
//on récupère le Groupe de la BD n'ayant pas de Parent (La promo donc)
|
//on récupère le Groupe de la BD n'ayant pas de Parent (La promo donc)
|
||||||
@ -536,7 +600,6 @@ private boolean saveEtu(Etudiant etudiant, Groupe g){
|
|||||||
* Fonction recursive permettant de récuperrer les sous groupe a partir de la BD
|
* Fonction recursive permettant de récuperrer les sous groupe a partir de la BD
|
||||||
* @param g le groupe
|
* @param g le groupe
|
||||||
* @param cnx la connection a la BD (evite de la surcharger)
|
* @param cnx la connection a la BD (evite de la surcharger)
|
||||||
* @param pourcent le pourcentage de ce groupe dans le chargement
|
|
||||||
*/
|
*/
|
||||||
private void addSousGroupe(Groupe g, Connection cnx){
|
private void addSousGroupe(Groupe g, Connection cnx){
|
||||||
try{
|
try{
|
||||||
@ -618,6 +681,7 @@ private boolean saveEtu(Etudiant etudiant, Groupe g){
|
|||||||
* Refresh le groupe donnée pour le mettre a jour avec la Base de donnée
|
* Refresh le groupe donnée pour le mettre a jour avec la Base de donnée
|
||||||
* Si le groupe n'existe plus on retourne le groupe parent le plus proche existant encore
|
* Si le groupe n'existe plus on retourne le groupe parent le plus proche existant encore
|
||||||
* @param g le groupe a refresh
|
* @param g le groupe a refresh
|
||||||
|
* @param cnx la connection a la BD (evite de la surcharger)
|
||||||
* @return le groupe refresh
|
* @return le groupe refresh
|
||||||
*/
|
*/
|
||||||
private Groupe refreshGroupe(Groupe g, Connection cnx){
|
private Groupe refreshGroupe(Groupe g, Connection cnx){
|
||||||
|
@ -12,11 +12,21 @@ public class ChangementNP implements Changement {
|
|||||||
|
|
||||||
//auto-incrément des changements
|
//auto-incrément des changements
|
||||||
private static int nextId=0;
|
private static int nextId=0;
|
||||||
private String raison;
|
// id du changement
|
||||||
private int id;
|
private int id;
|
||||||
|
// groupe d'origine et d'arrivée
|
||||||
private Groupe a,b;
|
private Groupe a,b;
|
||||||
|
// étudiant concerné
|
||||||
private Etudiant e;
|
private Etudiant e;
|
||||||
|
// raison de la demande
|
||||||
|
private String raison;
|
||||||
|
/**
|
||||||
|
* Constructeur d'un changement.
|
||||||
|
* @param a le groupe de départ
|
||||||
|
* @param b le groupe d'arrivée
|
||||||
|
* @param e l'étudiant demandant le changement
|
||||||
|
* @param raison la raison du changement
|
||||||
|
*/
|
||||||
public ChangementNP(Groupe a, Etudiant e, Groupe b){
|
public ChangementNP(Groupe a, Etudiant e, Groupe b){
|
||||||
Objects.requireNonNull(a,"On ne peut pas créer un changement avec un groupe à quitter null");
|
Objects.requireNonNull(a,"On ne peut pas créer un changement avec un groupe à quitter null");
|
||||||
Objects.requireNonNull(b,"On ne peut pas créer un changement avec un groupe à rejoindre null");
|
Objects.requireNonNull(b,"On ne peut pas créer un changement avec un groupe à rejoindre null");
|
||||||
@ -27,7 +37,14 @@ public class ChangementNP implements Changement {
|
|||||||
this.b=b;
|
this.b=b;
|
||||||
this.e=e;
|
this.e=e;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Constructeur d'un changement.
|
||||||
|
* @param a le groupe de départ
|
||||||
|
* @param b le groupe d'arrivée
|
||||||
|
* @param e l'étudiant demandant le changement
|
||||||
|
* @param raison la raison du changement
|
||||||
|
*
|
||||||
|
*/
|
||||||
public ChangementNP(Groupe a, Etudiant e, Groupe b, String raison){
|
public ChangementNP(Groupe a, Etudiant e, Groupe b, String raison){
|
||||||
Objects.requireNonNull(a,"On ne peut pas créer un changement avec un groupe à quitter null");
|
Objects.requireNonNull(a,"On ne peut pas créer un changement avec un groupe à quitter null");
|
||||||
Objects.requireNonNull(b,"On ne peut pas créer un changement avec un groupe à rejoindre null");
|
Objects.requireNonNull(b,"On ne peut pas créer un changement avec un groupe à rejoindre null");
|
||||||
@ -38,7 +55,14 @@ public class ChangementNP implements Changement {
|
|||||||
this.b=b;
|
this.b=b;
|
||||||
this.e=e;
|
this.e=e;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Constructeur d'un changement.
|
||||||
|
* @param a le groupe de départ
|
||||||
|
* @param b le groupe d'arrivée
|
||||||
|
* @param e l'étudiant demandant le changement
|
||||||
|
* @param id l'id du changement
|
||||||
|
*
|
||||||
|
*/
|
||||||
public ChangementNP(Groupe a, Etudiant e, Groupe b, int id){
|
public ChangementNP(Groupe a, Etudiant e, Groupe b, int id){
|
||||||
Objects.requireNonNull(a,"On ne peut pas créer un changement avec un groupe à quitter null");
|
Objects.requireNonNull(a,"On ne peut pas créer un changement avec un groupe à quitter null");
|
||||||
Objects.requireNonNull(b,"On ne peut pas créer un changement avec un groupe à rejoindre null");
|
Objects.requireNonNull(b,"On ne peut pas créer un changement avec un groupe à rejoindre null");
|
||||||
@ -52,7 +76,15 @@ public class ChangementNP implements Changement {
|
|||||||
this.nextId=this.id;
|
this.nextId=this.id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Constructeur d'un changement.
|
||||||
|
* @param a le groupe de départ
|
||||||
|
* @param b le groupe d'arrivée
|
||||||
|
* @param e l'étudiant demandant le changement
|
||||||
|
* @param id l'id du changement
|
||||||
|
* @param raison la raison du changement
|
||||||
|
*
|
||||||
|
*/
|
||||||
public ChangementNP(Groupe a, Etudiant e, Groupe b, int id, String raison){
|
public ChangementNP(Groupe a, Etudiant e, Groupe b, int id, String raison){
|
||||||
Objects.requireNonNull(a,"On ne peut pas créer un changement avec un groupe à quitter null");
|
Objects.requireNonNull(a,"On ne peut pas créer un changement avec un groupe à quitter null");
|
||||||
Objects.requireNonNull(b,"On ne peut pas créer un changement avec un groupe à rejoindre null");
|
Objects.requireNonNull(b,"On ne peut pas créer un changement avec un groupe à rejoindre null");
|
||||||
@ -97,7 +129,10 @@ public class ChangementNP implements Changement {
|
|||||||
public Etudiant getEtu(){
|
public Etudiant getEtu(){
|
||||||
return this.e;
|
return this.e;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* permet de récupérer la raison du changement
|
||||||
|
* @return la raison du changement
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getRaison() {
|
public String getRaison() {
|
||||||
return this.raison;
|
return this.raison;
|
||||||
|
@ -7,13 +7,19 @@ import java.util.*;
|
|||||||
|
|
||||||
public class EtudiantNP implements Etudiant{
|
public class EtudiantNP implements Etudiant{
|
||||||
|
|
||||||
|
// auto-incrément des étudiants
|
||||||
private static int nextId=0;
|
private static int nextId=0;
|
||||||
|
// id de l'étudiant
|
||||||
private int id;
|
private int id;
|
||||||
|
// nom et prénom de l'étudiant
|
||||||
private String nom, prenom;
|
private String nom, prenom;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructeur.
|
* Constructeur d'un étudiant.
|
||||||
*/
|
* @param nom le nom de l'étudiant
|
||||||
|
* @param prenom le prénom de l'étudiant
|
||||||
|
*
|
||||||
|
*/
|
||||||
public EtudiantNP(String nom, String prenom){
|
public EtudiantNP(String nom, String prenom){
|
||||||
Objects.requireNonNull(nom,"On ne peut pas créer un étudiant avec un nom null");
|
Objects.requireNonNull(nom,"On ne peut pas créer un étudiant avec un nom null");
|
||||||
Objects.requireNonNull(prenom,"On ne peut pas créer un étudiant avec un nom null");
|
Objects.requireNonNull(prenom,"On ne peut pas créer un étudiant avec un nom null");
|
||||||
@ -24,8 +30,11 @@ public class EtudiantNP implements Etudiant{
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructeur pour MPN
|
* Constructeur d'un étudiant.
|
||||||
*/
|
* @param nom le nom de l'étudiant
|
||||||
|
* @param prenom le prénom de l'étudiant
|
||||||
|
* @param id l'id de l'étudiant
|
||||||
|
*/
|
||||||
public EtudiantNP(String nom, String prenom, int id){
|
public EtudiantNP(String nom, String prenom, int id){
|
||||||
Objects.requireNonNull(nom,"On ne peut pas créer un étudiant avec un nom null");
|
Objects.requireNonNull(nom,"On ne peut pas créer un étudiant avec un nom null");
|
||||||
Objects.requireNonNull(prenom,"On ne peut pas créer un étudiant avec un nom null");
|
Objects.requireNonNull(prenom,"On ne peut pas créer un étudiant avec un nom null");
|
||||||
|
@ -11,16 +11,25 @@ public class GroupeNP implements Groupe {
|
|||||||
private static int nextId=0;
|
private static int nextId=0;
|
||||||
// attributs naturels induits par getter de l'interface Groupe
|
// attributs naturels induits par getter de l'interface Groupe
|
||||||
private int id;
|
private int id;
|
||||||
|
// nom du groupe
|
||||||
private String name;
|
private String name;
|
||||||
|
// bornes limitatives du groupe
|
||||||
private int min,max;
|
private int min,max;
|
||||||
private TypeGroupe type;
|
// type de groupe
|
||||||
|
private TypeGroupe type;
|
||||||
|
// groupe père
|
||||||
private Groupe pointPoint;
|
private Groupe pointPoint;
|
||||||
// On utilise une interface set pour les sous-groupes et pour les membres (ce sont bien des ensembles en pratique).
|
// On utilise une interface set pour les sous-groupes et pour les membres (ce sont bien des ensembles en pratique).
|
||||||
private Set<Groupe> sousGroupes;
|
private Set<Groupe> sousGroupes;
|
||||||
|
// Liste des étudiants du groupe
|
||||||
private Set<Etudiant> membresDuGroupe;
|
private Set<Etudiant> membresDuGroupe;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Nouveau groupe vide de type ROOT sans étudiants, sans sous-Groupe
|
* Nouveau groupe vide de type ROOT sans étudiants, sans sous-Groupe
|
||||||
|
*
|
||||||
|
* @param name le nom du groupe
|
||||||
|
* @param min le nombre minimum d'étudiants
|
||||||
|
* @param max le nombre maximum d'étudiants
|
||||||
*/
|
*/
|
||||||
public GroupeNP(String name, int min, int max){
|
public GroupeNP(String name, int min, int max){
|
||||||
Objects.requireNonNull(name,"On ne peut pas créer un groupe dont le nom est null");
|
Objects.requireNonNull(name,"On ne peut pas créer un groupe dont le nom est null");
|
||||||
@ -33,9 +42,17 @@ public class GroupeNP implements Groupe {
|
|||||||
this.sousGroupes=new LinkedHashSet<Groupe>();
|
this.sousGroupes=new LinkedHashSet<Groupe>();
|
||||||
this.membresDuGroupe=new LinkedHashSet<Etudiant>();
|
this.membresDuGroupe=new LinkedHashSet<Etudiant>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Nouveau groupe complet (pour le modèle persisant de donnée)
|
* Nouveau groupe vide de type FREE sans étudiants, sans sous-Groupe
|
||||||
|
*
|
||||||
|
* @param name le nom du groupe
|
||||||
|
* @param min le nombre minimum d'étudiants
|
||||||
|
* @param max le nombre maximum d'étudiants
|
||||||
|
* @param pere le groupe père
|
||||||
|
* @param id l'id du groupe
|
||||||
|
* @param type le type du groupe
|
||||||
|
*
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
public GroupeNP(int id, String name, int min, int max, TypeGroupe type, Groupe pere){
|
public GroupeNP(int id, String name, int min, int max, TypeGroupe type, Groupe pere){
|
||||||
Objects.requireNonNull(name,"On ne peut pas créer un groupe dont le nom est null");
|
Objects.requireNonNull(name,"On ne peut pas créer un groupe dont le nom est null");
|
||||||
@ -58,6 +75,12 @@ public class GroupeNP implements Groupe {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Nouveau groupe vide de type FREE sans étudiants, sans sous-Groupe
|
* Nouveau groupe vide de type FREE sans étudiants, sans sous-Groupe
|
||||||
|
*
|
||||||
|
* @param name le nom du groupe
|
||||||
|
* @param min le nombre minimum d'étudiants
|
||||||
|
* @param max le nombre maximum d'étudiants
|
||||||
|
* @param pere le groupe père
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
public GroupeNP(Groupe pere, String name, int min, int max){
|
public GroupeNP(Groupe pere, String name, int min, int max){
|
||||||
Objects.requireNonNull(pere,"On ne peut pas créer un groupe dont le père est null");
|
Objects.requireNonNull(pere,"On ne peut pas créer un groupe dont le père est null");
|
||||||
@ -75,6 +98,7 @@ public class GroupeNP implements Groupe {
|
|||||||
/**
|
/**
|
||||||
* Nouveau groupe de type PARTITION dupliquant le groupe passé en paramètre (pour servir de racine à une partition de ce groupe de type FREE passé en paramètre).
|
* Nouveau groupe de type PARTITION dupliquant le groupe passé en paramètre (pour servir de racine à une partition de ce groupe de type FREE passé en paramètre).
|
||||||
*
|
*
|
||||||
|
* @param pere le groupe père
|
||||||
*/
|
*/
|
||||||
public GroupeNP(Groupe pere){
|
public GroupeNP(Groupe pere){
|
||||||
Objects.requireNonNull(pere,"On ne peut pas créer un groupe dont le père est null");
|
Objects.requireNonNull(pere,"On ne peut pas créer un groupe dont le père est null");
|
||||||
@ -90,6 +114,8 @@ public class GroupeNP implements Groupe {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Ajoute un étudiant. Se comporte comme add de l'interface Set.
|
* Ajoute un étudiant. Se comporte comme add de l'interface Set.
|
||||||
|
*
|
||||||
|
* @param e l'étudiant à ajouter
|
||||||
*
|
*
|
||||||
* @return true iff e est ajouté
|
* @return true iff e est ajouté
|
||||||
*/
|
*/
|
||||||
@ -100,6 +126,8 @@ public class GroupeNP implements Groupe {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Enlève un étudiant. Se comporte comme remove de l'interface Set.
|
* Enlève un étudiant. Se comporte comme remove de l'interface Set.
|
||||||
|
*
|
||||||
|
* @param e l'étudiant à enlever
|
||||||
*
|
*
|
||||||
* @return true iff e est enlevé
|
* @return true iff e est enlevé
|
||||||
*/
|
*/
|
||||||
@ -111,6 +139,8 @@ public class GroupeNP implements Groupe {
|
|||||||
/**
|
/**
|
||||||
* Ajoute un sous-groupe. Se comporte comme add de l'interface Set.
|
* Ajoute un sous-groupe. Se comporte comme add de l'interface Set.
|
||||||
* vérifie que le groupe passé en argument a bien renseigné this comme son père.
|
* vérifie que le groupe passé en argument a bien renseigné this comme son père.
|
||||||
|
*
|
||||||
|
* @param g le groupe à ajouter
|
||||||
*
|
*
|
||||||
* @return true iff g est ajouté
|
* @return true iff g est ajouté
|
||||||
*/
|
*/
|
||||||
@ -123,6 +153,8 @@ public class GroupeNP implements Groupe {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Enlève un groupe. Se comporte comme remove de l'interface Set.
|
* Enlève un groupe. Se comporte comme remove de l'interface Set.
|
||||||
|
*
|
||||||
|
* @param g le sous-groupe à enlever
|
||||||
*
|
*
|
||||||
* @return true iff e est enlevé
|
* @return true iff e est enlevé
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user