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
public void windowClosing(WindowEvent e) {
JFrame fenetre= (JFrame) e.getSource();
int confirmation = JOptionPane.showConfirmDialog(fenetre.getContentPane(), "Voulez vous sauvegarder Avant de quitter?", "Quitter", JOptionPane.YES_NO_OPTION);
if(confirmation != JOptionPane.OK_OPTION);
fenetre.dispose();
int confirmation = JOptionPane.showConfirmDialog(fenetre.getContentPane(), "Voulez vous quitter?", "Quitter", JOptionPane.YES_NO_OPTION);
if(confirmation == JOptionPane.YES_OPTION);
fenetre.dispose();
}
@Override

View File

@ -42,7 +42,7 @@ public class Model{
Chargement ch=new Chargement();
this.fenetre.add(ch, BorderLayout.CENTER);
this.fenetre.setVisible(true);
this.getPromo(ch);
this.promo=this.getPromo(ch);
//A Modif
if(this.promo==null){
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.fenEtu));
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é
* @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
try{
Class.forName("org.mariadb.jdbc.Driver");
@ -91,9 +93,9 @@ public class Model{
//On lui ajoute tout ses sous-groupe
this.addSousGroupe(groupe, cnx, chargement, 100);
//On créer la Factory
this.promo=new AbstractGroupeFactoryNP(groupe);
agf=new AbstractGroupeFactoryNP(groupe);
//On y ajoute les étudiants
this.addEtudiant(groupe, cnx);
this.addBDEtudiant(groupe, cnx, agf);
}else{
//Si aucune ligne et donc pas de promo:
this.promo=null;
@ -116,6 +118,7 @@ public class Model{
}catch(ClassNotFoundException e){
System.out.println("pilote non disponible");
}
return agf;
}
/**
* 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 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{
//On récupère les etudiants contenue du groupe
PreparedStatement pst;
@ -188,13 +191,13 @@ public class Model{
while(rs.next()){
//si c'est la groupe de promo
//On ne peut pas récuperer l'etudiant il est donc créer
if(g==this.promo.getPromotion()){
this.promo.addToGroupe(g, new EtudiantNP(rs.getString(1), rs.getString(2), rs.getInt(3)));
if(g==agf.getPromotion()){
agf.addToGroupe(g, new EtudiantNP(rs.getString(1), rs.getString(2), rs.getInt(3)));
}else{
//autrement on recupere l'etudiant
for(Etudiant e: g.getPointPoint().getEtudiants()){
if(e.getId()==rs.getInt(3)){
this.promo.addToGroupe(g, e);
agf.addToGroupe(g, e);
break;
}
}
@ -202,7 +205,7 @@ public class Model{
}
//on ajout les étudiants a tous les sous groupe
for(Groupe sous:g.getSousGroupes()){
this.addEtudiant(sous, cnx);
this.addBDEtudiant(sous, cnx, agf);
}
}catch(SQLException e){
System.out.println("erreur dans la prise de resultat");
@ -305,7 +308,7 @@ public class Model{
}
//on y ajoute les étudiant
for(Etudiant e:ajout){
this.promo.addToGroupe(creer, e);
this.addEtudiant(creer, e);
}
this.fenGr.refresh();
}
@ -327,10 +330,23 @@ public class Model{
*/
public void addEtudiant(Groupe g, Etudiant e){
g.addEtudiant(e);
if(g.getPointPoint()!=g)
this.addEtuToParent(g.getPointPoint(), e);
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(){
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){
PanelEtudiant p=new PanelEtudiant(e);
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(prenom,"On ne peut pas créer un étudiant avec un nom null");
// auto incrément de l'id
this.id=++this.nextId;
this.id=this.nextId+1;
this.nextId++;
this.nom=nom;
this.prenom=prenom;
}