restauration de l'API et ajout de possibilité plusieur promo

This commit is contained in:
martins 2022-11-13 15:00:55 +01:00
parent 0eabe2b4bb
commit c06ff537ad
3 changed files with 36 additions and 55 deletions

View File

@ -110,14 +110,4 @@ public interface AbstractGroupeFactory {
*/ */
public Set<Groupe> getGroupesOfEtudiant(Etudiant etu); public Set<Groupe> getGroupesOfEtudiant(Etudiant etu);
/**
* permet d'ajouter un groupe deja tout fait la factory
*
* @param adable le groupe devant être ajouter
*
*
* @throws java.lang.NullPointerException si le Groupe est null.
*/
public void addGroupe(Groupe adable);
} }

View File

@ -29,20 +29,12 @@ import fr.iutfbleau.projetIHM2022FI2.MNP.GroupeNP;
public class Model{ public class Model{
private FenetreGroupe fenGr; private FenetreGroupe fenGr;
private FenetreEtudiant fenEtu; private FenetreEtudiant fenEtu;
private AbstractGroupeFactory agf; private Set<Groupe> promo;
private JFrame fenetre; private JFrame fenetre;
private Set<Etudiant> etu;
public Model(){ public Model(){
this.etu=null;
this.getPromo(); this.getPromo();
System.out.println(this.agf.getPromotion().monPrint()); this.fenGr=new FenetreGroupe(this.promo.iterator().next(), this);
Groupe racineDeLaPartition = agf.getPromotion().getSousGroupes().iterator().next(); this.fenEtu=new FenetreEtudiant(this.promo.iterator().next());
System.out.println(racineDeLaPartition.monPrint());
for(Groupe g : racineDeLaPartition.getSousGroupes()){
System.out.println(g.monPrint());
}
this.fenGr=new FenetreGroupe(this.agf.getPromotion(), this);
this.fenEtu=new FenetreEtudiant(this.agf.getPromotion());
this.fenetre=new JFrame(); this.fenetre=new JFrame();
this.fenetre.setSize(1200, 720); this.fenetre.setSize(1200, 720);
this.fenetre.setLocation(100,100); this.fenetre.setLocation(100,100);
@ -55,7 +47,7 @@ public class Model{
} }
private void getPromo(){ private void getPromo(){
this.agf=null; this.promo=new LinkedHashSet<>();
try{ try{
Class.forName("org.mariadb.jdbc.Driver"); Class.forName("org.mariadb.jdbc.Driver");
try{ try{
@ -63,22 +55,17 @@ public class Model{
"jdbc:mariadb://dwarves.iut-fbleau.fr/chaignea", "jdbc:mariadb://dwarves.iut-fbleau.fr/chaignea",
"chaignea", "Chaigneauphpmyadmin"); "chaignea", "Chaigneauphpmyadmin");
try{ try{
//on récupère le premier groupe de la BD (donc la racine de tous les autres)
PreparedStatement pst = cnx.prepareStatement( PreparedStatement pst = cnx.prepareStatement(
"SELECT `id`, `nom`, `min`, `max`, `value`, `id-parent` FROM `Groupe` join `TYPE` on Groupe.Type=TYPE.name ORDER BY Groupe.id ASC; "); "SELECT `id`, `nom`, `min`, `max`, `value`, `id-parent` FROM `Groupe` join `TYPE` on Groupe.Type=TYPE.name where Groupe.id=`Groupe`.`id-parent` ORDER BY Groupe.id ASC;");
try{ try{
ResultSet rs = pst.executeQuery(); ResultSet rs = pst.executeQuery();
try{ try{
if(rs.first()){
Groupe promo=new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), null);
this.agf=new AbstractGroupeFactoryNP(promo);
this.addSousGroupe(promo, cnx);
}
while(rs.next()){ while(rs.next()){
Groupe g=new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), null); //on image qu'il puisse avoir plusieur promo
if(agf.knows(g)==false){ this.promo.add(new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), null));
agf.addGroupe(g); //on y ajoute tous ses sous-groupe
this.addSousGroupe(g, cnx); this.addSousGroupe(promo.iterator().next(), cnx);
}
} }
}catch(SQLException e){ }catch(SQLException e){
System.out.println("erreur dans la prise de resultat"); System.out.println("erreur dans la prise de resultat");
@ -109,9 +96,7 @@ public class Model{
ResultSet rs=pst.executeQuery(); ResultSet rs=pst.executeQuery();
try{ try{
while(rs.next()){ while(rs.next()){
System.out.println(g.getName()+" id= "+g.getId()+" "+rs.getString(2));
Groupe nouveau=new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), g); Groupe nouveau=new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), g);
this.agf.addGroupe(nouveau);
g.addSousGroupe(nouveau); g.addSousGroupe(nouveau);
this.addSousGroupe(nouveau, cnx); this.addSousGroupe(nouveau, cnx);
} }
@ -136,16 +121,21 @@ public class Model{
pst.setInt(1, g.getId()); pst.setInt(1, g.getId());
ResultSet rs=pst.executeQuery(); ResultSet rs=pst.executeQuery();
try{ try{
//On vérifie dans toutes le promo si personne ne connait déja l'Etudiant(s) du même noms
while(rs.next()){ while(rs.next()){
if(g==this.agf.getPromotion()){ for(Groupe m:this.promo){
this.agf.addToGroupe(g, new EtudiantNP(rs.getString(1), rs.getString(2))); AbstractGroupeFactory agf=new AbstractGroupeFactoryNP(m);
}else{
Set<Etudiant> contenue=agf.getEtudiants(rs.getString(1)); Set<Etudiant> contenue=agf.getEtudiants(rs.getString(1));
//Si il est connu on le/les ajoute
if(contenue.iterator().hasNext()){ if(contenue.iterator().hasNext()){
for(Etudiant e:contenue){ for(Etudiant e:contenue){
agf.addToGroupe(g, e); g.addEtudiant(e);
} }
//autrement on les crée
}else{
agf.addToGroupe(g, new EtudiantNP(rs.getString(1), rs.getString(2)));
} }
} }
} }
}catch(SQLException e){ }catch(SQLException e){

View File

@ -22,6 +22,20 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
this.promo=promo; this.promo=promo;
this.brain=new HashMap<Integer,Groupe>(); this.brain=new HashMap<Integer,Groupe>();
this.brain.put(Integer.valueOf(this.promo.getId()),this.promo); this.brain.put(Integer.valueOf(this.promo.getId()),this.promo);
this.addSousGroupe(this.promo);
}
/**
* permet d'ajouter les sous groupe lors de l'initialisation de la promo
* avec un groupe déja créer
*
* @param g le groupe (methode récursive)
*/
private void addSousGroupe(Groupe g){
for(Groupe s:g.getSousGroupes()){
this.brain.put(g.getId(), g);
this.addSousGroupe(s);
}
} }
/** /**
@ -208,7 +222,6 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
public Set<Etudiant> getEtudiants(String nomEtu){ public Set<Etudiant> getEtudiants(String nomEtu){
Set<Etudiant> s=new LinkedHashSet<>(); Set<Etudiant> s=new LinkedHashSet<>();
for(Etudiant e:this.getPromotion().getEtudiants()){ for(Etudiant e:this.getPromotion().getEtudiants()){
//System.out.println("Comparaison de: \""+nomEtu.toLowerCase()+"\" a \"" + e.getNom().toLowerCase()+"\"");
if((e.getNom()).equals(nomEtu.toString())){ if((e.getNom()).equals(nomEtu.toString())){
s.add(e); s.add(e);
} }
@ -237,16 +250,4 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
} }
return ret; return ret;
} }
/**
* permet d'ajouter un groupe deja tout fait la factory
*
* @param adable le groupe devant être ajouter
*
*
* @throws java.lang.NullPointerException si le Groupe est null.
*/
public void addGroupe(Groupe adable) {
this.brain.put(adable.getId(), adable);
}
} }