ajout étudiant récursif

This commit is contained in:
martins 2022-11-14 17:41:16 +01:00
parent 2166150995
commit 2618f46017
4 changed files with 33 additions and 17 deletions

View File

@ -25,10 +25,9 @@ public class ObservateurFenetre implements WindowListener{
@Override @Override
public void windowClosing(WindowEvent e) { public void windowClosing(WindowEvent e) {
JFrame fenetre= (JFrame) e.getSource(); JFrame fenetre= (JFrame) e.getSource();
int confirmation = JOptionPane.showConfirmDialog(fenetre.getContentPane(), "Voulez vous sauvegarder Avant de quitter?", "Quitter", JOptionPane.YES_NO_OPTION); int confirmation = JOptionPane.showConfirmDialog(fenetre.getContentPane(), "Voulez vous quitter?", "Quitter", JOptionPane.YES_NO_OPTION);
if(confirmation != JOptionPane.OK_OPTION); if(confirmation == JOptionPane.YES_OPTION);
fenetre.dispose();
fenetre.dispose();
} }
@Override @Override

View File

@ -42,7 +42,7 @@ public class Model{
Chargement ch=new Chargement(); Chargement ch=new Chargement();
this.fenetre.add(ch, BorderLayout.CENTER); this.fenetre.add(ch, BorderLayout.CENTER);
this.fenetre.setVisible(true); this.fenetre.setVisible(true);
this.getPromo(ch); this.promo=this.getPromo(ch);
//A Modif //A Modif
if(this.promo==null){ if(this.promo==null){
this.fenGr=new FenetreGroupe(null, this); this.fenGr=new FenetreGroupe(null, this);
@ -61,6 +61,7 @@ public class Model{
this.fenetre.add(new JScrollPane(this.fenGr)); this.fenetre.add(new JScrollPane(this.fenGr));
this.fenetre.add(new JScrollPane(this.fenEtu)); this.fenetre.add(new JScrollPane(this.fenEtu));
this.fenetre.setVisible(true); this.fenetre.setVisible(true);
this.addEtudiant(this.promo.getPromotion().getSousGroupes().iterator().next(), new EtudiantNP("test", "test"));
} }
/** /**
@ -68,7 +69,8 @@ public class Model{
* avec la Base de donné * avec la Base de donné
* @param Chargement: pour indiquer la progression du chargement * @param Chargement: pour indiquer la progression du chargement
*/ */
private void getPromo(Chargement chargement){ private AbstractGroupeFactory getPromo(Chargement chargement){
AbstractGroupeFactory agf=null;
//On se Connecte a la BD //On se Connecte a la BD
try{ try{
Class.forName("org.mariadb.jdbc.Driver"); Class.forName("org.mariadb.jdbc.Driver");
@ -91,9 +93,9 @@ public class Model{
//On lui ajoute tout ses sous-groupe //On lui ajoute tout ses sous-groupe
this.addSousGroupe(groupe, cnx, chargement, 100); this.addSousGroupe(groupe, cnx, chargement, 100);
//On créer la Factory //On créer la Factory
this.promo=new AbstractGroupeFactoryNP(groupe); agf=new AbstractGroupeFactoryNP(groupe);
//On y ajoute les étudiants //On y ajoute les étudiants
this.addEtudiant(groupe, cnx); this.addBDEtudiant(groupe, cnx, agf);
}else{ }else{
//Si aucune ligne et donc pas de promo: //Si aucune ligne et donc pas de promo:
this.promo=null; this.promo=null;
@ -116,6 +118,7 @@ public class Model{
}catch(ClassNotFoundException e){ }catch(ClassNotFoundException e){
System.out.println("pilote non disponible"); System.out.println("pilote non disponible");
} }
return agf;
} }
/** /**
* Fonction recursive permettant de récuperrer les sous groupe a partir de la BD * Fonction recursive permettant de récuperrer les sous groupe a partir de la BD
@ -174,7 +177,7 @@ public class Model{
* @param g le groupe pour qui ajouter les Etudiant * @param g le groupe pour qui ajouter les Etudiant
* @param cnx la connection (evite de surcharger la BD) * @param cnx la connection (evite de surcharger la BD)
*/ */
private void addEtudiant(Groupe g, Connection cnx){ private void addBDEtudiant(Groupe g, Connection cnx, AbstractGroupeFactory agf){
try{ try{
//On récupère les etudiants contenue du groupe //On récupère les etudiants contenue du groupe
PreparedStatement pst; PreparedStatement pst;
@ -188,13 +191,13 @@ public class Model{
while(rs.next()){ while(rs.next()){
//si c'est la groupe de promo //si c'est la groupe de promo
//On ne peut pas récuperer l'etudiant il est donc créer //On ne peut pas récuperer l'etudiant il est donc créer
if(g==this.promo.getPromotion()){ if(g==agf.getPromotion()){
this.promo.addToGroupe(g, new EtudiantNP(rs.getString(1), rs.getString(2), rs.getInt(3))); agf.addToGroupe(g, new EtudiantNP(rs.getString(1), rs.getString(2), rs.getInt(3)));
}else{ }else{
//autrement on recupere l'etudiant //autrement on recupere l'etudiant
for(Etudiant e: g.getPointPoint().getEtudiants()){ for(Etudiant e: g.getPointPoint().getEtudiants()){
if(e.getId()==rs.getInt(3)){ if(e.getId()==rs.getInt(3)){
this.promo.addToGroupe(g, e); agf.addToGroupe(g, e);
break; break;
} }
} }
@ -202,7 +205,7 @@ public class Model{
} }
//on ajout les étudiants a tous les sous groupe //on ajout les étudiants a tous les sous groupe
for(Groupe sous:g.getSousGroupes()){ for(Groupe sous:g.getSousGroupes()){
this.addEtudiant(sous, cnx); this.addBDEtudiant(sous, cnx, agf);
} }
}catch(SQLException e){ }catch(SQLException e){
System.out.println("erreur dans la prise de resultat"); System.out.println("erreur dans la prise de resultat");
@ -305,7 +308,7 @@ public class Model{
} }
//on y ajoute les étudiant //on y ajoute les étudiant
for(Etudiant e:ajout){ for(Etudiant e:ajout){
this.promo.addToGroupe(creer, e); this.addEtudiant(creer, e);
} }
this.fenGr.refresh(); this.fenGr.refresh();
} }
@ -327,10 +330,23 @@ public class Model{
*/ */
public void addEtudiant(Groupe g, Etudiant e){ public void addEtudiant(Groupe g, Etudiant e){
g.addEtudiant(e); g.addEtudiant(e);
if(g.getPointPoint()!=g)
this.addEtuToParent(g.getPointPoint(), e);
this.fenEtu.refresh(); this.fenEtu.refresh();
} }
private void refresh(Groupe g){ private void addEtuToParent(Groupe g, Etudiant e){
for(Etudiant et:g.getEtudiants()){
if(et==e){
return;
}
}
if(g.getPointPoint()!=g)
this.addEtuToParent(g.getPointPoint(), e);
this.promo.addToGroupe(g, e);
}
private void refresh(Groupe g){
} }
} }

View File

@ -26,7 +26,7 @@ public class FenetreEtudiant extends JPanel{
private void draw(){ private void draw(){
if(this.etu.size()!=0){ if(this.etu.size()!=0){
this.setLayout(new GridLayout(this.etu.size(), 1, 10, 0)); this.setLayout(new GridLayout(this.etu.size()/2+1, 2, 10, 0));
for(Etudiant e: this.etu){ for(Etudiant e: this.etu){
PanelEtudiant p=new PanelEtudiant(e); PanelEtudiant p=new PanelEtudiant(e);
this.add(p); this.add(p);

View File

@ -18,7 +18,8 @@ public class EtudiantNP implements Etudiant{
Objects.requireNonNull(nom,"On ne peut pas créer un étudiant avec un nom null"); Objects.requireNonNull(nom,"On ne peut pas créer un étudiant avec un nom null");
Objects.requireNonNull(prenom,"On ne peut pas créer un étudiant avec un nom null"); Objects.requireNonNull(prenom,"On ne peut pas créer un étudiant avec un nom null");
// auto incrément de l'id // auto incrément de l'id
this.id=++this.nextId; this.id=this.nextId+1;
this.nextId++;
this.nom=nom; this.nom=nom;
this.prenom=prenom; this.prenom=prenom;
} }