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 01b9b88..7339460 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ETU/Model/Model.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/ETU/Model/Model.java @@ -390,6 +390,7 @@ public void showGroupe(Groupe g){ } public Set getGroupePartition(){ + this.bd.refreshGroupe(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/MNP/AbstractChangementFactoryNP.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractChangementFactoryNP.java index 1b3fec3..b222994 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractChangementFactoryNP.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractChangementFactoryNP.java @@ -29,6 +29,16 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory { this.fenetre=fenetre; this.brain=new HashMap(); } + + public AbstractChangementFactoryNP(AbstractGroupeFactory agf, JFrame fenetre, Set liste){ + Objects.requireNonNull(agf,"On ne peut pas créer une usine à changement dont l'usine à groupe parternaire est null"); + this.agf=agf; + this.fenetre=fenetre; + this.brain=new HashMap(); + for(Changement ch:liste){ + this.brain.put(ch.getId(), ch); + } + } /** @@ -85,9 +95,22 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory { */ public void deleteChangement(Changement c){ Objects.requireNonNull(c,"On ne peut pas demander la suppression d'un changement qui est null"); - - this.brain.remove(Integer.valueOf(c.getId())); - + Connection cnx=this.cnx(); + try{ + PreparedStatement pst=cnx.prepareStatement("DELETE FROM `Changement` where `id`=?"); + pst.setInt(1, c.getId()); + pst.executeUpdate(); + pst.close(); + }catch(SQLException er){ + System.out.println(er.toString()); + if(this.erreurSQL()){ + this.deleteChangement(c); + }else{ + return; + } + } + this.close(cnx); + this.brain.remove(c.getId()); } /** @@ -109,13 +132,25 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory { this.brain.put(Integer.valueOf(c.getId()),c); Connection cnx=this.cnx(); try{ - PreparedStatement pst=cnx.prepareStatement("INSERT INTO `Changement` (`idGroupeA`, `idGroupeB`, `idEtudiant`) VALUES (?, ?, ?);"); + PreparedStatement pst=cnx.prepareStatement("SELECT * FROM `Changement` where `idGroupeA`=? AND `idGroupeB`=? AND `idEtudiant`=?; "); pst.setInt(1, A.getId()); pst.setInt(2, B.getId()); pst.setInt(3, e.getId()); - pst.executeUpdate(); - pst.close(); + if(!pst.executeQuery().next()){ + pst.close(); + pst=cnx.prepareStatement("INSERT INTO `Changement` (`idGroupeA`, `idGroupeB`, `idEtudiant`, `id`) VALUES (?, ?, ?, ?);"); + pst.setInt(1, A.getId()); + pst.setInt(2, B.getId()); + pst.setInt(3, e.getId()); + pst.setInt(4, c.getId()); + pst.executeUpdate(); + pst.close(); + }else{ + pst.close(); + JOptionPane.showMessageDialog(this.fenetre, "Vous Avez deja demander a Chnager dans ce Groupe", "erreur", JOptionPane.ERROR_MESSAGE); + } }catch(SQLException er){ + System.out.println(er.toString()); if(this.erreurSQL()){ this.createChangement(A, e, B); }else{ diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/ChangementNP.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/ChangementNP.java index 2e1ed8e..114fddf 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/ChangementNP.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/ChangementNP.java @@ -27,6 +27,20 @@ public class ChangementNP implements Changement { this.b=b; this.e=e; } + + public ChangementNP(Groupe a, Etudiant e, Groupe b, int id){ + Objects.requireNonNull(a,"On ne peut pas créer un changement avec un groupe à quitter null"); + Objects.requireNonNull(b,"On ne peut pas créer un changement avec un groupe à rejoindre null"); + Objects.requireNonNull(e,"On ne peut pas créer un changement concernant un étudiant null"); + + this.id=id; + this.a=a; + this.b=b; + this.e=e; + if(this.id>this.nextId){ + this.nextId=this.id; + } + } /** * permet de récupérer l'identifiant du changement (référence interne sans intérêt irl).