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.
|
||||
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){
|
||||
Objects.requireNonNull(agf,"On ne peut pas créer une usine à changement dont l'usine à groupe parternaire est null");
|
||||
this.agf=agf;
|
||||
@ -45,6 +49,8 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
||||
/**
|
||||
* 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.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
|
||||
@ -71,6 +77,8 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
||||
/**
|
||||
* 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.IllegalArgumentException si inconnu de l'usine abstraite
|
||||
*/
|
||||
@ -101,7 +109,18 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
||||
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
|
||||
public void createChangement(Groupe A, Etudiant e, Groupe B, String raison) {
|
||||
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.
|
||||
* 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){
|
||||
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.
|
||||
* @param g le groupe à tester
|
||||
* @return true si le groupe est connu de l'usine abstraite
|
||||
*
|
||||
*/
|
||||
public Boolean knows(Groupe g){
|
||||
return this.brain.containsKey(Integer.valueOf(g.getId()));
|
||||
@ -49,6 +57,8 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
* @param g le groupe à supprimer
|
||||
*
|
||||
* @throws java.lang.NullPointerException si un argument est null
|
||||
* @throws java.lang.IllegalStateException si le groupe contient des groupes
|
||||
@ -234,12 +244,24 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
||||
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
|
||||
public boolean changeNameGroupe(Groupe g, String name) {
|
||||
g.setName(name);
|
||||
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
|
||||
public Groupe refreshALL(Groupe g) {
|
||||
return g;
|
||||
|
@ -12,11 +12,22 @@ public class ChangementNP implements Changement {
|
||||
|
||||
//auto-incrément des changements
|
||||
private static int nextId=0;
|
||||
|
||||
// id du changement
|
||||
private int id;
|
||||
// groupe d'origine et d'arrivée
|
||||
private Groupe a,b;
|
||||
// étudiant concerné
|
||||
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){
|
||||
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");
|
||||
@ -28,6 +39,14 @@ public class ChangementNP implements Changement {
|
||||
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){
|
||||
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");
|
||||
@ -70,7 +89,10 @@ public class ChangementNP implements Changement {
|
||||
public Etudiant getEtu(){
|
||||
return this.e;
|
||||
}
|
||||
|
||||
/**
|
||||
* permet de récupérer la raison du changement
|
||||
* @return la raison du changement
|
||||
*/
|
||||
@Override
|
||||
public String getRaison() {
|
||||
return this.raison;
|
||||
|
@ -6,13 +6,18 @@ import java.util.*;
|
||||
*/
|
||||
|
||||
public class EtudiantNP implements Etudiant{
|
||||
|
||||
// auto-incrément des étudiants
|
||||
private static int nextId=0;
|
||||
// id de l'étudiant
|
||||
private int id;
|
||||
// nom et prénom de l'étudiant
|
||||
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){
|
||||
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;
|
||||
// attributs naturels induits par getter de l'interface Groupe
|
||||
private int id;
|
||||
// nom du groupe
|
||||
private String name;
|
||||
// bornes limitatives du groupe
|
||||
private int min,max;
|
||||
// type de groupe
|
||||
private TypeGroupe type;
|
||||
// groupe père
|
||||
private Groupe pointPoint;
|
||||
// On utilise une interface set pour les sous-groupes et pour les membres (ce sont bien des ensembles en pratique).
|
||||
private Set<Groupe> sousGroupes;
|
||||
// Liste des étudiants du groupe
|
||||
private Set<Etudiant> membresDuGroupe;
|
||||
|
||||
/**
|
||||
* 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){
|
||||
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
|
||||
*
|
||||
* @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){
|
||||
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).
|
||||
*
|
||||
* @param pere le groupe père
|
||||
*/
|
||||
public GroupeNP(Groupe pere){
|
||||
Objects.requireNonNull(pere,"On ne peut pas créer un groupe dont le père est null");
|
||||
@ -69,6 +85,8 @@ public class GroupeNP implements Groupe {
|
||||
/**
|
||||
* Ajoute un étudiant. Se comporte comme add de l'interface Set.
|
||||
*
|
||||
* @param e l'étudiant à ajouter
|
||||
*
|
||||
* @return true iff e est ajouté
|
||||
*/
|
||||
public boolean addEtudiant(Etudiant e){
|
||||
@ -79,6 +97,8 @@ public class GroupeNP implements Groupe {
|
||||
/**
|
||||
* Enlève un étudiant. Se comporte comme remove de l'interface Set.
|
||||
*
|
||||
* @param e l'étudiant à enlever
|
||||
*
|
||||
* @return true iff e est enlevé
|
||||
*/
|
||||
public boolean removeEtudiant(Etudiant e){
|
||||
@ -90,6 +110,8 @@ public class GroupeNP implements Groupe {
|
||||
* 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.
|
||||
*
|
||||
* @param g le groupe à ajouter
|
||||
*
|
||||
* @return true iff g est ajouté
|
||||
*/
|
||||
public boolean addSousGroupe(Groupe g){
|
||||
@ -102,6 +124,8 @@ public class GroupeNP implements Groupe {
|
||||
/**
|
||||
* Enlève un groupe. Se comporte comme remove de l'interface Set.
|
||||
*
|
||||
* @param g le sous-groupe à enlever
|
||||
*
|
||||
* @return true iff e est enlevé
|
||||
*/
|
||||
public boolean removeSousGroupe(Groupe g){
|
||||
@ -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).
|
||||
*
|
||||
* @return l'identifiant.
|
||||
*/
|
||||
public int getId(){
|
||||
@ -188,6 +213,10 @@ public class GroupeNP implements Groupe {
|
||||
return this.membresDuGroupe;
|
||||
}
|
||||
|
||||
/**
|
||||
* permet de modifier le nom du groupe
|
||||
* @param name le nouveau nom
|
||||
*/
|
||||
@Override
|
||||
public void setName(String 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).
|
||||
// Si il y a beaucoup de changements c'est plus rapide que de parcourir toute une liste.
|
||||
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){
|
||||
Objects.requireNonNull(agf,"On ne peut pas créer une usine à changement dont l'usine à groupe parternaire est null");
|
||||
this.agf=agf;
|
||||
@ -30,7 +34,12 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
||||
this.brain=new HashMap<Integer,Changement>();
|
||||
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){
|
||||
Objects.requireNonNull(agf,"On ne peut pas créer une usine à changement dont l'usine à groupe parternaire est null");
|
||||
this.agf=agf;
|
||||
@ -66,7 +75,7 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
||||
|
||||
/**
|
||||
* 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.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
|
||||
@ -97,7 +106,7 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
||||
|
||||
/**
|
||||
* 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.IllegalArgumentException si inconnu de l'usine abstraite
|
||||
*/
|
||||
@ -222,7 +231,11 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
||||
// 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(){
|
||||
//On se Connecte a la BD
|
||||
try{
|
||||
@ -239,6 +252,13 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
||||
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(){
|
||||
if(JOptionPane.showConfirmDialog(this.fenetre, "erreur connection a la BD reassayer?", "erreur connection", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
|
||||
return true;
|
||||
@ -247,7 +267,13 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
||||
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(){
|
||||
if(JOptionPane.showConfirmDialog(this.fenetre, "erreur lors de la modification, reasssayer?", "erreur SQL", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
|
||||
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){
|
||||
try{
|
||||
clos.close();
|
||||
@ -265,6 +297,9 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* permet de remplir la liste des changements de l'usine
|
||||
*/
|
||||
private void getChange(){
|
||||
Connection cnx=this.cnx();
|
||||
try{
|
||||
@ -288,7 +323,14 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
||||
}
|
||||
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){
|
||||
if(retour[0]!=null && retour[1]!=null)
|
||||
return;
|
||||
@ -303,6 +345,10 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* pemet de arfricher la liste des changements
|
||||
*
|
||||
*/
|
||||
private void refresh(){
|
||||
this.brain=new HashMap<Integer,Changement>();
|
||||
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é).
|
||||
* @param fenetre fenetre principale
|
||||
*
|
||||
*/
|
||||
public AbstractGroupeFactoryNP(JFrame fenetre){
|
||||
this.fenetre=fenetre;
|
||||
@ -38,6 +40,10 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
||||
/**
|
||||
* Le constructeur fabrique le groupe promotion vide.
|
||||
* 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){
|
||||
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.
|
||||
*
|
||||
* @param g le groupe à tester
|
||||
* @return true si le groupe est connu
|
||||
*/
|
||||
public Boolean knows(Groupe g){
|
||||
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){
|
||||
if(!this.knows(g)){
|
||||
throw new IllegalArgumentException("Groupe inconu ");
|
||||
@ -98,6 +113,8 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
* @param g le groupe à supprimer
|
||||
*
|
||||
* @throws java.lang.NullPointerException si un argument est null
|
||||
* @throws java.lang.IllegalStateException si le groupe contient des groupes
|
||||
@ -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(){
|
||||
//On se Connecte a la BD
|
||||
try{
|
||||
@ -331,7 +353,13 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
||||
}
|
||||
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(){
|
||||
if(JOptionPane.showConfirmDialog(this.fenetre, "erreur connection a la BD reassayer?", "erreur connection", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
|
||||
return true;
|
||||
@ -340,7 +368,13 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
||||
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(){
|
||||
if(JOptionPane.showConfirmDialog(this.fenetre, "erreur lors de la modification, reasssayer?", "erreur SQL", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
|
||||
return true;
|
||||
@ -348,7 +382,11 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
||||
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){
|
||||
Connection cnx=this.cnx();
|
||||
try{
|
||||
@ -366,7 +404,12 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
||||
}
|
||||
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){
|
||||
try{
|
||||
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){
|
||||
try{
|
||||
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){
|
||||
Connection cnx = this.cnx();
|
||||
try{
|
||||
@ -436,7 +489,11 @@ private boolean saveEtu(Etudiant etudiant, Groupe g){
|
||||
this.close(cnx);
|
||||
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){
|
||||
Connection cnx=this.cnx();
|
||||
try{
|
||||
@ -468,7 +525,11 @@ private boolean saveEtu(Etudiant etudiant, Groupe g){
|
||||
this.close(cnx);
|
||||
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){
|
||||
Connection cnx=this.cnx();
|
||||
try{
|
||||
@ -498,6 +559,9 @@ private boolean saveEtu(Etudiant etudiant, Groupe g){
|
||||
* FONCTION POUR INITIALISER LA FACTORY AVEC LA BD
|
||||
* ********************************
|
||||
*/
|
||||
/**
|
||||
* permet de charger les groupes de la base de donnée
|
||||
*/
|
||||
private void init(){
|
||||
Connection cnx=this.cnx();
|
||||
//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
|
||||
* @param g le groupe
|
||||
* @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){
|
||||
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
|
||||
* Si le groupe n'existe plus on retourne le groupe parent le plus proche existant encore
|
||||
* @param g le groupe a refresh
|
||||
* @param cnx la connection a la BD (evite de la surcharger)
|
||||
* @return le groupe refresh
|
||||
*/
|
||||
private Groupe refreshGroupe(Groupe g, Connection cnx){
|
||||
|
@ -12,11 +12,21 @@ public class ChangementNP implements Changement {
|
||||
|
||||
//auto-incrément des changements
|
||||
private static int nextId=0;
|
||||
private String raison;
|
||||
// id du changement
|
||||
private int id;
|
||||
// groupe d'origine et d'arrivée
|
||||
private Groupe a,b;
|
||||
// étudiant concerné
|
||||
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){
|
||||
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");
|
||||
@ -27,7 +37,14 @@ public class ChangementNP implements Changement {
|
||||
this.b=b;
|
||||
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){
|
||||
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");
|
||||
@ -38,7 +55,14 @@ public class ChangementNP implements Changement {
|
||||
this.b=b;
|
||||
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){
|
||||
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");
|
||||
@ -52,7 +76,15 @@ public class ChangementNP implements Changement {
|
||||
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){
|
||||
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");
|
||||
@ -97,7 +129,10 @@ public class ChangementNP implements Changement {
|
||||
public Etudiant getEtu(){
|
||||
return this.e;
|
||||
}
|
||||
|
||||
/**
|
||||
* permet de récupérer la raison du changement
|
||||
* @return la raison du changement
|
||||
*/
|
||||
@Override
|
||||
public String getRaison() {
|
||||
return this.raison;
|
||||
|
@ -7,12 +7,18 @@ import java.util.*;
|
||||
|
||||
public class EtudiantNP implements Etudiant{
|
||||
|
||||
// auto-incrément des étudiants
|
||||
private static int nextId=0;
|
||||
// id de l'étudiant
|
||||
private int id;
|
||||
// nom et prénom de l'étudiant
|
||||
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){
|
||||
Objects.requireNonNull(nom,"On ne peut pas créer un étudiant avec un nom null");
|
||||
@ -24,7 +30,10 @@ 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){
|
||||
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;
|
||||
// attributs naturels induits par getter de l'interface Groupe
|
||||
private int id;
|
||||
// nom du groupe
|
||||
private String name;
|
||||
// bornes limitatives du groupe
|
||||
private int min,max;
|
||||
// type de groupe
|
||||
private TypeGroupe type;
|
||||
// groupe père
|
||||
private Groupe pointPoint;
|
||||
// On utilise une interface set pour les sous-groupes et pour les membres (ce sont bien des ensembles en pratique).
|
||||
private Set<Groupe> sousGroupes;
|
||||
// Liste des étudiants du groupe
|
||||
private Set<Etudiant> membresDuGroupe;
|
||||
|
||||
/**
|
||||
* 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){
|
||||
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.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){
|
||||
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
|
||||
*
|
||||
* @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){
|
||||
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).
|
||||
*
|
||||
* @param pere le groupe père
|
||||
*/
|
||||
public GroupeNP(Groupe pere){
|
||||
Objects.requireNonNull(pere,"On ne peut pas créer un groupe dont le père est null");
|
||||
@ -91,6 +115,8 @@ public class GroupeNP implements Groupe {
|
||||
/**
|
||||
* Ajoute un étudiant. Se comporte comme add de l'interface Set.
|
||||
*
|
||||
* @param e l'étudiant à ajouter
|
||||
*
|
||||
* @return true iff e est ajouté
|
||||
*/
|
||||
public boolean addEtudiant(Etudiant e){
|
||||
@ -101,6 +127,8 @@ public class GroupeNP implements Groupe {
|
||||
/**
|
||||
* Enlève un étudiant. Se comporte comme remove de l'interface Set.
|
||||
*
|
||||
* @param e l'étudiant à enlever
|
||||
*
|
||||
* @return true iff e est enlevé
|
||||
*/
|
||||
public boolean removeEtudiant(Etudiant e){
|
||||
@ -112,6 +140,8 @@ public class GroupeNP implements Groupe {
|
||||
* 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.
|
||||
*
|
||||
* @param g le groupe à ajouter
|
||||
*
|
||||
* @return true iff g est ajouté
|
||||
*/
|
||||
public boolean addSousGroupe(Groupe g){
|
||||
@ -124,6 +154,8 @@ public class GroupeNP implements Groupe {
|
||||
/**
|
||||
* Enlève un groupe. Se comporte comme remove de l'interface Set.
|
||||
*
|
||||
* @param g le sous-groupe à enlever
|
||||
*
|
||||
* @return true iff e est enlevé
|
||||
*/
|
||||
public boolean removeSousGroupe(Groupe g){
|
||||
|
Loading…
Reference in New Issue
Block a user