From a444123b99aa7334aca9b4a18e49116b20ac8c17 Mon Sep 17 00:00:00 2001 From: martins Date: Wed, 16 Nov 2022 11:14:29 +0100 Subject: [PATCH] =?UTF-8?q?correctif=20bug=20et=20ajout=20fonctionnalit?= =?UTF-8?q?=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/ObservateurModifGroupe.java | 20 +- .../projetIHM2022FI2/Graphic/Model/Model.java | 97 +++++---- .../projetIHM2022FI2/Graphic/Util/BD.java | 205 ++++++++++-------- .../Graphic/View/Chargement.java | 26 +-- .../Graphic/View/FenetreSelectionEtu.java | 25 ++- .../projetIHM2022FI2/MNP/GroupeNP.java | 4 +- 6 files changed, 209 insertions(+), 168 deletions(-) diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Controller/ObservateurModifGroupe.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Controller/ObservateurModifGroupe.java index 6868968..28c6269 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Controller/ObservateurModifGroupe.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Controller/ObservateurModifGroupe.java @@ -70,12 +70,12 @@ public class ObservateurModifGroupe implements ActionListener{ if (result == JOptionPane.OK_OPTION) { int min=Integer.parseInt(xField.getText()); int max=Integer.parseInt(zField.getText()); - if(max>this.groupe.getMax() || min<=0){ + if(max>this.groupe.getMax() || min<=0 || max<=0 || min>max){ JOptionPane.showMessageDialog(m.getFenetre(), "nombre min/max inchoérent", "erreur", JOptionPane.ERROR_MESSAGE); return; } Set ajout=new LinkedHashSet<>(); - myPanel=new FenetreSelectionEtu(this.groupe, ajout); + myPanel=new FenetreSelectionEtu(this.groupe, ajout, false, m.getEtudiant()); if(JOptionPane.showConfirmDialog(m.getFenetre(), new JScrollPane(myPanel), "Selectionner les étudiant a ajouter", JOptionPane.OK_CANCEL_OPTION) ==JOptionPane.YES_OPTION){ if(ajout.size()>=min && ajout.size()<=max){ m.free(groupe, yField.getText(), min, max, ajout); @@ -94,12 +94,21 @@ public class ObservateurModifGroupe implements ActionListener{ } } if(e.getActionCommand()=="rename"){ - String nouveau=JOptionPane.showInputDialog(m.getFenetre(), "Rentrer le nouveau Nom"); - m.rename(nouveau, this.groupe); + JPanel myPanel = new JPanel(); + JTextField xField = new JTextField(50); + myPanel.add(new JLabel("Nom:")); + myPanel.add(xField); + if(JOptionPane.showConfirmDialog(m.getFenetre(), new JScrollPane(myPanel), "Nouveau Nom", JOptionPane.OK_CANCEL_OPTION) ==JOptionPane.OK_OPTION){ + if(xField.getText().length()==0){ + JOptionPane.showMessageDialog(m.getFenetre(), "erreur nom null", "erreur", JOptionPane.ERROR_MESSAGE); + }else{ + m.rename(xField.getText(), this.groupe); + } + } } if(e.getActionCommand()=="add"){ Set ajout=new LinkedHashSet<>(); - JPanel myPanel=new FenetreSelectionEtu(this.groupe, ajout); + JPanel myPanel=new FenetreSelectionEtu(this.groupe, ajout, true, this.m.getEtudiant()); if(JOptionPane.showConfirmDialog(m.getFenetre(), new JScrollPane(myPanel), "Selectionner les étudiant a ajouter", JOptionPane.OK_CANCEL_OPTION) ==JOptionPane.YES_OPTION){ if(this.groupe.getMax()0){JOptionPane.showMessageDialog(m.getFenetre(), "erreur impossible d'ajouter "+i+" etudiants par manque de place dans le groupe de ses parents", "errer", JOptionPane.ERROR_MESSAGE);} } } diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Model/Model.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Model/Model.java index 92dfd7a..ff9e5b3 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Model/Model.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Model/Model.java @@ -31,14 +31,10 @@ public class Model{ private JFrame fenetre; private BD bd; public Model(){ - this.fenetre=new JFrame(); - this.fenetre.setSize(1200, 720); - this.fenetre.setLocation(100,100); - Chargement ch=new Chargement(); - this.fenetre.add(ch, BorderLayout.CENTER); - this.fenetre.setVisible(true); this.bd=new BD(this.fenetre); + Chargement ch=new Chargement(); this.promo=this.getPromo(ch); + if(this.promo==null){ this.fenGr=new FenetreGroupe(null, this); this.fenEtu=new FenetreEtudiant(null); @@ -46,7 +42,7 @@ public class Model{ this.fenGr=new FenetreGroupe(this.promo.getPromotion(), this); this.fenEtu=new FenetreEtudiant(this.promo.getPromotion()); } - this.fenetre.dispose(); + this.fenetre=new JFrame(); this.fenetre.setSize(1200, 720); this.bd.setFenetre(this.fenetre); @@ -60,6 +56,8 @@ public class Model{ scroll.getVerticalScrollBar().setUnitIncrement(15); this.fenetre.add(scroll); this.fenetre.setVisible(true); + if(this.promo!=null) + this.showGroupe(this.promo.getPromotion()); } @@ -69,7 +67,6 @@ public class Model{ */ public void showGroupe(Groupe g){ g=this.bd.refreshALL(g); - this.promo=this.getPromo(null); this.fenGr=new FenetreGroupe(g, this); this.fenEtu=new FenetreEtudiant(g); this.fenetre.getContentPane().removeAll(); @@ -94,33 +91,21 @@ public class Model{ //On ne peut pas supprimer la promo if(g==this.promo.getPromotion()){ JOptionPane.showMessageDialog(this.fenetre, "impossible de supprimer la promotion", "alerte", JOptionPane.ERROR_MESSAGE); - return; + }else{ + //autrement on récupere les groupe a supprimer par ordre avec une fonction recursive + //elle contiendra les sous-groupe remontant j'usqau groupe a supprimer + //On initialise la liste + this.bd.suprGroupe(g); + this.showGroupe(g.getPointPoint()); } - //autrement on récupere les groupe a supprimer par ordre avec une fonction recursive - //elle contiendra les sous-groupe remontant j'usqau groupe a supprimer - LinkedList file=new LinkedList<>(); - //On initialise la liste - this.deleteRecursif(file, g); - for(Groupe sup:file){ - //on supprime les groupe - this.promo.deleteGroupe(sup); - } - this.showGroupe(g.getPointPoint()); } - /** - * fonction recursive initialisant la liste ordonnée de tous les groupe a supprimer avant de supprimer ce groupe - * @param file la liste - * @param bedelete le groupe a supprimer - */ - private void deleteRecursif(LinkedList file, Groupe bedelete){ - //on parcour tous ses sous groupe - for(Groupe g: bedelete.getSousGroupes()){ - //qui eux aussi ajouterons leurs sous-groupe a la file - this.deleteRecursif(file, g); + private int getTailleGroupe(Groupe g){ + int i=0; + for(Groupe gr: g.getSousGroupes()){ + i+=this.getTailleGroupe(gr); } - // on ajoute le groupe (les sous-groupe ayant déja ajouter leur groupe) - file.add(bedelete); + return 1+i; } /** @@ -130,18 +115,20 @@ public class Model{ * @param name le nom des partition */ public void partition(Groupe g, int n, String name){ + Chargement ch=new Chargement(); this.promo.createPartition(g, name, n); //On recherche le groupe Partitionner pour le sauvegarder dans la BD - Groupe creer; + for(Groupe gr: g.getSousGroupes()){ - if(gr.getName()==name){ - creer=gr; + if(gr.getSousGroupes().size()>0 && gr.getSousGroupes().iterator().next().getName().contains(name)){ + this.fenetre.setVisible(false); + this.bd.saveGroupe(gr, 100/this.getTailleGroupe(gr)+1, ch); + this.fenetre.setVisible(true); break; } } //On dis a la BD de sauvegarder ce groupe et tous ces sous Groupe - this.fenGr.setG(this.bd.refreshGroupe(g)); - this.fenGr.refresh(); + this.showGroupe(g); } /** @@ -163,18 +150,22 @@ public class Model{ break; } } + //on crééer le groupe + this.bd.createGroupe(creer); //on y ajoute les étudiant int n=0; for(Etudiant e:ajout){ if(this.addEtudiant(creer, e)==false) n++; } + creer=this.bd.refreshALL(creer); 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.getSize() 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); + } + } } diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Util/BD.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Util/BD.java index f62040e..6048681 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Util/BD.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Util/BD.java @@ -11,8 +11,8 @@ 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.Graphic.View.Chargement; +import fr.iutfbleau.projetIHM2022FI2.MNP.*; public class BD { private JFrame fenetre; @@ -67,19 +67,15 @@ public class BD { * 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 Chargement pour indiquer la progression du chargement * @param pourcent le pourcentage de ce groupe dans le chargement */ - private void addSousGroupe(Groupe g, Connection cnx, Chargement ch){ + 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(); - //on récupère le nombre de ligne - rs.last(); - int nbsous=rs.getRow(); rs=pst.executeQuery(); //autrement si le groupe as des sous groupe while(rs.next()){ @@ -87,14 +83,11 @@ public class BD { 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 - if(ch!=null) - ch.addPourcent(100/nbsous); } rs.close(); - pst.close(); }catch(SQLException e){ if(this.erreurCO()) - this.addSousGroupe(g, cnx, ch); + this.addSousGroupe(g, cnx); } } @@ -155,13 +148,14 @@ public class BD { * @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.first()){ + if(rs.next()){ if(rs.getString(2)!=g.getName()){ g.setName(rs.getString(2)); } @@ -179,7 +173,7 @@ public class BD { for(Etudiant gr:et){ g.removeEtudiant(gr); } - this.addSousGroupe(g, cnx, null); + this.addSousGroupe(g, cnx); }else{ if(g==g.getPointPoint()){ g=null; @@ -188,7 +182,6 @@ public class BD { } } rs.close(); - pst.close(); }catch(SQLException e){ if(this.erreurCO()) this.refreshGroupe(g, cnx); @@ -196,54 +189,6 @@ public class BD { 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, Chargement ch){ - 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.first()){ - 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, ch); - }else{ - if(g==g.getPointPoint()){ - g=null; - }else{ - g=this.refreshGroupe(g.getPointPoint(), cnx); - } - } - rs.close(); - pst.close(); - }catch(SQLException e){ - if(this.erreurCO()) - this.refreshGroupe(g, cnx, ch); - } - return g; - } - /** * refresh le Groupe ainsi que ses etudiants * @param g le groupe @@ -264,25 +209,6 @@ public class BD { 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, Chargement ch){ - Connection cnx = this.cnx(); - g=this.refreshGroupe(g, cnx, ch); - 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 boolean saveEtu(Etudiant etudiant, Groupe g){ Connection cnx = this.cnx(); @@ -291,14 +217,14 @@ public class BD { "Select id from Etudiant where id=?; "); pst.setString(1, String.valueOf(etudiant.getId())); ResultSet rs=pst.executeQuery(); - if(rs.first()){ + if(rs.next()){ //L'etudiant est déja connu de la BD pst.close(); pst=cnx.prepareStatement( "INSERT INTO `CONTIENT` (`idGroupe`, `idEt`) VALUES (?, ?);"); pst.setInt(2, etudiant.getId()); pst.setInt(1, g.getId()); - pst.executeQuery(); + pst.executeUpdate(); boolean la=false; while(g!=g.getPointPoint() || la==false){ g=g.getPointPoint(); @@ -311,7 +237,7 @@ public class BD { if(la==false){ pst.setInt(2, etudiant.getId()); pst.setInt(1, g.getId()); - pst.executeQuery(); + pst.executeUpdate(); } } }else{ @@ -321,27 +247,27 @@ public class BD { pst.setInt(1, etudiant.getId()); pst.setString(2, etudiant.getNom()); pst.setString(3, etudiant.getPrenom()); - pst.executeQuery(); + pst.executeUpdate(); pst.close(); pst=cnx.prepareStatement( "INSERT INTO `CONTIENT` (`idGroupe`, `idEt`) VALUES (?, ?);"); pst.setInt(2, etudiant.getId()); pst.setInt(1, g.getId()); - pst.executeQuery(); + pst.executeUpdate(); while(g.getPointPoint()!=g){ g=g.getPointPoint(); pst.setInt(2, etudiant.getId()); pst.setInt(1, g.getId()); - pst.executeQuery(); + pst.executeUpdate(); } } rs.close(); pst.close(); }catch(SQLException e){ + System.out.println(e.toString()); if(this.erreurSQL()){ this.saveEtu(etudiant, g); }else{ - this.refreshALL(g); return false; } } @@ -357,13 +283,13 @@ public class BD { ); pst.setString(1, name); pst.setInt(2, g.getId()); - pst.executeQuery(); + pst.executeUpdate(); pst.close(); }catch(SQLException e){ + System.out.println(e.toString()); if(this.erreurSQL()){ this.changeNameGroupe(g, name); }else{ - this.refreshALL(g); return false; } } @@ -371,7 +297,106 @@ public class BD { return true; } + public boolean suprGroupe(Groupe g){ + Connection cnx=this.cnx(); + try{ + PreparedStatement pst=cnx.prepareStatement("Delete FROM Groupe where id=?;"); + pst.setInt(1, g.getId()); + pst.executeUpdate(); + pst.close(); + }catch(SQLException e){ + System.out.println(e.toString()); + if(this.erreurSQL()){ + this.suprGroupe(g); + }else{ + return false; + } + } + this.close(cnx); + return true; + } + + + public boolean saveGroupe(Groupe g, int taille, Chargement ch){ + Connection cnx=this.cnx(); + try{ + PreparedStatement pst=cnx.prepareStatement( + "INSERT INTO `Groupe` (`id`, `nom`, `min`, `max`, `Type`, `id-parent`) VALUES (?, ?, ?, ?, ?, ?);" + ); + pst.setInt(1, g.getId()); + pst.setString(2, g.getName()); + pst.setInt(3, g.getMin()); + pst.setInt(4, g.getMax()); + pst.setString(5, g.getType().name()); + pst.setInt(6, g.getPointPoint().getId()); + pst.executeUpdate(); + pst.close(); + for(Etudiant e: g.getEtudiants()){ + this.saveEtu(e, g); + } + if(ch!=null) + ch.addPourcent(taille); + for(Groupe sous:g.getSousGroupes()){ + this.saveGroupe(sous, taille, ch); + } + }catch(SQLException e){ + System.out.println(e.toString()); + if(this.erreurSQL()){ + this.saveGroupe(g, taille, ch); + }else{ + return false; + } + } + this.close(cnx); + return true; + } + + public boolean createGroupe(Groupe g){ + Connection cnx=this.cnx(); + try{ + PreparedStatement pst=cnx.prepareStatement( + "INSERT INTO `Groupe` (`id`, `nom`, `min`, `max`, `Type`, `id-parent`) VALUES (?, ?, ?, ?, ?, ?);" + );; + //On set le mex ID: + pst.setInt(1,g.getId()); + pst.setString(2, g.getName()); + pst.setInt(3, g.getMin()); + pst.setInt(4, g.getMax()); + pst.setString(5, g.getType().name()); + pst.setInt(6, g.getPointPoint().getId()); + pst.executeUpdate(); + pst.close(); + }catch(SQLException e){ + System.out.println(e.toString()); + if(this.erreurSQL()){ + this.saveGroupe(g, 0, null); + }else{ + return false; + } + } + this.close(cnx); + return true; + } + + 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; + } public void setFenetre(JFrame fenetre) { - this.fenetre = fenetre; + this.fenetre = fenetre; } } diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/View/Chargement.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/View/Chargement.java index edc9160..9105bbc 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/View/Chargement.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/View/Chargement.java @@ -3,6 +3,7 @@ package fr.iutfbleau.projetIHM2022FI2.Graphic.View; import java.awt.Graphics; import javax.swing.JComponent; +import javax.swing.JFrame; import java.awt.*; @@ -11,15 +12,24 @@ import java.awt.*; */ public class Chargement extends JComponent{ private int pourcentage; - private boolean erreur; + private JFrame fenetre; public Chargement(){ - this.erreur=false; - this.pourcentage=0; + this.pourcentage=0; + this.fenetre=new JFrame(); + this.fenetre.setSize(1200, 720); + this.fenetre.setLocation(100,100); + this.fenetre.add(this, BorderLayout.CENTER); + this.repaint(); + this.fenetre.setVisible(true); } public void addPourcent(int n){ + System.out.println(this.pourcentage+n); this.pourcentage+=n; this.repaint(); + if(this.pourcentage>95){ + this.fenetre.dispose(); + } } @Override @@ -41,15 +51,5 @@ public class Chargement extends JComponent{ 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); - if(this.erreur==true){ - secondPinceau.setColor(Color.RED); - secondPinceau.setFont(new Font(Font.SANS_SERIF, Font.BOLD, (this.getWidth()/20))); - metrics = secondPinceau.getFontMetrics(secondPinceau.getFont()); - secondPinceau.drawString("erreur connection BD", (this.getWidth()/2-metrics.stringWidth("erreur connection BD")/2), (this.getHeight()-metrics.getHeight())/4*3+metrics.getAscent()); - } - } - - public void erreur(){ - this.erreur=true; } } \ No newline at end of file diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/View/FenetreSelectionEtu.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/View/FenetreSelectionEtu.java index f95afb3..1b29daa 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/View/FenetreSelectionEtu.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/View/FenetreSelectionEtu.java @@ -6,7 +6,6 @@ import fr.iutfbleau.projetIHM2022FI2.Graphic.Controller.ActionListenerNouveauEtu import fr.iutfbleau.projetIHM2022FI2.Graphic.Controller.SelecteurEtudiant; import fr.iutfbleau.projetIHM2022FI2.MNP.EtudiantNP; -import java.util.LinkedHashSet; import java.util.Set; import java.awt.GridLayout; import java.awt.Color; @@ -18,22 +17,23 @@ import javax.swing.JPanel; public class FenetreSelectionEtu extends JPanel{ private Set liste; private Set etu; - public FenetreSelectionEtu(Groupe g, Set liste){ + public FenetreSelectionEtu(Groupe g, Set liste, boolean supression, Set etu0){ super(); - this.etu=new LinkedHashSet<>(); - Groupe promo=g.getPointPoint(); - while(promo.getPointPoint()!=promo){ - promo=promo.getPointPoint(); - } - for(Etudiant e:promo.getEtudiants()){ - this.etu.add(e); - } - for(Etudiant e:g.getEtudiants()){ - this.etu.remove(e); + this.etu=etu0; + if(supression==true){ + for(Etudiant e:g.getEtudiants()){ + for(Etudiant et:etu){ + if(e.getId()==et.getId()){ + etu.remove(et); + break; + } + } + } } this.liste=liste; this.draw(); } + public void addList(int index){ int i=0; for(Etudiant e:this.etu){ @@ -44,6 +44,7 @@ public class FenetreSelectionEtu extends JPanel{ i++; } } + public void removeList(int index){ int i=0; for(Etudiant e:this.etu){ diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/GroupeNP.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/GroupeNP.java index 7aae4a7..bcb4a02 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/GroupeNP.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/GroupeNP.java @@ -40,7 +40,9 @@ public class GroupeNP implements Groupe { public GroupeNP(int id, String name, int min, int max, TypeGroupe type, Groupe pere){ Objects.requireNonNull(name,"On ne peut pas créer un groupe dont le nom est null"); this.id=id; - this.nextId++; + if(id>this.nextId){ + this.nextId=id; + } this.name=name; this.min=min; this.max=max;