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 8811440..566c708 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Controller/ObservateurModifGroupe.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Controller/ObservateurModifGroupe.java @@ -73,15 +73,27 @@ public class ObservateurModifGroupe implements ActionListener{ if (result == JOptionPane.OK_OPTION) { int min=Integer.parseInt(xField.getText()); int max=Integer.parseInt(zField.getText()); - if(min>this.groupe.getEtudiants().size() || max>this.groupe.getEtudiants().size()){ - JOptionPane.showMessageDialog(m.getFenetre(), "nombre de partition trop grand", "erreur", JOptionPane.ERROR_MESSAGE); + if(max>this.groupe.getMax() || min<=0){ + JOptionPane.showMessageDialog(m.getFenetre(), "nombre min/max inchoérent", "erreur", JOptionPane.ERROR_MESSAGE); return; } - m.free(groupe, yField.getText(), min, max); - m.showGroupe(this.groupe); + Set ajout=new LinkedHashSet<>(); + myPanel=new FenetreSelectionEtu(this.groupe.getPointPoint(), ajout); + 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); + m.showGroupe(this.groupe); + }else{ + if(min>ajout.size()) + JOptionPane.showMessageDialog(m.getFenetre(), "nombre d'etudiant trop petit", "erreur", JOptionPane.ERROR_MESSAGE); + else{ + JOptionPane.showMessageDialog(m.getFenetre(), "nombre d'etudiant trop grand", "erreur", JOptionPane.ERROR_MESSAGE); + } + } + } } }catch(NumberFormatException er){ - JOptionPane.showMessageDialog(m.getFenetre(), "erreur dans le nombre de partition", "erreur", JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(m.getFenetre(), "erreur dans les nombres min et max", "erreur", JOptionPane.ERROR_MESSAGE); } } } diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Model.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Model.java index c64eb12..393c343 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Model.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Model.java @@ -138,7 +138,8 @@ public class Model{ //si il n'y pas de sous-groupe if(nbsous==0){ //on ajoute le pourcentage de chargement de ce groupe - ch.addPourcent(pourcent); + if(ch!=null) + ch.addPourcent(pourcent); //La fonction est fini rs.close(); pst.close(); @@ -218,6 +219,7 @@ public class Model{ * @param g le groupe a afficher */ public void showGroupe(Groupe g){ + this.getPromo(null);%/ this.fenGr=new FenetreGroupe(g, this); this.fenEtu=new FenetreEtudiant(g); this.fenetre.getContentPane().removeAll(); @@ -243,32 +245,80 @@ public class Model{ return; } //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); } } + /** + * 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); } + // on ajoute le groupe (les sous-groupe ayant déja ajouter leur groupe) file.add(bedelete); } + /** + * Fonction permetant de créer une partition d'un groupe + * @param g le groupe a partitionner + * @param n le nombre de partition + * @param name le nom des partition + */ public void partition(Groupe g, int n, String name){ this.promo.createPartition(g, name, n); } - public void free(Groupe g, String name, int min, int max){ + /** + * Fonction permettant de créer un sous-groupe d'un groupe + * @param g le groupe parent + * @param name le nom du sous-groupe + * @param min le nombre min d'etudiant + * @param max le nombre max d'etudiant + * @param ajout la liste des étudiants a ajouter au groupe + */ + public void free(Groupe g, String name, int min, int max, Set ajout){ + //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 + for(Etudiant e:ajout){ + this.promo.addToGroupe(creer, e); + } } + /** + * Fonction pour renomer un groupe + * @param name + * @param g + */ public void rename(String name, Groupe g){ g.setName(name); } + /** + * Fonction pour ajouter un étudiant au groupe + * @param g + * @param e + */ public void addEtudiant(Groupe g, Etudiant e){ g.addEtudiant(e); }