diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.java index e72cab9..b0d170e 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.java @@ -110,14 +110,4 @@ public interface AbstractGroupeFactory { */ public Set getGroupesOfEtudiant(Etudiant etu); - /** - * permet d'ajouter un groupe deja tout fait la factory - * - * @param adable le groupe devant être ajouter - * - * - * @throws java.lang.NullPointerException si le Groupe est null. - */ - public void addGroupe(Groupe adable); - } diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Model.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Model.java index e789f67..dfa9b8b 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Model.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Model.java @@ -29,20 +29,12 @@ import fr.iutfbleau.projetIHM2022FI2.MNP.GroupeNP; public class Model{ private FenetreGroupe fenGr; private FenetreEtudiant fenEtu; - private AbstractGroupeFactory agf; + private Set promo; private JFrame fenetre; - private Set etu; public Model(){ - this.etu=null; this.getPromo(); - System.out.println(this.agf.getPromotion().monPrint()); - Groupe racineDeLaPartition = agf.getPromotion().getSousGroupes().iterator().next(); - System.out.println(racineDeLaPartition.monPrint()); - for(Groupe g : racineDeLaPartition.getSousGroupes()){ - System.out.println(g.monPrint()); - } - this.fenGr=new FenetreGroupe(this.agf.getPromotion(), this); - this.fenEtu=new FenetreEtudiant(this.agf.getPromotion()); + this.fenGr=new FenetreGroupe(this.promo.iterator().next(), this); + this.fenEtu=new FenetreEtudiant(this.promo.iterator().next()); this.fenetre=new JFrame(); this.fenetre.setSize(1200, 720); this.fenetre.setLocation(100,100); @@ -55,7 +47,7 @@ public class Model{ } private void getPromo(){ - this.agf=null; + this.promo=new LinkedHashSet<>(); try{ Class.forName("org.mariadb.jdbc.Driver"); try{ @@ -63,22 +55,17 @@ public class Model{ "jdbc:mariadb://dwarves.iut-fbleau.fr/chaignea", "chaignea", "Chaigneauphpmyadmin"); try{ + //on récupère le premier groupe de la BD (donc la racine de tous les autres) 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; "); + "SELECT `id`, `nom`, `min`, `max`, `value`, `id-parent` FROM `Groupe` join `TYPE` on Groupe.Type=TYPE.name where Groupe.id=`Groupe`.`id-parent` ORDER BY Groupe.id ASC;"); try{ ResultSet rs = pst.executeQuery(); try{ - if(rs.first()){ - Groupe promo=new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), null); - this.agf=new AbstractGroupeFactoryNP(promo); - this.addSousGroupe(promo, cnx); - } while(rs.next()){ - Groupe g=new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), null); - if(agf.knows(g)==false){ - agf.addGroupe(g); - this.addSousGroupe(g, cnx); - } + //on image qu'il puisse avoir plusieur promo + this.promo.add(new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), null)); + //on y ajoute tous ses sous-groupe + this.addSousGroupe(promo.iterator().next(), cnx); } }catch(SQLException e){ System.out.println("erreur dans la prise de resultat"); @@ -109,9 +96,7 @@ public class Model{ ResultSet rs=pst.executeQuery(); try{ while(rs.next()){ - System.out.println(g.getName()+" id= "+g.getId()+" "+rs.getString(2)); Groupe nouveau=new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), g); - this.agf.addGroupe(nouveau); g.addSousGroupe(nouveau); this.addSousGroupe(nouveau, cnx); } @@ -136,16 +121,21 @@ public class Model{ pst.setInt(1, g.getId()); ResultSet rs=pst.executeQuery(); try{ + //On vérifie dans toutes le promo si personne ne connait déja l'Etudiant(s) du même noms while(rs.next()){ - if(g==this.agf.getPromotion()){ - this.agf.addToGroupe(g, new EtudiantNP(rs.getString(1), rs.getString(2))); - }else{ + for(Groupe m:this.promo){ + AbstractGroupeFactory agf=new AbstractGroupeFactoryNP(m); Set contenue=agf.getEtudiants(rs.getString(1)); - if(contenue.iterator().hasNext()){ - for(Etudiant e:contenue){ - agf.addToGroupe(g, e); + //Si il est connu on le/les ajoute + if(contenue.iterator().hasNext()){ + for(Etudiant e:contenue){ + g.addEtudiant(e); + } + //autrement on les crée + }else{ + agf.addToGroupe(g, new EtudiantNP(rs.getString(1), rs.getString(2))); } - } + } } }catch(SQLException e){ diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java index c32b22e..a71dc9a 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java @@ -22,6 +22,20 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory { this.promo=promo; this.brain=new HashMap(); this.brain.put(Integer.valueOf(this.promo.getId()),this.promo); + this.addSousGroupe(this.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){ + for(Groupe s:g.getSousGroupes()){ + this.brain.put(g.getId(), g); + this.addSousGroupe(s); + } } /** @@ -208,7 +222,6 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory { public Set getEtudiants(String nomEtu){ Set s=new LinkedHashSet<>(); for(Etudiant e:this.getPromotion().getEtudiants()){ - //System.out.println("Comparaison de: \""+nomEtu.toLowerCase()+"\" a \"" + e.getNom().toLowerCase()+"\""); if((e.getNom()).equals(nomEtu.toString())){ s.add(e); } @@ -237,16 +250,4 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory { } return ret; } - - /** - * permet d'ajouter un groupe deja tout fait la factory - * - * @param adable le groupe devant être ajouter - * - * - * @throws java.lang.NullPointerException si le Groupe est null. - */ - public void addGroupe(Groupe adable) { - this.brain.put(adable.getId(), adable); - } }