ajout étudiant récursif
This commit is contained in:
parent
2166150995
commit
2618f46017
@ -25,9 +25,8 @@ 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);
|
||||
|
||||
int confirmation = JOptionPane.showConfirmDialog(fenetre.getContentPane(), "Voulez vous quitter?", "Quitter", JOptionPane.YES_NO_OPTION);
|
||||
if(confirmation == JOptionPane.YES_OPTION);
|
||||
fenetre.dispose();
|
||||
}
|
||||
|
||||
|
@ -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,9 +330,22 @@ 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 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){
|
||||
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user