suite changement et correction bug

This commit is contained in:
martins 2022-11-29 15:34:17 +01:00
parent 1351345df5
commit 86b93e43d5
3 changed files with 56 additions and 6 deletions

View File

@ -390,6 +390,7 @@ public void showGroupe(Groupe g){
}
public Set<Groupe> getGroupePartition(){
this.bd.refreshGroupe(this.fenGr.getG().getPointPoint());
Set<Groupe> 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");

View File

@ -30,6 +30,16 @@ public class AbstractChangementFactoryNP implements AbstractChangementFactory {
this.brain=new HashMap<Integer,Changement>();
}
public AbstractChangementFactoryNP(AbstractGroupeFactory agf, JFrame fenetre, Set<Changement> 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<Integer,Changement>();
for(Changement ch:liste){
this.brain.put(ch.getId(), ch);
}
}
/**
* permet de récupérer l'usine abstraite pour les groupes qui fonctionne en tandem avec cette usine abstraite
@ -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{

View File

@ -28,6 +28,20 @@ public class ChangementNP implements Changement {
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).
* @return l'identifiant.