diff --git a/.gitignore b/.gitignore index 9154f4c..f453bf0 100644 --- a/.gitignore +++ b/.gitignore @@ -19,7 +19,8 @@ *.zip *.tar.gz *.rar - +#Doc +./doc # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* replay_pid* diff --git a/Makefile b/Makefile index f327c55..daaf0ad 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ DOC = doc/fr/iutfbleau/projetIHM2022FI2 JAR_MNP = IHM.jar # BUTS FACTICES # -.PHONY : run clean doc +.PHONY : run clean doc clean_doc # BUT PAR DEFAUT # run : build\ @@ -24,12 +24,12 @@ run : build\ # AUTRE BUTS doc : - javadoc -d doc src/fr/iutfbleau/projetIHM2022FI2/API/*.java src/fr/iutfbleau/projetIHM2022FI2/MP/*.java src/fr/iutfbleau/projetIHM2022FI2/MP/ROOT/Controller/*.java src/fr/iutfbleau/projetIHM2022FI2/MP/ROOT/View/*.java src/fr/iutfbleau/projetIHM2022FI2/MP/ETU/Controller/*.java src/fr/iutfbleau/projetIHM2022FI2/MP/ETU/View/*.java src/fr/iutfbleau/projetIHM2022FI2/MP/ETU/Model/*.java src/fr/iutfbleau/projetIHM2022FI2/ROOT/Model/*.java src/fr/iutfbleau/projetIHM2022FI2/PROF/Model/*.java src/fr/iutfbleau/projetIHM2022FI2/PROF/View/*.java src/fr/iutfbleau/projetIHM2022FI2/PROF/Controller/*.java - javadoc -d doc src/fr/iutfbleau/projetIHM2022FI2/API/*.java src/fr/iutfbleau/projetIHM2022FI2/MNP/*.java src/fr/iutfbleau/projetIHM2022FI2/MNP/ROOT/Controller/*.java src/fr/iutfbleau/projetIHM2022FI2/MNP/ROOT/View/*.java src/fr/iutfbleau/projetIHM2022FI2/MNP/ETU/Controller/*.java src/fr/iutfbleau/projetIHM2022FI2/MNP/ETU/View/*.java src/fr/iutfbleau/projetIHM2022FI2/MNP/ETU/Model/*.java src/fr/iutfbleau/projetIHM2022FI2/ROOT/Model/*.java src/fr/iutfbleau/projetIHM2022FI2/PROF/Model/*.java src/fr/iutfbleau/projetIHM2022FI2/PROF/View/*.java src/fr/iutfbleau/projetIHM2022FI2/PROF/Controller/*.java + javadoc -d doc src/fr/iutfbleau/projetIHM2022FI2/API/*.java src/fr/iutfbleau/projetIHM2022FI2/MP/*.java src/fr/iutfbleau/projetIHM2022FI2/MP/ROOT/Controller/*.java src/fr/iutfbleau/projetIHM2022FI2/MP/ROOT/View/*.java src/fr/iutfbleau/projetIHM2022FI2/MP/ETU/View/*.java src/fr/iutfbleau/projetIHM2022FI2/MP/ETU/Model/*.java src/fr/iutfbleau/projetIHM2022FI2/MP/ROOT/Model/*.java src/fr/iutfbleau/projetIHM2022FI2/MP/PROF/Model/*.java src/fr/iutfbleau/projetIHM2022FI2/MP/PROF/View/*.java src/fr/iutfbleau/projetIHM2022FI2/MNP/*.java src/fr/iutfbleau/projetIHM2022FI2/MNP/ROOT/Model/*.java src/fr/iutfbleau/projetIHM2022FI2/MNP/PROF/Model/* src/fr/iutfbleau/projetIHM2022FI2/MNP/ETU/Model/* clean : rm -rf ${BUILD}/* *.jar - +clean_doc: + rm -rf ./doc # REGLES DE DEPENDANCE # ## Dossier ## build : @@ -88,14 +88,14 @@ ${BUILD}/MP/ChangementNP.class : ${BUILD}/API/Changement.class \ ${BUILD}/API/Etudiant.class ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MP/ChangementNP.java -${BUILD}/MP/AbstractGroupeFactoryNP.class : ${SRC}/MP/AbstractGroupeFactoryNP.java \ +${BUILD}/MP/AbstractGroupeFactoryPersistant.class : ${SRC}/MP/AbstractGroupeFactoryPersistant.java \ ${BUILD}/API/AbstractGroupeFactory.class - ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MP/AbstractGroupeFactoryNP.java + ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MP/AbstractGroupeFactoryPersistant.java -${BUILD}/MP/AbstractChangementFactoryNP.class : ${SRC}/MP/AbstractChangementFactoryNP.java \ +${BUILD}/MP/AbstractChangementFactoryPersistant.class : ${SRC}/MP/AbstractChangementFactoryPersistant.java \ ${BUILD}/API/AbstractChangementFactory.class \ ${BUILD}/API/Changement.class - ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MP/AbstractChangementFactoryNP.java + ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MP/AbstractChangementFactoryPersistant.java @@ -326,8 +326,8 @@ ${BUILD}/MNP/PROF/Model/ModelProf.class : ${SRC}/MNP/PROF/Model/ModelProf.java \ ${BUILD}/MP/EtudiantNP.class \ ${BUILD}/MP/GroupeNP.class \ ${BUILD}/MP/ChangementNP.class \ - ${BUILD}/MP/AbstractGroupeFactoryNP.class \ - ${BUILD}/MP/AbstractChangementFactoryNP.class \ + ${BUILD}/MP/AbstractGroupeFactoryPersistant.class \ + ${BUILD}/MP/AbstractChangementFactoryPersistant.class \ ${BUILD}/MP/ROOT/Model/ModelRoot.class \ ${BUILD}/MP/ETU/Model/ModelEtu.class \ ${BUILD}/MP/PROF/Model/ModelProf.class \ diff --git a/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractChangementFactory.java~ b/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractChangementFactory.java~ deleted file mode 100644 index c0849de..0000000 --- a/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractChangementFactory.java~ +++ /dev/null @@ -1,93 +0,0 @@ -package fr.iutfbleau.projetIHM2022FI2.API; -import java.util.*; -/** - * Usine abstraite gérant l'ensemble des groupes. - * - */ - -public interface AbstractGroupeFactory { - - /** - * permet de récupérer le Groupe qui contient les étudiants de toute la promotion - * @return la promo. - */ - public Groupe getPromotion(); - - /** - * 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. - * - * @throws java.lang.NullPointerException si un argument est null - * @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) - */ - public void deleteGroupe(Groupe g); - - /** - * permet d'ajouter un groupe vide de type FREE comme sous-groupe d'un groupe donné. - * @param pere le groupe père du groupe à créer - * @param name le nom du groupe à créer - * @param min,max bornes indicatives sur la taille du groupe à créer - * - * @throws java.lang.NullPointerException si un argument est null - * @throws java.lang.IllegalArgumentException si le groupe pere est de type PARTITION - * ou si il n'y a pas 0 < min <= max - */ - public void createGroupe(Groupe pere, String name, int min, int max); - - /** - * permet de créer une partition automatiquement sous un groupe donné. - * - * @param pere le groupe père du groupe à partitionner - * @param name le nom des groupe à créer (on ajoutera à la suite un numéro ou une lettre pour distinguer chaque groupe) - * @param n le nombre de partitions - * @throws java.lang.NullPointerException si un argument est null - * @throws java.lang.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. - */ - public void createPartition(Groupe pere, String name, int n); - - /** - * permet d'ajouter un étudiant à un groupe. - * - * @param g le groupe dans lequel il faut ajouter l'étudiant - * @param e l'étudiant à ajouter - * - * @throws java.lang.NullPointerException si un argument est null - * @throws java.lang.IllegalArgumentException la factory ne connaît pas g - * @throws java.lang.IllegalStateException le père de g ne contient pas e - */ - public void addToGroupe(Groupe g, Etudiant e); - - /** - * permet d'enlever un étudiant d'un groupe. - * - * @param g le groupe dans lequel il faut enlever l'étudiant - * @param e l'étudiant à enlever - * - * @throws java.lang.NullPointerException si un argument est null - * @throws java.lang.IllegalStateException g ne contient pas e - * @throws java.lang.IllegalArgumentException la factory ne connaît pas g - */ - public void dropFromGroupe(Groupe g, Etudiant e); - - /** - * permet de retrouver un étudiant à partir de son identifiant - * - * @param id l'identifiant de l'étudiant - * @return Etudiant l'étudiant connu de la factory ayant cet identifiant - * - * @throws java.lang.IllegalStateException la factory ne connaît pas l'étudiant. - */ - public Etudiant getEtudiantFromId(int idEtu); - - - - -} diff --git a/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.java b/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.java index 37959ee..3307c93 100644 --- a/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.java +++ b/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.java @@ -126,4 +126,12 @@ public interface AbstractGroupeFactory { * @return le groupe refresh/un parent si il a été refresh */ public Groupe refreshALL(Groupe g); + + + /** + * refresh le Groupe seulement + * @param g le groupe + * @return le groupe refresh/un parent si il a été refresh + */ + public Groupe refreshOnlyG(Groupe g); } diff --git a/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.java~ b/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.java~ deleted file mode 100644 index f1dbec9..0000000 --- a/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.java~ +++ /dev/null @@ -1,106 +0,0 @@ -package fr.iutfbleau.projetIHM2022FI2.API; -import java.util.*; -/** - * Usine abstraite gérant l'ensemble des groupes. - * - */ - -public interface AbstractGroupeFactory { - - /** - * permet de récupérer le Groupe qui contient les étudiants de toute la promotion - * @return la promo. - */ - public Groupe getPromotion(); - - /** - * 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. - * - * @throws java.lang.NullPointerException si un argument est null - * @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) - */ - public void deleteGroupe(Groupe g); - - /** - * permet d'ajouter un groupe vide de type FREE comme sous-groupe d'un groupe donné. - * @param pere le groupe père du groupe à créer - * @param name le nom du groupe à créer - * @param min,max bornes indicatives sur la taille du groupe à créer - * - * @throws java.lang.NullPointerException si un argument est null - * @throws java.lang.IllegalArgumentException si le groupe pere est de type PARTITION - * ou si il n'y a pas 0 < min <= max - */ - public void createGroupe(Groupe pere, String name, int min, int max); - - /** - * permet de créer une partition automatiquement sous un groupe donné. - * - * @param pere le groupe père du groupe à partitionner - * @param name le nom des groupe à créer (on ajoutera à la suite un numéro ou une lettre pour distinguer chaque groupe) - * @param n le nombre de partitions - * @throws java.lang.NullPointerException si un argument est null - * @throws java.lang.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. - */ - public void createPartition(Groupe pere, String name, int n); - - /** - * permet d'ajouter un étudiant à un groupe. - * - * @param g le groupe dans lequel il faut ajouter l'étudiant - * @param e l'étudiant à ajouter - * - * @throws java.lang.NullPointerException si un argument est null - * @throws java.lang.IllegalArgumentException la factory ne connaît pas g - * @throws java.lang.IllegalStateException le père de g ne contient pas e - */ - public void addToGroupe(Groupe g, Etudiant e); - - /** - * permet d'enlever un étudiant d'un groupe. - * - * @param g le groupe dans lequel il faut enlever l'étudiant - * @param e l'étudiant à enlever - * - * @throws java.lang.NullPointerException si un argument est null - * @throws java.lang.IllegalStateException g ne contient pas e - * @throws java.lang.IllegalArgumentException la factory ne connaît pas g - */ - public void dropFromGroupe(Groupe g, Etudiant e); - - /** - * 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. - * - * @param String nomEtu le nom approximmatif de l'étudiant - * @return Set l'ensemble des étudiants connus de la factory ayant un nom "proche" de ce string au sens de la remarque ci-dessus. - * - * @throws java.lang.NullPointerException si le String est null. - */ - public Set getEtudiantFromId(String nomEtu); - - /** - * permet de retrouver les groupes d'un étudiant. - * - * @param Etu un étudiant - * @return Etudiant l'étudiant connu de la factory ayant cet identifiant - * - * @throws java.lang.NullPointerException si le String est null. - */ - public Set getGroupesOfEtudiant(Etudiant etu); - - - -} diff --git a/src/fr/iutfbleau/projetIHM2022FI2/API/Changement.java~ b/src/fr/iutfbleau/projetIHM2022FI2/API/Changement.java~ deleted file mode 100644 index f345ad0..0000000 --- a/src/fr/iutfbleau/projetIHM2022FI2/API/Changement.java~ +++ /dev/null @@ -1,85 +0,0 @@ -package fr.iutfbleau.projetIHM2022FI2.API; -import java.util.*; -/** - * Un groupe - */ - -public interface Groupe extends MonPrint { - - /** - * 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(); - - /** - * permet de récupérer le nom d'un groupe (utile irl). - * @return le nom. - */ - public String getName(); - - /** - * permet de récupérer le nombre minimum d'étudiants souhaités dans le groupe. - * @return le minimum souhaité - */ - public int getMin(); - - /** - * permet de récupérer le nombre maximum d'étudiants souhaités dans un groupe. - * @return le maximum souhaité - */ - public int getMax(); - - /** - * permet de récupérer le nombre d'étudiants dans ce groupe. - * @return le nombre de places prises (pas forcément limité entre Min et Max, mais c'est le but) - */ - public int getSize(); - - /** - * permet de récupérer la nature du groupe - * @return le type du groupe - */ - public TypeGroupe getType(); - - /** - * permet de récupérer le groupe père - * un groupe racine devrait retourner lui-même - * - * @return le père - */ - public Groupe getPointPoint(); - - /** - * Potentiellement "vide" - * @return un itérateur sur sous-groupes. - */ - public Iterator getSousGroupes(); - - /** - * Potentiellement "vide" - * @return un itérateur sur les étudiants. - */ - public Iterator getEtudiants(); - - /** - * @see MonPrint - * NB. On n'utilise le mécanisme des méthodes par défaut pour donner du code dans une interface. C'est un petit peu laid et à contre-emploi mais pratique ici. - * - * NB2. On ne peut pas utiliser le toString de Objects - * https://stackoverflow.com/questions/24016962/java8-why-is-it-forbidden-to-define-a-default-method-for-a-method-from-java-lan - */ - public default String monPrint() { - StringBuilder sb = new StringBuilder(); - sb.append("Groupe " + getName() + " (" getType() +", capacité " + getMin() + " à " + getMax() +", id " + getId()+")"); - Iterator i = getEtudiants(); - sb.append("%n"); - while (i.hasNext()){ - Etudiant s = i.next(); - sb.append(s.toString()); - sb.append("%n"); - } - return sb.toString(); - } - -} diff --git a/src/fr/iutfbleau/projetIHM2022FI2/API/Etudiant.java~ b/src/fr/iutfbleau/projetIHM2022FI2/API/Etudiant.java~ deleted file mode 100644 index e7334a6..0000000 --- a/src/fr/iutfbleau/projetIHM2022FI2/API/Etudiant.java~ +++ /dev/null @@ -1,33 +0,0 @@ -package fr.iutfbleau.projetIHM2022FI2.API; -/** - * Un étudiant - */ - -public interface Etudiant extends MonPrint{ - - /** - * permet de récupérer l'identifiant de l'étudiant (qu'on suppose être le même pour les différents systèmes, internes et externes à l'hôtel). - * @return l'identifiant. - */ - public int getId(); - - /** - * permet de récupérer - * @return le nom de l'étudiant. - */ - public String getNom(); - - /** - * permet de récupérer - * @return le prénom de l'étudiant - */ - public String getPrenom(); - - /** - * @see MonPrint - * NB. On n'utilise le mécanisme des méthodes par défaut pour donner du code dans une interface. C'est un petit peu laid et à contre-emploi mais pratique ici. - */ - public default String monPrint() { - return String.format("Nom " + getNom() + " Prenom " + getPrenom() + " (id="+getId()+")"); - } -} diff --git a/src/fr/iutfbleau/projetIHM2022FI2/API/Groupe.java~ b/src/fr/iutfbleau/projetIHM2022FI2/API/Groupe.java~ deleted file mode 100644 index 417c779..0000000 --- a/src/fr/iutfbleau/projetIHM2022FI2/API/Groupe.java~ +++ /dev/null @@ -1,115 +0,0 @@ -package fr.iutfbleau.projetIHM2022FI2.API; -import java.util.*; -/** - * Un groupe - */ - -public interface Groupe extends MonPrint { - /** - * Ajoute un étudiant. Se comporte comme add de l'interface Set. - * - * @return true iff e est ajouté - */ - public boolean addEtudiant(Etudiant e); - - /** - * Enlève un étudiant. Se comporte comme remove de l'interface Set. - * - * @return true iff e est enlevé - */ - boolean removeEtudiant(Etudiant e); - - /** - * 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. - * - * @return true iff g est ajouté - */ - public boolean addSousGroupe(Groupe g); - - /** - * Enlève un groupe. Se comporte comme remove de l'interface Set. - * - * @return true iff e est enlevé - */ - public boolean removeSousGroupe(Groupe g); - - /** - * 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(); - - /** - * permet de récupérer le nom d'un groupe (utile irl). - * @return le nom. - */ - public String getName(); - - /** - * permet de récupérer le nombre minimum d'étudiants souhaités dans le groupe. - * @return le minimum souhaité - */ - public int getMin(); - - /** - * permet de récupérer le nombre maximum d'étudiants souhaités dans un groupe. - * @return le maximum souhaité - */ - public int getMax(); - - /** - * permet de récupérer le nombre d'étudiants dans ce groupe. - * @return le nombre de places prises (pas forcément limité entre Min et Max, mais c'est le but) - */ - public int getSize(); - - /** - * permet de récupérer la nature du groupe - * @return le type du groupe - */ - public TypeGroupe getType(); - - /** - * permet de récupérer le groupe père - * un groupe racine devrait retourner lui-même - * - * @return le père - */ - public Groupe getPointPoint(); - - /** - * Potentiellement "vide" - * @return l'ensemble des sous-groupes. - */ - public Set getSousGroupes(); - - /** - * Potentiellement "vide" - * @return l'ensemble des étudiants. - */ - public Set getEtudiants(); - - /** - * @see MonPrint - * NB. On n'utilise le mécanisme des méthodes par défaut pour donner du code dans une interface. C'est un petit peu laid et à contre-emploi mais pratique ici. - * - * NB2. On ne peut pas utiliser le toString de Objects - * https://stackoverflow.com/questions/24016962/java8-why-is-it-forbidden-to-define-a-default-method-for-a-method-from-java-lan - */ - public default String monPrint() { - StringBuilder sb = new StringBuilder(); - sb.append("Groupe " + getName() + " (" + getType() + ", capacité " + getMin() + " à " + getMax() +", id " + getId()+")"); - sb.append("\n"); - // NB. getEtudiants() retourne un Set qui étend Iterable - // On peut utiliser les mécanismes de boucle "moderne" de puis la version 8 - // pour se faciliter la vie quand le traitement est assez simple - // voir https://docs.oracle.com/javase/8/docs/technotes/guides/language/foreach.html - for (Etudiant s: getEtudiants()){ - sb.append("\t"+ s.monPrint()); - sb.append("\n"); - } - return sb.toString(); - } - -} diff --git a/src/fr/iutfbleau/projetIHM2022FI2/API/MonPrint.java~ b/src/fr/iutfbleau/projetIHM2022FI2/API/MonPrint.java~ deleted file mode 100644 index e5fafae..0000000 --- a/src/fr/iutfbleau/projetIHM2022FI2/API/MonPrint.java~ +++ /dev/null @@ -1,7 +0,0 @@ -public interface MonPrint{ - - /** - * Fonctionne comme ToPrint() sauf car une interface n'a pas le droit de faire un override sur ToPrint(); - */ - public String monPrint(); -} diff --git a/src/fr/iutfbleau/projetIHM2022FI2/API/TypeGroupe.java~ b/src/fr/iutfbleau/projetIHM2022FI2/API/TypeGroupe.java~ deleted file mode 100644 index 902843e..0000000 --- a/src/fr/iutfbleau/projetIHM2022FI2/API/TypeGroupe.java~ +++ /dev/null @@ -1,10 +0,0 @@ -package fr.iutfbleau.projetIHM2022FI2.API; -public enum TypeGroupe { - ROOT ("Tous les étudiants"), PARTITION ("partitionable"), FREE ("libre") ; - - private final String name; - - private TypeGroupe(String s) { - name = s; - } -} diff --git a/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java b/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java index c53e63a..cd64266 100644 --- a/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java +++ b/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java @@ -269,6 +269,12 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory { public Groupe refreshALL(Groupe g) { return g; } + + @Override + public Groupe refreshOnlyG(Groupe g) { + // TODO Auto-generated method stub + return g; + } } diff --git a/src/fr/iutfbleau/projetIHM2022FI2/MNP/ETU/Model/ModelEtu.java b/src/fr/iutfbleau/projetIHM2022FI2/MNP/ETU/Model/ModelEtu.java index ea8c5bb..45e17e0 100644 --- a/src/fr/iutfbleau/projetIHM2022FI2/MNP/ETU/Model/ModelEtu.java +++ b/src/fr/iutfbleau/projetIHM2022FI2/MNP/ETU/Model/ModelEtu.java @@ -19,8 +19,6 @@ import fr.iutfbleau.projetIHM2022FI2.MP.ETU.View.FenetreGroupe; * Le Model de L'IHM */ public class ModelEtu implements Model{ - // le panel qui contient la fenetre de groupe - private JPanel panGroupe; // la fenetre de groupe private FenetreGroupe fenGr; //la fenetre d'etudiant @@ -56,14 +54,6 @@ public class ModelEtu implements Model{ ch.dispose(); this.fenetre.setVisible(true); this.initEtu(null); - if(this.promo==null){ - this.fenGr=new FenetreGroupe(null, this, null); - this.fenEtu=new FenetreEtudiant(null, this.Selected, this); - }else{ - this.fenGr=new FenetreGroupe(this.promo.getPromotion(), this,this.promo.getGroupesOfEtudiant(this.Selected)); - this.fenEtu=new FenetreEtudiant(this.promo.getPromotion(), this.Selected, this); - } - this.panGroupe=new JPanel(new GridLayout(1,1)); if(this.promo!=null){ this.showGroupe(this.promo.getPromotion()); }else{ @@ -78,20 +68,22 @@ public class ModelEtu implements Model{ * @param g le groupe a afficher */ public void showGroupe(Groupe g){ - if(g!=null) - g=this.promo .refreshALL(g); - this.panGroupe.removeAll(); - this.fenGr=new FenetreGroupe(g, this, this.promo.getGroupesOfEtudiant(this.Selected)); - this.fenEtu=new FenetreEtudiant(g, this.Selected, this); + if(g!=null){ + g=this.promo.refreshALL(g); + this.fenGr=new FenetreGroupe(g, this, this.promo.getGroupesOfEtudiant(Selected)); + }else{ + this.fenGr=new FenetreGroupe(g, this, null); + } this.fenetre.getContentPane().removeAll(); - this.panGroupe.add(this.fenGr.getPan()); - this.panGroupe.revalidate(); - this.fenetre.add(this.panGroupe); + this.fenEtu=new FenetreEtudiant(g, Selected, this); + this.fenetre.getContentPane().removeAll(); + this.fenetre.add(this.fenGr.getPan()); JScrollPane scroll=new JScrollPane(this.fenEtu.getPan()); scroll.getVerticalScrollBar().setUnitIncrement(15); this.fenetre.add(scroll); this.fenetre.revalidate(); } + @Override /** * getteur de la fenetre diff --git a/src/fr/iutfbleau/projetIHM2022FI2/MNP/PROF/Model/ModelProf.java b/src/fr/iutfbleau/projetIHM2022FI2/MNP/PROF/Model/ModelProf.java index 59de326..c5b6c0d 100644 --- a/src/fr/iutfbleau/projetIHM2022FI2/MNP/PROF/Model/ModelProf.java +++ b/src/fr/iutfbleau/projetIHM2022FI2/MNP/PROF/Model/ModelProf.java @@ -19,9 +19,6 @@ import fr.iutfbleau.projetIHM2022FI2.Permanent.View.Chargement; * Le Model de L'IHM */ public class ModelProf implements Model{ - - // le panel qui contient la fenetre de groupe - private JPanel panGroupe; // la fenetre de groupe private FenetreGroupe fenGr; //la fenetre d'etudiant @@ -55,14 +52,6 @@ public class ModelProf implements Model{ } ch.dispose(); this.fenetre.setVisible(true); - if(this.promo==null){ - this.fenGr=new FenetreGroupe(null, this); - this.fenEtu=new FenetreEtudiant(null); - }else{ - this.fenGr=new FenetreGroupe(this.promo.getPromotion(), this); - this.fenEtu=new FenetreEtudiant(this.promo.getPromotion()); - } - this.panGroupe=new JPanel(new GridLayout(1,1)); if(this.promo!=null){ this.showGroupe(this.promo.getPromotion()); }else{ @@ -78,19 +67,18 @@ public class ModelProf implements Model{ */ public void showGroupe(Groupe g){ if(g!=null) - g=this.promo .refreshALL(g); - this.panGroupe.removeAll(); + g=this.promo.refreshALL(g); + this.fenetre.getContentPane().removeAll(); this.fenGr=new FenetreGroupe(g, this); this.fenEtu=new FenetreEtudiant(g); this.fenetre.getContentPane().removeAll(); - this.panGroupe.add(this.fenGr.getPan()); - this.panGroupe.revalidate(); - this.fenetre.add(this.panGroupe); + this.fenetre.add(this.fenGr.getPan()); JScrollPane scroll=new JScrollPane(this.fenEtu.getPan()); scroll.getVerticalScrollBar().setUnitIncrement(15); this.fenetre.add(scroll); this.fenetre.revalidate(); } + @Override /** * getteur de la fenetre diff --git a/src/fr/iutfbleau/projetIHM2022FI2/MNP/ROOT/Model/ModelRoot.java b/src/fr/iutfbleau/projetIHM2022FI2/MNP/ROOT/Model/ModelRoot.java index 6e62a22..97c140d 100644 --- a/src/fr/iutfbleau/projetIHM2022FI2/MNP/ROOT/Model/ModelRoot.java +++ b/src/fr/iutfbleau/projetIHM2022FI2/MNP/ROOT/Model/ModelRoot.java @@ -26,8 +26,6 @@ import fr.iutfbleau.projetIHM2022FI2.Permanent.View.Chargement; */ public class ModelRoot implements Model{ - // le panel qui contient la fenetre de groupe - private JPanel panGroupe; // la fenetre de groupe private FenetreGroupe fenGr; //la fenetre d'etudiant @@ -59,14 +57,6 @@ public class ModelRoot implements Model{ this.changement=change; ch.dispose(); this.fenetre.setVisible(true); - if(this.promo.getPromotion()==null){ - this.fenGr=new FenetreGroupe(null, this); - this.fenEtu=new FenetreEtudiant(null, this); - }else{ - this.fenGr=new FenetreGroupe(this.promo.getPromotion(), this); - this.fenEtu=new FenetreEtudiant(this.promo.getPromotion(), this); - } - this.panGroupe=new JPanel(new GridLayout(1,1)); if(this.promo.getPromotion()!=null){ this.showGroupe(this.promo.getPromotion()); }else{ @@ -83,18 +73,17 @@ public class ModelRoot implements Model{ public void showGroupe(Groupe g){ if(g!=null) g=this.promo.refreshALL(g); - this.panGroupe.removeAll(); + this.fenetre.getContentPane().removeAll(); this.fenGr=new FenetreGroupe(g, this); this.fenEtu=new FenetreEtudiant(g, this); this.fenetre.getContentPane().removeAll(); - this.panGroupe.add(this.fenGr.getPan()); - this.panGroupe.revalidate(); - this.fenetre.add(this.panGroupe); + this.fenetre.add(this.fenGr.getPan()); JScrollPane scroll=new JScrollPane(this.fenEtu.getPan()); scroll.getVerticalScrollBar().setUnitIncrement(15); this.fenetre.add(scroll); this.fenetre.revalidate(); } + @Override /** * getteur de la fenetre diff --git a/src/fr/iutfbleau/projetIHM2022FI2/MP/AbstractChangementFactoryNP.java b/src/fr/iutfbleau/projetIHM2022FI2/MP/AbstractChangementFactoryPersistant.java similarity index 97% rename from src/fr/iutfbleau/projetIHM2022FI2/MP/AbstractChangementFactoryNP.java rename to src/fr/iutfbleau/projetIHM2022FI2/MP/AbstractChangementFactoryPersistant.java index 6788ee3..f6cc984 100644 --- a/src/fr/iutfbleau/projetIHM2022FI2/MP/AbstractChangementFactoryNP.java +++ b/src/fr/iutfbleau/projetIHM2022FI2/MP/AbstractChangementFactoryPersistant.java @@ -14,7 +14,7 @@ import java.util.*; * */ -public class AbstractChangementFactoryNP implements AbstractChangementFactory { +public class AbstractChangementFactoryPersistant implements AbstractChangementFactory { // l'usine à groupe travaillant en tandem avec cette usine. private AbstractGroupeFactory agf; @@ -27,7 +27,7 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory { * @param agf l'usine à groupe travaillant en tandem avec cette usine. * @param fenetre la fenetre principale */ - public AbstractChangementFactoryNP(AbstractGroupeFactory agf, JFrame fenetre){ + public AbstractChangementFactoryPersistant(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; this.fenetre=fenetre; @@ -40,7 +40,7 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory { * @param fenetre la fenetre principale * @param liste la liste des changements */ - public AbstractChangementFactoryNP(AbstractGroupeFactory agf, JFrame fenetre, Set liste){ + public AbstractChangementFactoryPersistant(AbstractGroupeFactory agf, JFrame fenetre, Set liste){ Objects.requireNonNull(agf,"On ne peut pas créer une usine à changement dont l'usine à groupe parternaire est null"); this.agf=agf; this.fenetre=fenetre; @@ -336,10 +336,13 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory { return; if(tofind.getId()==idA){ retour[0]=tofind; + return; } if(tofind.getId()==idB){ retour[1]=tofind; + return; } + this.agf.refreshOnlyG(tofind); for(Groupe sous:tofind.getSousGroupes()){ this.getGroupe(idA, idB, retour, sous); } diff --git a/src/fr/iutfbleau/projetIHM2022FI2/MP/AbstractGroupeFactoryNP.java b/src/fr/iutfbleau/projetIHM2022FI2/MP/AbstractGroupeFactoryPersistant.java similarity index 98% rename from src/fr/iutfbleau/projetIHM2022FI2/MP/AbstractGroupeFactoryNP.java rename to src/fr/iutfbleau/projetIHM2022FI2/MP/AbstractGroupeFactoryPersistant.java index f895fb1..7c076a7 100644 --- a/src/fr/iutfbleau/projetIHM2022FI2/MP/AbstractGroupeFactoryNP.java +++ b/src/fr/iutfbleau/projetIHM2022FI2/MP/AbstractGroupeFactoryPersistant.java @@ -14,7 +14,7 @@ import java.util.*; * */ -public class AbstractGroupeFactoryNP implements AbstractGroupeFactory { +public class AbstractGroupeFactoryPersistant implements AbstractGroupeFactory { // la racine (promotion) private Groupe promo; @@ -31,7 +31,7 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory { * @param fenetre fenetre principale * */ - public AbstractGroupeFactoryNP(JFrame fenetre){ + public AbstractGroupeFactoryPersistant(JFrame fenetre){ this.fenetre=fenetre; this.brain=new HashMap(); this.init(); @@ -45,7 +45,7 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory { * @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 AbstractGroupeFactoryPersistant(String name, int min, int max, JFrame fenetre){ Objects.requireNonNull(name,"On ne peut pas créer une promotion dont le nom est null"); this.promo=new GroupeNP(name,min,max); this.fenetre=fenetre; @@ -779,4 +779,12 @@ private boolean saveEtu(Etudiant etudiant, Groupe g){ this.addSousGroupe(g, cnx); } } + +@Override +public Groupe refreshOnlyG(Groupe g) { + Connection cnx = this.cnx(); + this.addSousGroupePasRecursif(g, cnx); + this.close(cnx); + return g; +} } diff --git a/src/fr/iutfbleau/projetIHM2022FI2/MP/ETU/Model/ModelEtu.java b/src/fr/iutfbleau/projetIHM2022FI2/MP/ETU/Model/ModelEtu.java index 3947c29..2acbab3 100644 --- a/src/fr/iutfbleau/projetIHM2022FI2/MP/ETU/Model/ModelEtu.java +++ b/src/fr/iutfbleau/projetIHM2022FI2/MP/ETU/Model/ModelEtu.java @@ -12,8 +12,8 @@ import fr.iutfbleau.projetIHM2022FI2.API.TypeGroupe; import fr.iutfbleau.projetIHM2022FI2.API.Model; import fr.iutfbleau.projetIHM2022FI2.Permanent.Controller.ObservateurFenetre; import fr.iutfbleau.projetIHM2022FI2.Permanent.View.Chargement; -import fr.iutfbleau.projetIHM2022FI2.MP.AbstractChangementFactoryNP; -import fr.iutfbleau.projetIHM2022FI2.MP.AbstractGroupeFactoryNP; +import fr.iutfbleau.projetIHM2022FI2.MP.AbstractChangementFactoryPersistant; +import fr.iutfbleau.projetIHM2022FI2.MP.AbstractGroupeFactoryPersistant; import fr.iutfbleau.projetIHM2022FI2.MP.ETU.View.FenetreEtudiant; import fr.iutfbleau.projetIHM2022FI2.MP.ETU.View.FenetreGroupe; @@ -21,8 +21,6 @@ import fr.iutfbleau.projetIHM2022FI2.MP.ETU.View.FenetreGroupe; * Le Model de L'IHM */ public class ModelEtu implements Model{ - // le panel qui contient la fenetre de groupe - private JPanel panGroupe; // la fenetre de groupe private FenetreGroupe fenGr; //la fenetre d'etudiant @@ -47,7 +45,7 @@ public class ModelEtu implements Model{ this.fenetre.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); this.fenetre.setMinimumSize(this.fenetre.getSize()); Chargement ch=new Chargement(this.fenetre); - this.promo=new AbstractGroupeFactoryNP(this.fenetre); + this.promo=new AbstractGroupeFactoryPersistant(this.fenetre); if(this.promo.getPromotion()==null){ this.promo=null; } @@ -55,15 +53,10 @@ public class ModelEtu implements Model{ this.fenetre.setVisible(true); this.initEtu(null); if(this.promo==null){ - this.fenGr=new FenetreGroupe(null, this, null); - this.fenEtu=new FenetreEtudiant(null, this.Selected, this); this.changement=null; }else{ - this.changement=new AbstractChangementFactoryNP(promo, this.fenetre); - this.fenGr=new FenetreGroupe(this.promo.getPromotion(), this,this.promo.getGroupesOfEtudiant(this.Selected)); - this.fenEtu=new FenetreEtudiant(this.promo.getPromotion(), this.Selected, this); + this.changement=new AbstractChangementFactoryPersistant(promo, this.fenetre); } - this.panGroupe=new JPanel(new GridLayout(1,1)); if(this.promo!=null){ this.showGroupe(this.promo.getPromotion()); }else{ @@ -78,15 +71,16 @@ public class ModelEtu implements Model{ * @param g le groupe a afficher */ public void showGroupe(Groupe g){ - if(g!=null) - g=this.promo .refreshALL(g); - this.panGroupe.removeAll(); - this.fenGr=new FenetreGroupe(g, this, this.promo.getGroupesOfEtudiant(this.Selected)); - this.fenEtu=new FenetreEtudiant(g, this.Selected, this); + if(g!=null){ + g=this.promo.refreshALL(g); + this.fenGr=new FenetreGroupe(g, this, this.promo.getGroupesOfEtudiant(Selected)); + }else{ + this.fenGr=new FenetreGroupe(g, this, null); + } this.fenetre.getContentPane().removeAll(); - this.panGroupe.add(this.fenGr.getPan()); - this.panGroupe.revalidate(); - this.fenetre.add(this.panGroupe); + this.fenEtu=new FenetreEtudiant(g, Selected, this); + this.fenetre.getContentPane().removeAll(); + this.fenetre.add(this.fenGr.getPan()); JScrollPane scroll=new JScrollPane(this.fenEtu.getPan()); scroll.getVerticalScrollBar().setUnitIncrement(15); this.fenetre.add(scroll); diff --git a/src/fr/iutfbleau/projetIHM2022FI2/MP/PROF/Model/ModelProf.java b/src/fr/iutfbleau/projetIHM2022FI2/MP/PROF/Model/ModelProf.java index 45feaa0..3b248c3 100644 --- a/src/fr/iutfbleau/projetIHM2022FI2/MP/PROF/Model/ModelProf.java +++ b/src/fr/iutfbleau/projetIHM2022FI2/MP/PROF/Model/ModelProf.java @@ -9,8 +9,8 @@ import fr.iutfbleau.projetIHM2022FI2.API.Changement; import fr.iutfbleau.projetIHM2022FI2.API.Etudiant; import fr.iutfbleau.projetIHM2022FI2.API.Groupe; import fr.iutfbleau.projetIHM2022FI2.API.TypeGroupe; -import fr.iutfbleau.projetIHM2022FI2.MP.AbstractChangementFactoryNP; -import fr.iutfbleau.projetIHM2022FI2.MP.AbstractGroupeFactoryNP; +import fr.iutfbleau.projetIHM2022FI2.MP.AbstractChangementFactoryPersistant; +import fr.iutfbleau.projetIHM2022FI2.MP.AbstractGroupeFactoryPersistant; import fr.iutfbleau.projetIHM2022FI2.MP.PROF.View.FenetreEtudiant; import fr.iutfbleau.projetIHM2022FI2.MP.PROF.View.FenetreGroupe; import fr.iutfbleau.projetIHM2022FI2.API.Model; @@ -22,8 +22,6 @@ import fr.iutfbleau.projetIHM2022FI2.Permanent.View.Chargement; */ public class ModelProf implements Model{ - // le panel qui contient la fenetre de groupe - private JPanel panGroupe; // la fenetre de groupe private FenetreGroupe fenGr; //la fenetre d'etudiant @@ -47,22 +45,17 @@ public class ModelProf implements Model{ this.fenetre.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); this.fenetre.setMinimumSize(this.fenetre.getSize()); Chargement ch=new Chargement(this.fenetre); - this.promo=new AbstractGroupeFactoryNP(this.fenetre); + this.promo=new AbstractGroupeFactoryPersistant(this.fenetre); if(this.promo.getPromotion()==null){ this.promo=null; } ch.dispose(); this.fenetre.setVisible(true); if(this.promo==null){ - this.fenGr=new FenetreGroupe(null, this); - this.fenEtu=new FenetreEtudiant(null); this.changement=null; }else{ - this.changement=new AbstractChangementFactoryNP(promo, this.fenetre); - this.fenGr=new FenetreGroupe(this.promo.getPromotion(), this); - this.fenEtu=new FenetreEtudiant(this.promo.getPromotion()); + this.changement=new AbstractChangementFactoryPersistant(promo, this.fenetre); } - this.panGroupe=new JPanel(new GridLayout(1,1)); if(this.promo!=null){ this.showGroupe(this.promo.getPromotion()); }else{ @@ -78,19 +71,18 @@ public class ModelProf implements Model{ */ public void showGroupe(Groupe g){ if(g!=null) - g=this.promo .refreshALL(g); - this.panGroupe.removeAll(); + g=this.promo.refreshALL(g); + this.fenetre.getContentPane().removeAll(); this.fenGr=new FenetreGroupe(g, this); this.fenEtu=new FenetreEtudiant(g); this.fenetre.getContentPane().removeAll(); - this.panGroupe.add(this.fenGr.getPan()); - this.panGroupe.revalidate(); - this.fenetre.add(this.panGroupe); + this.fenetre.add(this.fenGr.getPan()); JScrollPane scroll=new JScrollPane(this.fenEtu.getPan()); scroll.getVerticalScrollBar().setUnitIncrement(15); this.fenetre.add(scroll); this.fenetre.revalidate(); } + @Override /** * getteur de la fenetre diff --git a/src/fr/iutfbleau/projetIHM2022FI2/MP/ROOT/Model/ModelRoot.java b/src/fr/iutfbleau/projetIHM2022FI2/MP/ROOT/Model/ModelRoot.java index 922fece..8b7c73e 100644 --- a/src/fr/iutfbleau/projetIHM2022FI2/MP/ROOT/Model/ModelRoot.java +++ b/src/fr/iutfbleau/projetIHM2022FI2/MP/ROOT/Model/ModelRoot.java @@ -11,8 +11,8 @@ import fr.iutfbleau.projetIHM2022FI2.API.Etudiant; import fr.iutfbleau.projetIHM2022FI2.API.Groupe; import fr.iutfbleau.projetIHM2022FI2.API.Model; import fr.iutfbleau.projetIHM2022FI2.API.TypeGroupe; -import fr.iutfbleau.projetIHM2022FI2.MP.AbstractChangementFactoryNP; -import fr.iutfbleau.projetIHM2022FI2.MP.AbstractGroupeFactoryNP; +import fr.iutfbleau.projetIHM2022FI2.MP.AbstractChangementFactoryPersistant; +import fr.iutfbleau.projetIHM2022FI2.MP.AbstractGroupeFactoryPersistant; import fr.iutfbleau.projetIHM2022FI2.MP.ROOT.View.FenetreChangement; import fr.iutfbleau.projetIHM2022FI2.MP.ROOT.View.FenetreEtudiant; import fr.iutfbleau.projetIHM2022FI2.MP.ROOT.View.FenetreGroupe; @@ -26,8 +26,6 @@ import fr.iutfbleau.projetIHM2022FI2.Permanent.View.Chargement; */ public class ModelRoot implements Model{ - // le panel qui contient la fenetre de groupe - private JPanel panGroupe; // la fenetre de groupe private FenetreGroupe fenGr; //la fenetre d'etudiant @@ -53,19 +51,14 @@ public class ModelRoot implements Model{ this.fenetre.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); this.fenetre.setMinimumSize(this.fenetre.getSize()); Chargement ch=new Chargement(this.fenetre); - this.promo=new AbstractGroupeFactoryNP(this.fenetre); + this.promo=new AbstractGroupeFactoryPersistant(this.fenetre); ch.dispose(); this.fenetre.setVisible(true); if(this.promo.getPromotion()==null){ this.changement=null; - this.fenGr=new FenetreGroupe(null, this); - this.fenEtu=new FenetreEtudiant(null, this); }else{ - this.fenGr=new FenetreGroupe(this.promo.getPromotion(), this); - this.fenEtu=new FenetreEtudiant(this.promo.getPromotion(), this); - this.changement=new AbstractChangementFactoryNP(this.promo, this.fenetre); + this.changement=new AbstractChangementFactoryPersistant(this.promo, this.fenetre); } - this.panGroupe=new JPanel(new GridLayout(1,1)); if(this.promo.getPromotion()!=null){ this.showGroupe(this.promo.getPromotion()); }else{ @@ -82,13 +75,11 @@ public class ModelRoot implements Model{ public void showGroupe(Groupe g){ if(g!=null) g=this.promo.refreshALL(g); - this.panGroupe.removeAll(); + this.fenetre.getContentPane().removeAll(); this.fenGr=new FenetreGroupe(g, this); this.fenEtu=new FenetreEtudiant(g, this); this.fenetre.getContentPane().removeAll(); - this.panGroupe.add(this.fenGr.getPan()); - this.panGroupe.revalidate(); - this.fenetre.add(this.panGroupe); + this.fenetre.add(this.fenGr.getPan()); JScrollPane scroll=new JScrollPane(this.fenEtu.getPan()); scroll.getVerticalScrollBar().setUnitIncrement(15); this.fenetre.add(scroll); @@ -304,8 +295,8 @@ public class ModelRoot implements Model{ @Override public void addPromo(int min, int max, String name, Set ajout){ Chargement ch=new Chargement(this.fenetre); - this.promo=new AbstractGroupeFactoryNP(name, min, max, this.fenetre); - this.changement=new AbstractChangementFactoryNP(this.promo, this.fenetre); + this.promo=new AbstractGroupeFactoryPersistant(name, min, max, this.fenetre); + this.changement=new AbstractChangementFactoryPersistant(this.promo, this.fenetre); this.fenetre.setVisible(false); for(Etudiant e:ajout){ this.addEtudiant(this.promo.getPromotion(), e);