diff --git a/java/APIGroupe/Makefile b/java/APIGroupe/Makefile index c6e7f4c..8005841 100644 --- a/java/APIGroupe/Makefile +++ b/java/APIGroupe/Makefile @@ -102,12 +102,6 @@ ${BUILD}/MNP/AbstractChangementFactoryNP.class : ${SRC}/MNP/AbstractChangementFa ## ROOT ## -## Util ### - -${BUILD}/ROOT/Util/BD.class : ${SRC}/ROOT/Util/BD.java - ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Util/BD.java - - ## View ## @@ -128,8 +122,6 @@ ${BUILD}/ROOT/View/PanelEtudiant.class : ${SRC}/ROOT/View/PanelEtudiant.java \ ${BUILD}/ROOT/Controller/ActionListenerSuprEtu.class ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/View/PanelEtudiant.java -${BUILD}/ROOT/View/Chargement.class : ${SRC}/ROOT/View/Chargement.java - ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/View/Chargement.java ${BUILD}/ROOT/View/FenetreSelectionEtu.class : ${SRC}/ROOT/View/FenetreSelectionEtu.java \ ${BUILD}/ROOT/Controller/SelecteurEtudiant.class \ @@ -171,8 +163,7 @@ ${BUILD}/ROOT/Controller/ActionListenerNouveauEtu.class : ${SRC}/ROOT/Controller ${BUILD}/ROOT/Model/Model.class : ${SRC}/ROOT/Model/Model.java \ ${BUILD}/ROOT/View/FenetreGroupe.class \ ${BUILD}/ROOT/View/FenetreEtudiant.class \ - ${BUILD}/ROOT/View/Chargement.class \ - ${BUILD}/ROOT/Util/BD.class + ${BUILD}/Permanent/View/Chargement.class ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Model/Model.java @@ -182,11 +173,6 @@ ${BUILD}/ROOT/Model/Model.class : ${SRC}/ROOT/Model/Model.java \ ## ETU ## -## Util ### - -${BUILD}/ETU/Util/BD.class : ${SRC}/ETU/Util/BD.java - ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ETU/Util/BD.java - ## View ## @@ -205,8 +191,6 @@ ${BUILD}/ETU/View/FenetreEtudiant.class :${SRC}/ETU/View/FenetreEtudiant.java \ ${BUILD}/ETU/View/PanelEtudiant.class : ${SRC}/ETU/View/PanelEtudiant.java ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ETU/View/PanelEtudiant.java -${BUILD}/ETU/View/Chargement.class : ${SRC}/ETU/View/Chargement.java - ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ETU/View/Chargement.java ## Controller ## @@ -231,17 +215,16 @@ ${BUILD}/ETU/Controller/ObservateurChangeGroupe.class : ${SRC}/ETU/Controller/Ob ${BUILD}/ETU/Model/Model.class : ${SRC}/ETU/Model/Model.java \ ${BUILD}/ETU/View/FenetreGroupe.class \ ${BUILD}/ETU/View/FenetreEtudiant.class \ - ${BUILD}/ETU/View/Chargement.class \ - ${BUILD}/ETU/Util/BD.class + ${BUILD}/Permanent/View/Chargement.class ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ETU/Model/Model.java -## TEST ## +## Permanent ## - ${BUILD}/Test/Connexion.class : ${SRC}/Test/Connexion.java - ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Test/Connexion.java + ${BUILD}/Permanent/Connexion.class : ${SRC}/Permanent/Connexion.java + ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Permanent/View/Connexion.java - ${BUILD}/Test/TestTexteMNP.class : ${SRC}/Test/TestTexteMNP.java \ + ${BUILD}/Permanent/TestTexteMNP.class : ${SRC}/Permanent/TestTexteMNP.java \ ${BUILD}/MNP/EtudiantNP.class \ ${BUILD}/MNP/GroupeNP.class \ ${BUILD}/MNP/ChangementNP.class \ @@ -249,14 +232,23 @@ ${BUILD}/ETU/Model/Model.class : ${SRC}/ETU/Model/Model.java \ ${BUILD}/MNP/AbstractChangementFactoryNP.class \ ${BUILD}/ROOT/Model/Model.class \ ${BUILD}/ETU/Model/Model.class \ - ${BUILD}/Test/Connexion.class \ - ${BUILD}/Test/User.class - ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Test/TestTexteMNP.java + ${BUILD}/Permanent/View/Connexion.class \ + ${BUILD}/Permanent/Util/User.class + ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Permanent/TestTexteMNP.java +## View ## -${BUILD}/Test/User.class : ${SRC}/Test/User.java - ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Test/User.java +${BUILD}/Permanent/View/Chargement.class : ${SRC}/Permanent/View/Chargement.java + ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Permanent//View/Chargement.java + +${BUILD}/Permanent/View/Connexion.class : ${SRC}/Permanent/View/Connexion.java + ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Permanent/View/Connexion.java + +## Util  ## + +${BUILD}/Permanent/Util/User.class : ${SRC}/Permanent/Util/User.java + ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Permanent/Util/User.java # ## JARS ## - ${JAR_MNP} : ${BUILD}/Test/TestTexteMNP.class - ${JAR} cfme ${JAR_MNP} Manifest.txt fr/iutfbleau/projetIHM2022FI2/Test/TestTexteMNP res/ -C build fr + ${JAR_MNP} : ${BUILD}/Permanent/TestTexteMNP.class + ${JAR} cfme ${JAR_MNP} Manifest.txt fr/iutfbleau/projetIHM2022FI2/Permanent/TestTexteMNP res/ -C build fr diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.java index ed42a0f..37959ee 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.java @@ -120,4 +120,10 @@ public interface AbstractGroupeFactory { */ public boolean changeNameGroupe(Groupe g, String name); + /** + * refresh le Groupe ainsi que ses etudiants + * @param g le groupe + * @return le groupe refresh/un parent si il a été refresh + */ + public Groupe refreshALL(Groupe g); } diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ETU/Model/Model.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ETU/Model/Model.java index 7339460..32ffaad 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ETU/Model/Model.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ETU/Model/Model.java @@ -1,14 +1,8 @@ package fr.iutfbleau.projetIHM2022FI2.ETU.Model; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.util.HashSet; -import java.util.Set; -import java.sql.Connection; -import java.sql.ResultSet; - import javax.swing.*; import java.awt.*; - +import java.util.Set; +import java.util.HashSet; import fr.iutfbleau.projetIHM2022FI2.API.AbstractChangementFactory; import fr.iutfbleau.projetIHM2022FI2.API.AbstractGroupeFactory; import fr.iutfbleau.projetIHM2022FI2.API.Etudiant; @@ -16,10 +10,8 @@ import fr.iutfbleau.projetIHM2022FI2.API.Groupe; import fr.iutfbleau.projetIHM2022FI2.API.TypeGroupe; import fr.iutfbleau.projetIHM2022FI2.MNP.AbstractChangementFactoryNP; import fr.iutfbleau.projetIHM2022FI2.MNP.AbstractGroupeFactoryNP; -import fr.iutfbleau.projetIHM2022FI2.MNP.GroupeNP; +import fr.iutfbleau.projetIHM2022FI2.Permanent.View.Chargement; import fr.iutfbleau.projetIHM2022FI2.ETU.Controller.ObservateurFenetre; -import fr.iutfbleau.projetIHM2022FI2.ETU.Util.BD; -import fr.iutfbleau.projetIHM2022FI2.ETU.View.Chargement; import fr.iutfbleau.projetIHM2022FI2.ETU.View.FenetreEtudiant; import fr.iutfbleau.projetIHM2022FI2.ETU.View.FenetreGroupe; @@ -36,7 +28,6 @@ public class Model{ private JFrame fenetre; private Etudiant Selected; - private BD bd; public Model(){ this.fenetre=new JFrame(); this.fenetre.setSize(1200, 720); @@ -45,9 +36,11 @@ public class Model{ this.fenetre.setLayout(new GridLayout(1,2)); this.fenetre.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); this.fenetre.setMinimumSize(this.fenetre.getSize()); - this.bd=new BD(this.fenetre); Chargement ch=new Chargement(this.fenetre); - this.promo=this.getPromo(ch); + this.promo=new AbstractGroupeFactoryNP(this.fenetre); + if(this.promo.getPromotion()==null){ + this.promo=null; + } ch.dispose(); this.fenetre.setVisible(true); this.initEtu(null); @@ -68,13 +61,14 @@ public class Model{ } } + /** * Fonction pour refresh/changer de groupe d'affichage * @param g le groupe a afficher */ public void showGroupe(Groupe g){ if(g!=null) - g=this.bd.refreshALL(g); + 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); @@ -94,58 +88,9 @@ public void showGroupe(Groupe g){ public JFrame getFenetre() { return fenetre; } - - - /** - * Fonction permettant d'initialiser l'AbstractFactory de la promo - * avec la Base de donné - * @param Chargement: pour indiquer la progression du chargement - */ - private AbstractGroupeFactory getPromo(Chargement chargement){ - AbstractGroupeFactory agf=null; - Connection cnx=this.bd.cnx(); - //on récupère le Groupe de la BD n'ayant pas de Parent (La promo donc) - try{ - PreparedStatement pst = cnx.prepareStatement( - "SELECT `id`, `nom`, `min`, `max`, `value`, `id-parent` FROM `Groupe` join `TYPE` on Groupe.Type=TYPE.name ORDER BY Groupe.id ASC;"); - ResultSet rs = pst.executeQuery(); - rs=pst.executeQuery(); - rs.last(); - int nbgrp=rs.getRow(); - rs=pst.executeQuery(); - try{ - //Si il existe bien une promotion - if(rs.next()){ - //On créer le groupe de promo - Groupe groupe=new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), null); - //On lui ajoute tout ses sous-groupe - this.init(groupe, (100/nbgrp), chargement); - //On créer la Factory - agf=new AbstractGroupeFactoryNP(groupe, this.fenetre); - }else{ - //Si aucune ligne et donc pas de promo: - this.promo=null; - } - }catch(SQLException e){ - } - rs.close(); - pst.close(); - }catch(SQLException e){ - } - this.bd.close(cnx); - return agf; - } public Set getEtudiant(){ - return this.bd.getEtudiant(); - } - - private void init(Groupe g, int pourcentage, Chargement ch){ - this.bd.refreshALL(g); - ch.addPourcent(pourcentage+1); - for(Groupe gr:g.getSousGroupes()){ - this.init(gr, pourcentage, ch); - } + return this.promo.getPromotion().getEtudiants(); } private void initEtu(String err){ @@ -179,208 +124,13 @@ public void showGroupe(Groupe g){ this.initEtu("Etudiant introuvable"); } - - - - - // *********************** - // FONCTION POUR SUPRIMER UN ETUDIANT - // *********************** - - - public boolean deleteEtu(Etudiant e){ - if(this.deleteEtutoChildren(e, this.fenGr.getG())){ - this.promo.dropFromGroupe(this.fenGr.getG(), e); - this.showGroupe(this.fenGr.getG()); - return true; - }else{ - return false; - } - } - - private boolean deleteEtutoChildren(Etudiant e, Groupe g){ - if(g.getMax() ajout){ - Chargement ch=new Chargement(this.fenetre); - this.fenetre.setVisible(false); - //on creer le groupe - this.promo.createGroupe(g, name, min, max); - Groupe creer=null; - //on le recupere - for(Groupe gr:g.getSousGroupes()){ - if(gr.getName()==name){ - creer=gr; - break; - } - } - //on y ajoute les étudiant - int n=0; - for(Etudiant e:ajout){ - if(this.addEtudiant(creer, e)==false) - n++; - } - creer=this.bd.refreshALL(creer); - ch.dispose(); - this.fenetre.setVisible(true); - if(n>0) - JOptionPane.showMessageDialog(this.fenetre, "erreur impossible d'ajouter "+n+" etudiants par manque de place dans le groupe de ses parents", "erreur", JOptionPane.ERROR_MESSAGE); - //Si finalement avec les etudiants qui n'ont pas pus être ajouter le min n'est pas atteint - if(creer.getEtudiants().size()+1<=creer.getMin()){ - //On le supprime - this.promo.deleteGroupe(creer); - JOptionPane.showMessageDialog(this.fenetre, "en raison du manque d'etudiant pour le nombre min le groupe n'a pas pus être créer", "errer", JOptionPane.ERROR_MESSAGE); - } - this.showGroupe(g); - } - - 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(promo, this.fenetre); - this.fenetre.setVisible(false); - ch.addPourcent(20); - int pourcent=85/ajout.size(); - for(Etudiant e:ajout){ - this.addEtudiant(this.promo.getPromotion(), e); - ch.addPourcent(pourcent); - } - ch.dispose(); - this.fenetre.setVisible(true); - this.showGroupe(this.promo.getPromotion()); - } - - // ************************** // FONCTION POUR LES CHANGEMENTS // ****************************** public void changeGroupe(Etudiant e, Groupe b){ if(b==null) return; - b=this.bd.refreshGroupe(b); + b=this.promo.refreshALL(b); if(b.getEtudiants()!=null && b.getMax()>b.getEtudiants().size()+1){ this.changement.createChangement(this.fenGr.getG(), e, b); }else{ @@ -390,7 +140,7 @@ public void showGroupe(Groupe g){ } public Set getGroupePartition(){ - this.bd.refreshGroupe(this.fenGr.getG().getPointPoint()); + this.promo.refreshALL(this.fenGr.getG().getPointPoint()); Set retour=new HashSet<>(); if(this.fenGr.getG().getPointPoint().getType()!=TypeGroupe.PARTITION) throw new IllegalStateException("impossible de changer un étudiant d'un groupe ne provenant pas d'une partition"); diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ETU/Util/BD.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ETU/Util/BD.java deleted file mode 100644 index ff37f99..0000000 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ETU/Util/BD.java +++ /dev/null @@ -1,228 +0,0 @@ -package fr.iutfbleau.projetIHM2022FI2.ETU.Util; - -import java.sql.Connection; -import javax.swing.JFrame; -import javax.swing.JOptionPane; -import org.mariadb.jdbc.*; -import java.sql.DriverManager; -import java.sql.ResultSet; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.util.Set; -import java.util.LinkedHashSet; -import fr.iutfbleau.projetIHM2022FI2.API.*; -import fr.iutfbleau.projetIHM2022FI2.MNP.*; -import fr.iutfbleau.projetIHM2022FI2.ETU.View.Chargement; - -/** - * Class relative a la BD - */ -public class BD { - private JFrame fenetre; - public BD(JFrame fenetre){ - this.fenetre=fenetre; - } - - public Connection cnx(){ - //On se Connecte a la BD - try{ - Class.forName("org.mariadb.jdbc.Driver"); - Connection cnx = DriverManager.getConnection( - "jdbc:mariadb://dwarves.iut-fbleau.fr/chaignea", - "chaignea", "Chaigneauphpmyadmin"); - return cnx; - }catch(Exception e){ - if(this.erreurCO()==true){ - return this.cnx(); - } - } - return null; - } - - /** - * Erreur de connection - * @return true si posssible - */ - 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; - }else{ - this.fenetre.dispose(); - return false; - } - } - - public void close(AutoCloseable clos){ - try{ - clos.close(); - }catch(Exception e){ - if(this.erreurCO()==true) - this.close(clos); - } - } - - /** - * 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{ - //On récupere les Groupe qui ont le parent :g - PreparedStatement pst= cnx.prepareStatement( - "SELECT `id`, `nom`, `min`, `max`, `value`, `id-parent` FROM `Groupe` join `TYPE` on Groupe.Type=TYPE.name where Groupe.`id-parent`=? and Groupe.id!=Groupe.`id-parent`;"); - pst.setString(1, String.valueOf(g.getId())); - ResultSet rs=pst.executeQuery(); - rs=pst.executeQuery(); - //autrement si le groupe as des sous groupe - while(rs.next()){ - //on les ajoute - Groupe nouveau=new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), g); - g.addSousGroupe(nouveau); - //on ajoute les sous groupe des sous-groupe - } - rs.close(); - }catch(SQLException e){ - if(this.erreurCO()) - this.addSousGroupe(g, cnx); - } - } - - /** - * Fonction recursive ajoutant les étudiant aux groupe de la promo - * @param g le groupe pour qui ajouter les Etudiant - * @param cnx la connection (evite de surcharger la BD) - */ - private void addBDEtudiant(Groupe g, Connection cnx){ - try{ - //On récupère les etudiants contenue du groupe - PreparedStatement pst; - //Si c'est la promo - pst= cnx.prepareStatement("SELECT Etudiant.nom, Etudiant.prenom, Etudiant.id FROM `CONTIENT` JOIN Etudiant on CONTIENT.idEt=Etudiant.id WHERE CONTIENT.idGroupe=? ORDER BY Etudiant.id ASC"); - pst.setInt(1, g.getId()); - ResultSet rs=pst.executeQuery(); - //Pour tous les étudiants - while(rs.next()){ - boolean exist=false; - //autrement on recupere l'etudiant - for(Etudiant e: g.getPointPoint().getEtudiants()){ - if(e.getId()==rs.getInt(3)){ - exist=true; - g.addEtudiant(e); - break; - } - } - if(exist==false){ - g.addEtudiant(new EtudiantNP(rs.getString(1), rs.getString(2), rs.getInt(3))); - } - } - rs.close(); - pst.close(); - }catch(SQLException e){ - if(this.erreurCO()) - this.addBDEtudiant(g, cnx); - } - } - - /** - * 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 - * @return le groupe refresh - */ - public Groupe refreshGroupe(Groupe g){ - Connection cnx=this.cnx(); - g=this.refreshGroupe(g, cnx); - this.close(cnx); - return 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 - * @return le groupe refresh - */ - private Groupe refreshGroupe(Groupe g, Connection cnx){ - - try{ - PreparedStatement pst = cnx.prepareStatement( - "SELECT `id`, `nom`, `min`, `max`, `value`, `id-parent` FROM `Groupe` join `TYPE` on Groupe.Type=TYPE.name where Groupe.`id`=? OR Groupe.`id-parent`=? ORDER BY Groupe.id ASC;"); - pst.setString(1, String.valueOf(g.getId())); - pst.setString(2, String.valueOf(g.getId())); - ResultSet rs=pst.executeQuery(); - if(rs.next()){ - if(rs.getString(2)!=g.getName()){ - g.setName(rs.getString(2)); - } - Set it=new LinkedHashSet<>(); - for(Groupe gr:g.getSousGroupes()){ - it.add(gr); - } - for(Groupe gr:it){ - g.removeSousGroupe(gr); - } - Set et=new LinkedHashSet<>(); - for(Etudiant gr:g.getEtudiants()){ - et.add(gr); - } - for(Etudiant gr:et){ - g.removeEtudiant(gr); - } - this.addSousGroupe(g, cnx); - }else{ - if(g==g.getPointPoint()){ - g=null; - }else{ - g=this.refreshGroupe(g.getPointPoint(), cnx); - } - } - rs.close(); - }catch(SQLException e){ - if(this.erreurCO()) - this.refreshGroupe(g, cnx); - } - return g; - } - - /** - * refresh le Groupe ainsi que ses etudiants - * @param g le groupe - * @return le groupe refresh/un parent si il a été refresh - */ - public Groupe refreshALL(Groupe g){ - Connection cnx = this.cnx(); - g=this.refreshGroupe(g, cnx); - Set et=new LinkedHashSet<>(); - for(Etudiant gr:g.getEtudiants()){ - et.add(gr); - } - for(Etudiant gr:et){ - g.removeEtudiant(gr); - } - this.addBDEtudiant(g, cnx); - this.close(cnx); - return g; - } - - public Set getEtudiant(){ - Connection cnx=this.cnx(); - Set ret=new LinkedHashSet<>(); - try{ - PreparedStatement pst=cnx.prepareStatement("SELECT * FROM Etudiant"); - ResultSet rs=pst.executeQuery(); - while(rs.next()){ - ret.add(new EtudiantNP(rs.getString(2), rs.getString(3), rs.getInt(1))); - } - pst.close(); - rs.close(); - }catch(SQLException e){ - if(this.erreurCO()) - return this.getEtudiant(); - } - this.close(cnx); - return ret; - } -} diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractChangementFactoryNP.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractChangementFactoryNP.java index b222994..fe9a735 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractChangementFactoryNP.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractChangementFactoryNP.java @@ -27,7 +27,8 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory { 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; - this.brain=new HashMap(); + this.brain=new HashMap(); + this.getChange(); } public AbstractChangementFactoryNP(AbstractGroupeFactory agf, JFrame fenetre, Set liste){ @@ -37,7 +38,8 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory { this.brain=new HashMap(); for(Changement ch:liste){ this.brain.put(ch.getId(), ch); - } + } + this.getChange(); } @@ -207,4 +209,40 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory { this.close(clos); } } + + private void getChange(){ + Connection cnx=this.cnx(); + try{ + PreparedStatement pst=cnx.prepareStatement("SELECT * FROM `Changement` NATURAL JOIN Etudiant; "); + ResultSet rs=pst.executeQuery(); + while(rs.next()){ + Groupe[] ab=new Groupe[2]; + this.getGroupe(rs.getInt(2), rs.getInt(3), ab, this.agf.getPromotion()); + Etudiant e=new EtudiantNP(rs.getString(5), rs.getString(6), rs.getInt(4)); + this.brain.put(rs.getInt(1), new ChangementNP(ab[0], e, ab[1], rs.getInt(1))); + } + pst.close(); + }catch(SQLException e){ + if(this.erreurCO()) + this.getChange(); + return; + } + this.close(cnx); + } + + private void getGroupe(int idA, int idB, Groupe[] retour, Groupe tofind){ + if(retour[0]!=null && retour[1]!=null) + return; + if(tofind.getId()==idA){ + retour[0]=tofind; + } + if(tofind.getId()==idB){ + retour[1]=tofind; + } + for(Groupe sous:tofind.getSousGroupes()){ + this.getGroupe(idA, idB, retour, sous); + } + } + + } diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java index c30b6d2..9e3d4d8 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java @@ -29,11 +29,10 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory { /** * Le constructeur fabrique le groupe promotion déja plein (utilisé en Modèle persistant de donné). */ - public AbstractGroupeFactoryNP(Groupe promo, JFrame fenetre){ - this.promo=promo; + public AbstractGroupeFactoryNP(JFrame fenetre){ this.fenetre=fenetre; this.brain=new HashMap(); - this.addSousGroupe(this.promo); + this.init(); } /** @@ -49,18 +48,6 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory { this.saveGroupe(promo); } - /** - * permet d'ajouter les sous groupe lors de l'initialisation de la promo - * avec un groupe déja créer - * - * @param g le groupe (methode récursive) - */ - private void addSousGroupe(Groupe g){ - this.brain.put(g.getId(), g); - for(Groupe s:g.getSousGroupes()){ - this.addSousGroupe(s); - } - } /** * Test plutôt optimiste. Si la clé est identique alors on fait comme si c'était le bon groupe. @@ -118,10 +105,9 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory { */ public void deleteGroupe(Groupe g){ Objects.requireNonNull(g,"On ne peut pas enlever un groupe null car null n'est pas un groupe autorisé"); - //if (!this.knows(g)){ - //throw new IllegalArgumentException("Impossible d'enlever un groupe inconnu"); - //possible maintenant - //} + if (!this.knows(g)){ + throw new IllegalArgumentException("Impossible d'enlever un groupe inconnu"); + } g.getPointPoint().removeSousGroupe(g); this.brain.remove(Integer.valueOf(g.getId())); this.suprGroupe(g); @@ -141,10 +127,9 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory { Objects.requireNonNull(pere,"Le groupe pere ne peut pas être null"); Objects.requireNonNull(name,"Le nouveau groupe ne peut pas avoir null comme nom"); - //if (!this.knows(pere)){ - // throw new IllegalArgumentException("Interdit d'ajouter un fils à un groupe inconnu"); - //Possible maintenant - //} + if (!this.knows(pere)){ + throw new IllegalArgumentException("Interdit d'ajouter un fils à un groupe inconnu"); + } if (pere.getType().equals(TypeGroupe.PARTITION)){ throw new IllegalArgumentException("Impossible d'ajouter un groupe à une parition. Il faut utiliser createPartition pour créer une partition"); } @@ -177,10 +162,9 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory { public void createPartition(Groupe pere, String name, int n){ Objects.requireNonNull(pere,"Le groupe pere ne peut pas être null"); Objects.requireNonNull(name,"Le nouveau groupe ne peut pas avoir null comme nom"); - //if (!this.knows(pere)){ - //throw new IllegalArgumentException("Impossible de partitionner ce groupe inconnu"); - //possible maintenant - //} + if (!this.knows(pere)){ + throw new IllegalArgumentException("Impossible de partitionner ce groupe inconnu"); + } if (pere.getType().equals(TypeGroupe.PARTITION)){ throw new IllegalArgumentException("Impossible de créer une partition à ce niveau. Il faut soit repartitionner le groupe au dessus, soit partitionner une partition en dessous."); } @@ -224,10 +208,9 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory { public void addToGroupe(Groupe g, Etudiant e){ Objects.requireNonNull(g,"Le groupe ne peut pas être null"); Objects.requireNonNull(e,"L'étudiant ne peut pas être null"); - //if (!this.knows(g)){ - //throw new IllegalArgumentException("Impossible d'ajouter l'étudiant car le est groupe inconnu"); - //rendu possible maintenant par la syncronisation en temps réel - //} + if (!this.knows(g)){ + throw new IllegalArgumentException("Impossible d'ajouter l'étudiant car le est groupe inconnu"); + } g.addEtudiant(e); this.saveEtu(e, g); } @@ -245,10 +228,9 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory { public void dropFromGroupe(Groupe g, Etudiant e){ Objects.requireNonNull(g,"Le groupe ne peut pas être null"); Objects.requireNonNull(e,"L'étudiant ne peut pas être null"); - //if (!this.knows(g)){ - //throw new IllegalArgumentException("Impossible de suprimer l'étudiant car le est groupe inconnu"); - //Possible maintenant - //} + if (!this.knows(g)){ + throw new IllegalArgumentException("Impossible de suprimer l'étudiant car le est groupe inconnu"); + } g.removeEtudiant(e); this.deleteEtu(e, g); } @@ -268,7 +250,7 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory { public Set getEtudiants(String nomEtu){ Set s=new LinkedHashSet<>(); for(Etudiant e:this.getPromotion().getEtudiants()){ - if((e.getNom()).equals(nomEtu.toString())){ + if((e.getNom()).contains(nomEtu)){ s.add(e); } } @@ -284,11 +266,13 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory { * @throws java.lang.NullPointerException si le String est null. */ public Set getGroupesOfEtudiant(Etudiant etu){ + if(etu==null) + throw new NullPointerException(); Collection s= this.brain.values(); Set ret=new LinkedHashSet(); for(Groupe g: s){ for(Etudiant e: g.getEtudiants()){ - if(e==etu){ + if(etu==e){ ret.add(g); break; } @@ -476,4 +460,191 @@ private boolean saveEtu(Etudiant etudiant, Groupe g){ this.close(cnx); return true; } + + + + /***************************** + * FONCTION POUR INITIALISER LA FACTORY AVEC LA BD + * ******************************** + */ + private void init(){ + Connection cnx=this.cnx(); + //on récupère le Groupe de la BD n'ayant pas de Parent (La promo donc) + try{ + PreparedStatement pst = cnx.prepareStatement( + "SELECT `id`, `nom`, `min`, `max`, `value`, `id-parent` FROM `Groupe` join `TYPE` on Groupe.Type=TYPE.name ORDER BY Groupe.id ASC;"); + ResultSet rs = pst.executeQuery(); + rs=pst.executeQuery(); + try{ + //Si il existe bien une promotion + if(rs.next()){ + //On créer le groupe de promo + this.promo=new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), null); + //on ajoute au cerveau + this.brain.put(this.promo.getId(), this.promo); + //On lui ajoute tout ses sous-groupe + this.addSousGroupe(this.promo, cnx); + //On ajoute les étudiants: + for(Groupe sous: this.brain.values()){ + this.addBDEtudiant(sous, cnx); + } + }else{ + //Si aucune ligne et donc pas de promo: + this.promo=null; + } + }catch(SQLException e){ + } + rs.close(); + pst.close(); + }catch(SQLException e){ + } + this.close(cnx); + } + + /** + * 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{ + //On récupere les Groupe qui ont le parent :g + PreparedStatement pst= cnx.prepareStatement( + "SELECT `id`, `nom`, `min`, `max`, `value`, `id-parent` FROM `Groupe` join `TYPE` on Groupe.Type=TYPE.name where Groupe.`id-parent`=? and Groupe.id!=Groupe.`id-parent`;"); + pst.setString(1, String.valueOf(g.getId())); + ResultSet rs=pst.executeQuery(); + rs=pst.executeQuery(); + //autrement si le groupe as des sous groupe + while(rs.next()){ + //on les ajoute + Groupe nouveau=new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), g); + //Si one le connait pas + if(this.brain.get(nouveau.getId())==null){ + this.brain.put(nouveau.getId(), nouveau); + } + g.addSousGroupe(nouveau); + this.addSousGroupe(nouveau, cnx); + //on ajoute les sous groupe des sous-groupe + } + rs.close(); + }catch(SQLException e){ + if(this.erreurCO()) + this.addSousGroupe(g, cnx); + } + } + + /** + * Fonction recursive ajoutant les étudiant aux groupe de la promo + * @param g le groupe pour qui ajouter les Etudiant + * @param cnx la connection (evite de surcharger la BD) + */ + private void addBDEtudiant(Groupe g, Connection cnx){ + try{ + //On récupère les etudiants contenue du groupe + PreparedStatement pst; + //Si c'est la promo + pst= cnx.prepareStatement("SELECT Etudiant.nom, Etudiant.prenom, Etudiant.id FROM `CONTIENT` JOIN Etudiant on CONTIENT.idEt=Etudiant.id WHERE CONTIENT.idGroupe=? ORDER BY Etudiant.id ASC"); + pst.setInt(1, g.getId()); + ResultSet rs=pst.executeQuery(); + //Pour tous les étudiants + while(rs.next()){ + boolean exist=false; + //autrement on recupere l'etudiant + for(Etudiant e: g.getPointPoint().getEtudiants()){ + if(e.getId()==rs.getInt(3)){ + exist=true; + g.addEtudiant(e); + break; + } + } + if(exist==false){ + g.addEtudiant(new EtudiantNP(rs.getString(1), rs.getString(2), rs.getInt(3))); + } + } + rs.close(); + pst.close(); + }catch(SQLException e){ + if(this.erreurCO()) + this.addBDEtudiant(g, cnx); + } + } + + + + + /******************* + * FONCTION POUR REFRESH + * ******************* + */ + + + + + /** + * 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 + * @return le groupe refresh + */ + private Groupe refreshGroupe(Groupe g, Connection cnx){ + try{ + PreparedStatement pst = cnx.prepareStatement( + "SELECT `id`, `nom`, `min`, `max`, `value`, `id-parent` FROM `Groupe` join `TYPE` on Groupe.Type=TYPE.name where Groupe.`id`=? OR Groupe.`id-parent`=? ORDER BY Groupe.id ASC;"); + pst.setString(1, String.valueOf(g.getId())); + pst.setString(2, String.valueOf(g.getId())); + ResultSet rs=pst.executeQuery(); + if(rs.next()){ + if(rs.getString(2)!=g.getName()){ + g.setName(rs.getString(2)); + } + Set it=new LinkedHashSet<>(); + for(Groupe gr:g.getSousGroupes()){ + it.add(gr); + } + for(Groupe gr:it){ + g.removeSousGroupe(gr); + } + Set et=new LinkedHashSet<>(); + for(Etudiant gr:g.getEtudiants()){ + et.add(gr); + } + for(Etudiant gr:et){ + g.removeEtudiant(gr); + } + this.addSousGroupe(g, cnx); + }else{ + if(g==g.getPointPoint()){ + g=null; + }else{ + g=this.refreshGroupe(g.getPointPoint(), cnx); + } + } + rs.close(); + }catch(SQLException e){ + if(this.erreurCO()) + this.refreshGroupe(g, cnx); + } + return g; + } + + /** + * refresh le Groupe ainsi que ses etudiants + * @param g le groupe + * @return le groupe refresh/un parent si il a été refresh + */ + public Groupe refreshALL(Groupe g){ + Connection cnx = this.cnx(); + g=this.refreshGroupe(g, cnx); + Set et=new LinkedHashSet<>(); + for(Etudiant gr:g.getEtudiants()){ + et.add(gr); + } + for(Etudiant gr:et){ + g.removeEtudiant(gr); + } + this.addBDEtudiant(g, cnx); + this.close(cnx); + return g; + } } diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Permanent/TestTexteMNP.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Permanent/TestTexteMNP.java new file mode 100644 index 0000000..c52e3be --- /dev/null +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Permanent/TestTexteMNP.java @@ -0,0 +1,26 @@ +package fr.iutfbleau.projetIHM2022FI2.Permanent; + +import fr.iutfbleau.projetIHM2022FI2.Permanent.Util.User; +import fr.iutfbleau.projetIHM2022FI2.Permanent.View.Connexion; + +public class TestTexteMNP{ + + + public static void main(String[] args) { + User chois=Connexion.seConnecter(); + if(chois!=null){ + if(chois==User.ROOT){ + new fr.iutfbleau.projetIHM2022FI2.ROOT.Model.Model(); + } + if(chois==User.ETUDIANT){ + new fr.iutfbleau.projetIHM2022FI2.ETU.Model.Model(); + } + if(chois==User.PROF){ + + } + } + + } + + +} diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Test/User.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Permanent/Util/User.java similarity index 76% rename from java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Test/User.java rename to java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Permanent/Util/User.java index 2b2fd91..709a015 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Test/User.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Permanent/Util/User.java @@ -1,4 +1,4 @@ -package fr.iutfbleau.projetIHM2022FI2.Test; +package fr.iutfbleau.projetIHM2022FI2.Permanent.Util; public enum User { ROOT("root"), PROF("proffeseur"), ETUDIANT("etudiant"); diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ETU/View/Chargement.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Permanent/View/Chargement.java similarity index 79% rename from java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ETU/View/Chargement.java rename to java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Permanent/View/Chargement.java index edae3cd..eaa3182 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ETU/View/Chargement.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Permanent/View/Chargement.java @@ -1,4 +1,4 @@ -package fr.iutfbleau.projetIHM2022FI2.ETU.View; +package fr.iutfbleau.projetIHM2022FI2.Permanent.View; import java.awt.Graphics; @@ -11,20 +11,16 @@ import java.awt.*; * Class Dessinant les boutons du menu */ public class Chargement extends JComponent{ - private int pourcentage; private JFrame fenetre; public Chargement(JFrame n){ - this.pourcentage=0; this.fenetre=new JFrame(); this.fenetre.setSize(n.getSize()); this.fenetre.setLocation(n.getLocation()); this.fenetre.add(this, BorderLayout.CENTER); - this.repaint(); this.fenetre.setVisible(true); } public void addPourcent(int n){ - this.pourcentage+=n; this.repaint(); } @@ -48,8 +44,5 @@ public class Chargement extends JComponent{ secondPinceau.setFont(new Font(Font.SANS_SERIF, Font.BOLD, (this.getWidth()/10))); FontMetrics metrics = secondPinceau.getFontMetrics(secondPinceau.getFont()); secondPinceau.drawString("CHARGEMENT", (this.getWidth()/2-metrics.stringWidth("CHARGEMENT")/2), (this.getHeight()-metrics.getHeight())/3+metrics.getAscent()); - secondPinceau.drawRect(this.getWidth()/10, this.getHeight()/2, this.getWidth()/10*8, this.getHeight()/10); - float stat=(int) 8.F/100.F*(pourcentage); - secondPinceau.fillRect(this.getWidth()/10, this.getHeight()/2, this.getWidth()/10*((int) stat), this.getHeight()/10); } } \ No newline at end of file diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Permanent/View/Connexion.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Permanent/View/Connexion.java new file mode 100644 index 0000000..33d4718 --- /dev/null +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Permanent/View/Connexion.java @@ -0,0 +1,125 @@ +package fr.iutfbleau.projetIHM2022FI2.Permanent.View; +import javax.swing.*; + +import fr.iutfbleau.projetIHM2022FI2.Permanent.Util.User; + +import java.awt.*; + +public class Connexion extends JOptionPane{ + + public static User seConnecter(){ + + JPanel panel = new JPanel(new GridLayout(2,1)); + User[] use=new User[3]; + use[0]=User.ROOT; + use[1]=User.PROF; + use[2]=User.ETUDIANT; + + JComboBox combo=new JComboBox(use); + + JPanel myPanel = new JPanel(); + JTextField password = new JTextField(15); + myPanel.add(new JLabel("Password:")); + myPanel.add(password); + panel.add(combo); + panel.add(myPanel); + + if(JOptionPane.showConfirmDialog(null, panel, "login", JOptionPane.OK_CANCEL_OPTION) != JOptionPane.OK_OPTION){ + return null; + } + User choose=null; + switch(combo.getSelectedIndex()){ + case 0: + choose=use[0]; + break; + case 1: + choose=use[1]; + break; + case 2: + choose=use[2]; + break; + } + if(choose==User.ROOT){ + if(password.getText().equals("root")){ + return User.ROOT; + } + } + if(choose==User.PROF){ + if(password.getText().equals("prof")){ + return User.PROF; + } + } + if(choose==User.ETUDIANT){ + if(password.getText().equals("etuiutsen")){ + return User.ETUDIANT; + } + } + return Connexion.retry(choose); + } + + private static User retry(User first){ + JPanel panel = new JPanel(new GridLayout(2,1)); + User[] use=new User[3]; + if(first==User.ETUDIANT){ + use[0]=User.ETUDIANT; + use[1]=User.ROOT; + use[2]=User.PROF; + } + + if(first==User.ROOT){ + use[1]=User.ETUDIANT; + use[0]=User.ROOT; + use[2]=User.PROF; + } + + if(first==User.PROF){ + use[1]=User.ETUDIANT; + use[2]=User.ROOT; + use[0]=User.PROF; + } + JComboBox combo=new JComboBox(use); + + JPanel myPanel = new JPanel(); + JTextField password = new JTextField(15); + myPanel.add(new JLabel("Password:")); + myPanel.add(password); + JLabel erre=new JLabel("mdp incorect", SwingConstants.RIGHT); + erre.setForeground(Color.RED); + myPanel.add(erre); + + panel.add(combo); + panel.add(myPanel); + + if(JOptionPane.showConfirmDialog(null, panel, "login", JOptionPane.OK_CANCEL_OPTION) != JOptionPane.OK_OPTION){ + return null; + } + User choose=null; + switch(combo.getSelectedIndex()){ + case 0: + choose=use[0]; + break; + case 1: + choose=use[1]; + break; + case 2: + choose=use[2]; + break; + } + if(choose==User.ROOT){ + if(password.getText().equals("root")){ + return User.ROOT; + } + } + if(choose==User.PROF){ + if(password.getText().equals("prof")){ + return User.PROF; + } + } + if(choose==User.ETUDIANT){ + if(password.getText().equals("etuiutsen")){ + return User.ETUDIANT; + } + } + return Connexion.retry(choose); + } +} diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ROOT/Model/Model.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ROOT/Model/Model.java index 5645dc0..572e3ca 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ROOT/Model/Model.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ROOT/Model/Model.java @@ -1,22 +1,13 @@ package fr.iutfbleau.projetIHM2022FI2.ROOT.Model; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.util.Iterator; import java.util.Set; -import java.sql.Connection; -import java.sql.ResultSet; - import javax.swing.*; import java.awt.*; import fr.iutfbleau.projetIHM2022FI2.API.AbstractGroupeFactory; import fr.iutfbleau.projetIHM2022FI2.API.Etudiant; import fr.iutfbleau.projetIHM2022FI2.API.Groupe; -import fr.iutfbleau.projetIHM2022FI2.API.TypeGroupe; import fr.iutfbleau.projetIHM2022FI2.MNP.AbstractGroupeFactoryNP; -import fr.iutfbleau.projetIHM2022FI2.MNP.GroupeNP; +import fr.iutfbleau.projetIHM2022FI2.Permanent.View.Chargement; import fr.iutfbleau.projetIHM2022FI2.ROOT.Controller.ObservateurFenetre; -import fr.iutfbleau.projetIHM2022FI2.ROOT.Util.BD; -import fr.iutfbleau.projetIHM2022FI2.ROOT.View.Chargement; import fr.iutfbleau.projetIHM2022FI2.ROOT.View.FenetreEtudiant; import fr.iutfbleau.projetIHM2022FI2.ROOT.View.FenetreGroupe; @@ -30,7 +21,6 @@ public class Model{ private FenetreEtudiant fenEtu; private AbstractGroupeFactory promo; private JFrame fenetre; - private BD bd; public Model(){ this.fenetre=new JFrame(); this.fenetre.setSize(1200, 720); @@ -39,9 +29,11 @@ public class Model{ this.fenetre.setLayout(new GridLayout(1,2)); this.fenetre.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); this.fenetre.setMinimumSize(this.fenetre.getSize()); - this.bd=new BD(this.fenetre); Chargement ch=new Chargement(this.fenetre); - this.promo=this.getPromo(ch); + this.promo=new AbstractGroupeFactoryNP(this.fenetre); + if(this.promo.getPromotion()==null){ + this.promo=null; + } ch.dispose(); this.fenetre.setVisible(true); if(this.promo==null){ @@ -65,7 +57,7 @@ public class Model{ */ public void showGroupe(Groupe g){ if(g!=null) - g=this.bd.refreshALL(g); + g=this.promo.refreshALL(g); this.panGroupe.removeAll(); this.fenGr=new FenetreGroupe(g, this); this.fenEtu=new FenetreEtudiant(g, this); @@ -86,64 +78,10 @@ public void showGroupe(Groupe g){ return fenetre; } - - /** - * Fonction permettant d'initialiser l'AbstractFactory de la promo - * avec la Base de donné - * @param Chargement: pour indiquer la progression du chargement - */ - private AbstractGroupeFactory getPromo(Chargement chargement){ - AbstractGroupeFactory agf=null; - Connection cnx=this.bd.cnx(); - //on récupère le Groupe de la BD n'ayant pas de Parent (La promo donc) - try{ - PreparedStatement pst = cnx.prepareStatement( - "SELECT `id`, `nom`, `min`, `max`, `value`, `id-parent` FROM `Groupe` join `TYPE` on Groupe.Type=TYPE.name ORDER BY Groupe.id ASC;"); - ResultSet rs = pst.executeQuery(); - rs=pst.executeQuery(); - rs.last(); - int nbgrp=rs.getRow(); - rs=pst.executeQuery(); - try{ - //Si il existe bien une promotion - if(rs.next()){ - //On créer le groupe de promo - Groupe groupe=new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), null); - //On lui ajoute tout ses sous-groupe - this.init(groupe, (100/nbgrp), chargement); - //On créer la Factory - agf=new AbstractGroupeFactoryNP(groupe, this.fenetre); - }else{ - //Si aucune ligne et donc pas de promo: - this.promo=null; - } - }catch(SQLException e){ - } - rs.close(); - pst.close(); - }catch(SQLException e){ - } - this.bd.close(cnx); - return agf; - } - public Set getEtudiant(){ - return this.bd.getEtudiant(); + return this.promo.getPromotion().getEtudiants(); } - private void init(Groupe g, int pourcentage, Chargement ch){ - this.bd.refreshALL(g); - ch.addPourcent(pourcentage+1); - for(Groupe gr:g.getSousGroupes()){ - this.init(gr, pourcentage, ch); - } - } - - - - - - // *********************** // FONCTION POUR SUPRIMER UN ETUDIANT // *********************** @@ -303,7 +241,7 @@ public void showGroupe(Groupe g){ if(this.addEtudiant(creer, e)==false) n++; } - creer=this.bd.refreshALL(creer); + creer=this.promo.refreshALL(creer); ch.dispose(); this.fenetre.setVisible(true); if(n>0) diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ROOT/Util/BD.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ROOT/Util/BD.java deleted file mode 100644 index 108b5da..0000000 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ROOT/Util/BD.java +++ /dev/null @@ -1,228 +0,0 @@ -package fr.iutfbleau.projetIHM2022FI2.ROOT.Util; - -import java.sql.Connection; -import javax.swing.JFrame; -import javax.swing.JOptionPane; -import org.mariadb.jdbc.*; -import java.sql.DriverManager; -import java.sql.ResultSet; -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.util.Set; -import java.util.LinkedHashSet; -import fr.iutfbleau.projetIHM2022FI2.API.*; -import fr.iutfbleau.projetIHM2022FI2.MNP.*; -import fr.iutfbleau.projetIHM2022FI2.ROOT.View.Chargement; - -/** - * Class relative a la BD - */ -public class BD { - private JFrame fenetre; - public BD(JFrame fenetre){ - this.fenetre=fenetre; - } - - public Connection cnx(){ - //On se Connecte a la BD - try{ - Class.forName("org.mariadb.jdbc.Driver"); - Connection cnx = DriverManager.getConnection( - "jdbc:mariadb://dwarves.iut-fbleau.fr/chaignea", - "chaignea", "Chaigneauphpmyadmin"); - return cnx; - }catch(Exception e){ - if(this.erreurCO()==true){ - return this.cnx(); - } - } - return null; - } - - /** - * Erreur de connection - * @return true si posssible - */ - 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; - }else{ - this.fenetre.dispose(); - return false; - } - } - - public void close(AutoCloseable clos){ - try{ - clos.close(); - }catch(Exception e){ - if(this.erreurCO()==true) - this.close(clos); - } - } - - /** - * 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{ - //On récupere les Groupe qui ont le parent :g - PreparedStatement pst= cnx.prepareStatement( - "SELECT `id`, `nom`, `min`, `max`, `value`, `id-parent` FROM `Groupe` join `TYPE` on Groupe.Type=TYPE.name where Groupe.`id-parent`=? and Groupe.id!=Groupe.`id-parent`;"); - pst.setString(1, String.valueOf(g.getId())); - ResultSet rs=pst.executeQuery(); - rs=pst.executeQuery(); - //autrement si le groupe as des sous groupe - while(rs.next()){ - //on les ajoute - Groupe nouveau=new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), g); - g.addSousGroupe(nouveau); - //on ajoute les sous groupe des sous-groupe - } - rs.close(); - }catch(SQLException e){ - if(this.erreurCO()) - this.addSousGroupe(g, cnx); - } - } - - /** - * Fonction recursive ajoutant les étudiant aux groupe de la promo - * @param g le groupe pour qui ajouter les Etudiant - * @param cnx la connection (evite de surcharger la BD) - */ - private void addBDEtudiant(Groupe g, Connection cnx){ - try{ - //On récupère les etudiants contenue du groupe - PreparedStatement pst; - //Si c'est la promo - pst= cnx.prepareStatement("SELECT Etudiant.nom, Etudiant.prenom, Etudiant.id FROM `CONTIENT` JOIN Etudiant on CONTIENT.idEt=Etudiant.id WHERE CONTIENT.idGroupe=? ORDER BY Etudiant.id ASC"); - pst.setInt(1, g.getId()); - ResultSet rs=pst.executeQuery(); - //Pour tous les étudiants - while(rs.next()){ - boolean exist=false; - //autrement on recupere l'etudiant - for(Etudiant e: g.getPointPoint().getEtudiants()){ - if(e.getId()==rs.getInt(3)){ - exist=true; - g.addEtudiant(e); - break; - } - } - if(exist==false){ - g.addEtudiant(new EtudiantNP(rs.getString(1), rs.getString(2), rs.getInt(3))); - } - } - rs.close(); - pst.close(); - }catch(SQLException e){ - if(this.erreurCO()) - this.addBDEtudiant(g, cnx); - } - } - - /** - * 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 - * @return le groupe refresh - */ - public Groupe refreshGroupe(Groupe g){ - Connection cnx=this.cnx(); - g=this.refreshGroupe(g, cnx); - this.close(cnx); - return 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 - * @return le groupe refresh - */ - private Groupe refreshGroupe(Groupe g, Connection cnx){ - - try{ - PreparedStatement pst = cnx.prepareStatement( - "SELECT `id`, `nom`, `min`, `max`, `value`, `id-parent` FROM `Groupe` join `TYPE` on Groupe.Type=TYPE.name where Groupe.`id`=? OR Groupe.`id-parent`=? ORDER BY Groupe.id ASC;"); - pst.setString(1, String.valueOf(g.getId())); - pst.setString(2, String.valueOf(g.getId())); - ResultSet rs=pst.executeQuery(); - if(rs.next()){ - if(rs.getString(2)!=g.getName()){ - g.setName(rs.getString(2)); - } - Set it=new LinkedHashSet<>(); - for(Groupe gr:g.getSousGroupes()){ - it.add(gr); - } - for(Groupe gr:it){ - g.removeSousGroupe(gr); - } - Set et=new LinkedHashSet<>(); - for(Etudiant gr:g.getEtudiants()){ - et.add(gr); - } - for(Etudiant gr:et){ - g.removeEtudiant(gr); - } - this.addSousGroupe(g, cnx); - }else{ - if(g==g.getPointPoint()){ - g=null; - }else{ - g=this.refreshGroupe(g.getPointPoint(), cnx); - } - } - rs.close(); - }catch(SQLException e){ - if(this.erreurCO()) - this.refreshGroupe(g, cnx); - } - return g; - } - - /** - * refresh le Groupe ainsi que ses etudiants - * @param g le groupe - * @return le groupe refresh/un parent si il a été refresh - */ - public Groupe refreshALL(Groupe g){ - Connection cnx = this.cnx(); - g=this.refreshGroupe(g, cnx); - Set et=new LinkedHashSet<>(); - for(Etudiant gr:g.getEtudiants()){ - et.add(gr); - } - for(Etudiant gr:et){ - g.removeEtudiant(gr); - } - this.addBDEtudiant(g, cnx); - this.close(cnx); - return g; - } - - public Set getEtudiant(){ - Connection cnx=this.cnx(); - Set ret=new LinkedHashSet<>(); - try{ - PreparedStatement pst=cnx.prepareStatement("SELECT * FROM Etudiant"); - ResultSet rs=pst.executeQuery(); - while(rs.next()){ - ret.add(new EtudiantNP(rs.getString(2), rs.getString(3), rs.getInt(1))); - } - pst.close(); - rs.close(); - }catch(SQLException e){ - if(this.erreurCO()) - return this.getEtudiant(); - } - this.close(cnx); - return ret; - } -} diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ROOT/View/Chargement.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ROOT/View/Chargement.java deleted file mode 100644 index 84f4a00..0000000 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ROOT/View/Chargement.java +++ /dev/null @@ -1,55 +0,0 @@ -package fr.iutfbleau.projetIHM2022FI2.ROOT.View; - -import java.awt.Graphics; - -import javax.swing.JComponent; -import javax.swing.JFrame; - -import java.awt.*; - -/** - * Class Dessinant les boutons du menu - */ -public class Chargement extends JComponent{ - private int pourcentage; - private JFrame fenetre; - - public Chargement(JFrame n){ - this.pourcentage=0; - this.fenetre=new JFrame(); - this.fenetre.setSize(n.getSize()); - this.fenetre.setLocation(n.getLocation()); - this.fenetre.add(this, BorderLayout.CENTER); - this.repaint(); - this.fenetre.setVisible(true); - } - public void addPourcent(int n){ - this.pourcentage+=n; - this.repaint(); - } - - public void dispose(){ - this.fenetre.dispose(); - } - - @Override - protected void paintComponent(Graphics pinceau) { - // obligatoire : on crée un nouveau pinceau pour pouvoir le modifier plus tard - Graphics2D secondPinceau = (Graphics2D) pinceau.create(); - secondPinceau.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - // obligatoire : si le composant n'est pas censé être transparent - if (this.isOpaque()) { - // obligatoire : on repeint toute la surface avec la couleur de fond - secondPinceau.setColor(this.getBackground()); - secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight()); - } - // maintenant on dessine ce que l'on veut - secondPinceau.setColor(Color.BLUE); - secondPinceau.setFont(new Font(Font.SANS_SERIF, Font.BOLD, (this.getWidth()/10))); - FontMetrics metrics = secondPinceau.getFontMetrics(secondPinceau.getFont()); - secondPinceau.drawString("CHARGEMENT", (this.getWidth()/2-metrics.stringWidth("CHARGEMENT")/2), (this.getHeight()-metrics.getHeight())/3+metrics.getAscent()); - secondPinceau.drawRect(this.getWidth()/10, this.getHeight()/2, this.getWidth()/10*8, this.getHeight()/10); - float stat=(int) 8.F/100.F*(pourcentage); - secondPinceau.fillRect(this.getWidth()/10, this.getHeight()/2, this.getWidth()/10*((int) stat), this.getHeight()/10); - } -} \ No newline at end of file diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Test/Connexion.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Test/Connexion.java deleted file mode 100644 index 74b8d4f..0000000 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Test/Connexion.java +++ /dev/null @@ -1,48 +0,0 @@ -package fr.iutfbleau.projetIHM2022FI2.Test; -import javax.swing.*; - -import java.awt.*; - -public class Connexion extends JOptionPane{ - - public static User seConnecter(boolean err){ - - JPanel panel = new JPanel(new GridLayout(2,1)); - User[] use=new User[3]; - use[0]=User.ROOT; - use[1]=User.PROF; - use[2]=User.ETUDIANT; - - JComboBox combo=new JComboBox(use); - - JPanel myPanel = new JPanel(); - JTextField password = new JTextField(15); - myPanel.add(new JLabel("Password:")); - myPanel.add(password); - if(err==true){ - myPanel.add(new JLabel("mdp incorect", SwingConstants.RIGHT)); - } - panel.add(combo); - panel.add(myPanel); - - if(JOptionPane.showConfirmDialog(null, panel, "login", JOptionPane.OK_CANCEL_OPTION) != JOptionPane.OK_OPTION){ - return null; - } - if(combo.getSelectedIndex()==0){ - if(password.getText().equals("root")){ - return User.ROOT; - } - } - if(combo.getSelectedIndex()==1){ - if(password.getText().equals("prof")){ - return User.PROF; - } - } - if(combo.getSelectedIndex()==2){ - if(password.getText().equals("etuiutsen")){ - return User.ETUDIANT; - } - } - return Connexion.seConnecter(true); - } -} diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Test/TestTexteMNP.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Test/TestTexteMNP.java deleted file mode 100644 index 7ba227e..0000000 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Test/TestTexteMNP.java +++ /dev/null @@ -1,65 +0,0 @@ -package fr.iutfbleau.projetIHM2022FI2.Test; - -public class TestTexteMNP{ - - - public static void main(String[] args) { - User chois=Connexion.seConnecter(false); - if(chois!=null){ - if(chois==User.ROOT){ - new fr.iutfbleau.projetIHM2022FI2.ROOT.Model.Model(); - } - if(chois==User.ETUDIANT){ - new fr.iutfbleau.projetIHM2022FI2.ETU.Model.Model(); - } - if(chois==User.PROF){ - - } - } - - - /* - Iterator itgr = racineDeLaPartition.getSousGroupes().iterator(); - Groupe A = itgr.next(); // premier sous-groupe - Groupe B = itgr.next(); // second sous-groupe - B = itgr.next(); // troisième sous-groupe - Etudiant e = A.getEtudiants().iterator().next();// premier étudiant du premier sous-groupe. - acf.createChangement(A,e,B); - System.out.println("Récupération des changements (en fait un seul pour l'instant)"); - Iterator itch = acf.getAllChangements().iterator(); - Changement c = itch.next(); - System.out.println(c.monPrint()); - System.out.println("Application du changement"); - acf.applyChangement(c); - System.out.println("=========================="); - System.out.println("== nouveau contenu des groupes de la partition "); - for(Groupe g : racineDeLaPartition.getSousGroupes()){ - System.out.println(g.monPrint()); - } - - System.out.println("=========================="); - System.out.println("Création de 2 changements"); - itgr = racineDeLaPartition.getSousGroupes().iterator(); - A = itgr.next(); // premier sous-groupe - B = itgr.next(); // second sous-groupe - Etudiant etu1 = A.getEtudiants().iterator().next();// premier étudiant du premier sous-groupe. - Etudiant etu2 = B.getEtudiants().iterator().next();// premier étudiant du premier sous-groupe. - acf.createChangement(A,etu1,B); - acf.createChangement(B,etu2,A); - // Impression des changements. - for (Changement cgt : acf.getAllChangements()){ - System.out.println(cgt.monPrint()); - } - itch = acf.getAllChangements().iterator(); - c = itch.next(); - System.out.println("Suppression d'un changement. Il reste :"); - acf.deleteChangement(itch.next()); - for (Changement cgt : acf.getAllChangements()){ - System.out.println(cgt.monPrint()); - }*/ - - - } - - -} diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Test/TestTexteMNP.java~ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Test/TestTexteMNP.java~ deleted file mode 100644 index c41e896..0000000 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Test/TestTexteMNP.java~ +++ /dev/null @@ -1,183 +0,0 @@ -package fr.iutfbleau.projetIHM2022FI2.Test; -import fr.iutfbleau.projetIHM2022FI2.API.*; -import fr.iutfbleau.projetIHM2022FI2.MNP.*; -import java.util.*; -//import java.util.Random; - -public class TestTexteMNP{ - - - public static void main(String[] args) { - // morceaux de modèle - - // Notez que à gauche d'une déclaration on utilise une interface et à droite une version concrète. - // Il faut que votre vue se calque sur le fonctionnemment de ce main et ne fasse pas d'hypothèse sur l'implémentation concrète de l'interface. - // i.e. entre les versions non persistantes (qui terminent par NP) et votre implémentation éventuelle persistante, le seul changement de comportement devrait être la persistance. - // - - System.out.println("Test de l\'API"); - System.out.print("Création des étudiants"); - - Etudiant e1=new EtudiantNP("césar","lycurgus"); - Etudiant e2=new EtudiantNP("denis","uranus"); - Etudiant e3=new EtudiantNP("marcel","castor"); - Etudiant e4=new EtudiantNP("marin","eurydice"); - Etudiant e5=new EtudiantNP("constantin","akoni"); - Etudiant e6=new EtudiantNP("donat","anakoni"); - Etudiant e7=new EtudiantNP("alexandre","apikalia"); - Etudiant e8=new EtudiantNP("andré","ekewaka"); - Etudiant e9=new EtudiantNP("renard","elikapeka"); - Etudiant e10=new EtudiantNP("achille","haukea"); - - System.out.print("."); - - Etudiant e11=new EtudiantNP("agathe","iakopa"); - Etudiant e12=new EtudiantNP("sabine","spartacus"); - Etudiant e13=new EtudiantNP("michel","caligula"); - Etudiant e14=new EtudiantNP("marthe","alaric"); - Etudiant e15=new EtudiantNP("juliane","hannibal"); - Etudiant e16=new EtudiantNP("anne","juvenal"); - Etudiant e17=new EtudiantNP("sophie","bede"); - Etudiant e18=new EtudiantNP("louis","hamilcar"); - Etudiant e19=new EtudiantNP("diane","ladislas"); - Etudiant e20=new EtudiantNP("christine","mahatma"); - - System.out.print("."); - - Etudiant e21=new EtudiantNP("francine","napoleon"); - Etudiant e22=new EtudiantNP("louise","lalita"); - Etudiant e23=new EtudiantNP("chantal","laxman"); - Etudiant e24=new EtudiantNP("giselle","laxmi"); - Etudiant e25=new EtudiantNP("caroline","leela"); - Etudiant e26=new EtudiantNP("claude","lila"); - Etudiant e27=new EtudiantNP("pauline","lilavati"); - Etudiant e28=new EtudiantNP("avril","lochan"); - Etudiant e29=new EtudiantNP("jacqueline","madhav"); - Etudiant e30=new EtudiantNP("denise","turlough"); - - System.out.print("."); - - Etudiant e31=new EtudiantNP("gabrielle","uaithne"); - Etudiant e32=new EtudiantNP("julie","uilleag"); - Etudiant e33=new EtudiantNP("madeleine","uilliam"); - Etudiant e34=new EtudiantNP("charlotte","uinseann"); - Etudiant e35=new EtudiantNP("bertrand","ulick"); - Etudiant e36=new EtudiantNP("lucile","ultan"); - Etudiant e37=new EtudiantNP("nicole","firdaus"); - Etudiant e38=new EtudiantNP("blanche","yasmin"); - Etudiant e39=new EtudiantNP("jeanine","javed"); - Etudiant e40=new EtudiantNP("roxane","naveed"); - - System.out.print("."); - - Etudiant e41=new EtudiantNP("adeline","shahnaz"); - Etudiant e42=new EtudiantNP("dion","ardashir"); - Etudiant e43=new EtudiantNP("liane","atefeh"); - Etudiant e44=new EtudiantNP("myriam","luigina"); - Etudiant e45=new EtudiantNP("danielle","luigino"); - Etudiant e46=new EtudiantNP("arlette","maddalena"); - Etudiant e47=new EtudiantNP("michelle","manfredo"); - Etudiant e48=new EtudiantNP("justine","manlio"); - Etudiant e49=new EtudiantNP("natalie","marcellino"); - Etudiant e50=new EtudiantNP("aline","mariangela"); - - System.out.print("."); - - Etudiant e51=new EtudiantNP("prosper","marzio"); - Etudiant e52=new EtudiantNP("mirabelle","massimiliano"); - Etudiant e53=new EtudiantNP("carine","matteo"); - Etudiant e54=new EtudiantNP("jeannine","melchiorre"); - Etudiant e55=new EtudiantNP("dianne","micaela"); - Etudiant e56=new EtudiantNP("evette","michela"); - Etudiant e57=new EtudiantNP("gisselle","michelangela"); - - System.out.prinln("terminé."); - - System.out.print("Création de l\'usine à groupe"); - AbstractGroupeFactory agf = new AbstractGroupeFactoryNP("BUT2 FI", 15, 92); - System.out.prinln("terminé."); - - System.out.print("Ajout des étudiants dans le groupe de la promotion racine"); - - agf.addToGroupe(agf.getPromotion(),e1); - agf.addToGroupe(agf.getPromotion(),e2); - agf.addToGroupe(agf.getPromotion(),e3); - agf.addToGroupe(agf.getPromotion(),e4); - agf.addToGroupe(agf.getPromotion(),e5); - agf.addToGroupe(agf.getPromotion(),e6); - agf.addToGroupe(agf.getPromotion(),e7); - agf.addToGroupe(agf.getPromotion(),e8); - agf.addToGroupe(agf.getPromotion(),e9); - agf.addToGroupe(agf.getPromotion(),e10); - - System.out.print("."); - - agf.addToGroupe(agf.getPromotion(),e11); - agf.addToGroupe(agf.getPromotion(),e12); - agf.addToGroupe(agf.getPromotion(),e13); - agf.addToGroupe(agf.getPromotion(),e14); - agf.addToGroupe(agf.getPromotion(),e15); - agf.addToGroupe(agf.getPromotion(),e16); - agf.addToGroupe(agf.getPromotion(),e17); - agf.addToGroupe(agf.getPromotion(),e18); - agf.addToGroupe(agf.getPromotion(),e19); - agf.addToGroupe(agf.getPromotion(),e20); - - System.out.print("."); - - agf.addToGroupe(agf.getPromotion(),e21); - agf.addToGroupe(agf.getPromotion(),e22); - agf.addToGroupe(agf.getPromotion(),e23); - agf.addToGroupe(agf.getPromotion(),e24); - agf.addToGroupe(agf.getPromotion(),e25); - agf.addToGroupe(agf.getPromotion(),e26); - agf.addToGroupe(agf.getPromotion(),e27); - agf.addToGroupe(agf.getPromotion(),e28); - agf.addToGroupe(agf.getPromotion(),e29); - agf.addToGroupe(agf.getPromotion(),e30); - agf.addToGroupe(agf.getPromotion(),e31); - agf.addToGroupe(agf.getPromotion(),e32); - agf.addToGroupe(agf.getPromotion(),e33); - agf.addToGroupe(agf.getPromotion(),e34); - agf.addToGroupe(agf.getPromotion(),e35); - agf.addToGroupe(agf.getPromotion(),e36); - agf.addToGroupe(agf.getPromotion(),e37); - agf.addToGroupe(agf.getPromotion(),e38); - agf.addToGroupe(agf.getPromotion(),e39); - - System.out.print("."); - - agf.addToGroupe(agf.getPromotion(),e40); - agf.addToGroupe(agf.getPromotion(),e41); - agf.addToGroupe(agf.getPromotion(),e42); - agf.addToGroupe(agf.getPromotion(),e43); - agf.addToGroupe(agf.getPromotion(),e44); - agf.addToGroupe(agf.getPromotion(),e45); - agf.addToGroupe(agf.getPromotion(),e46); - agf.addToGroupe(agf.getPromotion(),e47); - agf.addToGroupe(agf.getPromotion(),e48); - agf.addToGroupe(agf.getPromotion(),e49); - agf.addToGroupe(agf.getPromotion(),e50); - agf.addToGroupe(agf.getPromotion(),e51); - agf.addToGroupe(agf.getPromotion(),e52); - agf.addToGroupe(agf.getPromotion(),e53); - agf.addToGroupe(agf.getPromotion(),e54); - agf.addToGroupe(agf.getPromotion(),e55); - agf.addToGroupe(agf.getPromotion(),e56); - agf.addToGroupe(agf.getPromotion(),e57); - System.out.prinln("terminé."); - - System.out.prinln("Initialisation complète."); - - System.out.println("=========================="); - System.out.prinln("Le groupe promotion"); - System.out.println(agf.getPromotion().monPrint()); - - System.out.println("=========================="); - System.out.prinln("Partition du groupe racine en 3 groupes TD."); - agf.createPartition(agf.getPromotion(), "TD",3); - System.out.println(agf.getPromotion().monPrint()); - } - - -}