commentaire, javadoc et simplification
This commit is contained in:
parent
46d4ac31d7
commit
602b5ce0da
@ -23,7 +23,7 @@ run : ${JAR_MNP}
|
||||
|
||||
# AUTRE BUTS
|
||||
doc :
|
||||
javadoc -d doc src/fr/iutfbleau/projetIHM2022FI2/API/*.java src/fr/iutfbleau/projetIHM2022FI2/MNP/*.java
|
||||
javadoc -d doc src/fr/iutfbleau/projetIHM2022FI2/API/*.java src/fr/iutfbleau/projetIHM2022FI2/MNP/*.java src/fr/iutfbleau/projetIHM2022FI2/Graphic/Controller/*.java src/fr/iutfbleau/projetIHM2022FI2/Graphic/View/*.java
|
||||
|
||||
clean :
|
||||
rm -rf ${BUILD}/* *.jar
|
||||
|
@ -27,10 +27,13 @@ import fr.iutfbleau.projetIHM2022FI2.MNP.AbstractGroupeFactoryNP;
|
||||
import fr.iutfbleau.projetIHM2022FI2.MNP.EtudiantNP;
|
||||
import fr.iutfbleau.projetIHM2022FI2.MNP.GroupeNP;
|
||||
|
||||
/**
|
||||
* Le Model de L'IHM
|
||||
*/
|
||||
public class Model{
|
||||
private FenetreGroupe fenGr;
|
||||
private FenetreEtudiant fenEtu;
|
||||
private Set<Groupe> promo;
|
||||
private AbstractGroupeFactory promo;
|
||||
private JFrame fenetre;
|
||||
public Model(){
|
||||
this.fenetre=new JFrame();
|
||||
@ -39,22 +42,14 @@ public class Model{
|
||||
Chargement ch=new Chargement();
|
||||
this.fenetre.add(ch, BorderLayout.CENTER);
|
||||
this.fenetre.setVisible(true);
|
||||
this.promo=new LinkedHashSet<>();
|
||||
this.getPromo(ch);
|
||||
switch(this.promo.size()){
|
||||
case 0:
|
||||
//A Modif
|
||||
if(this.promo==null){
|
||||
this.fenGr=new FenetreGroupe(null, this);
|
||||
this.fenEtu=new FenetreEtudiant(null);
|
||||
break;
|
||||
case 1:
|
||||
this.fenGr=new FenetreGroupe(this.promo.iterator().next(), this);
|
||||
this.fenEtu=new FenetreEtudiant(this.promo.iterator().next());
|
||||
break;
|
||||
default:
|
||||
this.fenGr=new FenetreGroupe(this.promo.iterator().next(), this);
|
||||
this.fenEtu=new FenetreEtudiant(this.promo.iterator().next());
|
||||
//modifier le boutou pour changer de promo
|
||||
break;
|
||||
}else{
|
||||
this.fenGr=new FenetreGroupe(this.promo.getPromotion(), this);
|
||||
this.fenEtu=new FenetreEtudiant(this.promo.getPromotion());
|
||||
}
|
||||
this.fenetre.dispose();
|
||||
this.fenetre=new JFrame();
|
||||
@ -68,7 +63,13 @@ public class Model{
|
||||
this.fenetre.setVisible(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction permettant d'initialiser l'AbstractFactory de la promo
|
||||
* avec la Base de donné
|
||||
* @param Chargement: pour indiquer la progression du chargement
|
||||
*/
|
||||
private void getPromo(Chargement chargement){
|
||||
//On se Connecte a la BD
|
||||
try{
|
||||
Class.forName("org.mariadb.jdbc.Driver");
|
||||
try{
|
||||
@ -76,20 +77,26 @@ public class Model{
|
||||
"jdbc:mariadb://dwarves.iut-fbleau.fr/chaignea",
|
||||
"chaignea", "Chaigneauphpmyadmin");
|
||||
try{
|
||||
//on récupère le premier groupe de la BD (donc la racine de tous les autres)
|
||||
//on récupère le Groupe de la BD n'ayant pas de Parent (La promo donc)
|
||||
PreparedStatement pst = cnx.prepareStatement(
|
||||
"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{
|
||||
ResultSet rs = pst.executeQuery();
|
||||
rs.last();
|
||||
int nbpromo=rs.getRow();
|
||||
rs=pst.executeQuery();
|
||||
try{
|
||||
while(rs.next()){
|
||||
//on image qu'il puisse avoir plusieur promo
|
||||
this.promo.add(new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), null));
|
||||
//on y ajoute tous ses sous-groupe
|
||||
this.addSousGroupe(promo.iterator().next(), cnx, chargement, 100/nbpromo);
|
||||
//Si il existe bien une promotion
|
||||
if(rs.first()){
|
||||
//On créer le groupe de promo
|
||||
Groupe groupe=new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), null);
|
||||
//On lui ajoute tout ses sous-groupe
|
||||
this.addSousGroupe(groupe, cnx, chargement, 100);
|
||||
//On créer la Factory
|
||||
this.promo=new AbstractGroupeFactoryNP(groupe);
|
||||
//On y ajoute les étudiants
|
||||
this.addEtudiant(groupe, cnx);
|
||||
}else{
|
||||
//Si aucune ligne et donc pas de promo:
|
||||
this.promo=null;
|
||||
}
|
||||
}catch(SQLException e){
|
||||
System.out.println("erreur dans la prise de resultat");
|
||||
@ -110,25 +117,42 @@ public class Model{
|
||||
System.out.println("pilote non disponible");
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Fonction recursive permettant de récuperrer les sous groupe a partir de la BD
|
||||
* @param g le groupe
|
||||
* @param cnx la connection a la BD (evite de la surcharger)
|
||||
* @param Chargement pour indiquer la progression du chargement
|
||||
* @param pourcent le pourcentage de ce groupe dans le chargement
|
||||
*/
|
||||
private void addSousGroupe(Groupe g, Connection cnx, Chargement ch, int pourcent){
|
||||
this.addEtudiant(g, cnx);
|
||||
try{
|
||||
//On récupere les Groupe qui ont le parent :g
|
||||
PreparedStatement pst= cnx.prepareStatement(
|
||||
"SELECT `id`, `nom`, `min`, `max`, `value`, `id-parent` FROM `Groupe` join `TYPE` on Groupe.Type=TYPE.name where Groupe.`id-parent`=? and Groupe.id!=Groupe.`id-parent`;");
|
||||
try{
|
||||
pst.setString(1, String.valueOf(g.getId()));
|
||||
ResultSet rs=pst.executeQuery();
|
||||
//on récupère le nombre de ligne
|
||||
rs.last();
|
||||
int nbsous=rs.getRow();
|
||||
//si il n'y pas de sous-groupe
|
||||
if(nbsous==0){
|
||||
//on ajoute le pourcentage de chargement de ce groupe
|
||||
ch.addPourcent(pourcent);
|
||||
//La fonction est fini
|
||||
rs.close();
|
||||
pst.close();
|
||||
return;
|
||||
}
|
||||
rs=pst.executeQuery();
|
||||
//autrement si le groupe as des sous groupe
|
||||
try{
|
||||
while(rs.next()){
|
||||
//on les ajoute
|
||||
Groupe nouveau=new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), g);
|
||||
g.addSousGroupe(nouveau);
|
||||
//on ajoute les sous groupe des sous-groupe
|
||||
//le pourcentage diminue en fonction du nombre de sous-groupe
|
||||
this.addSousGroupe(nouveau, cnx, ch, pourcent/nbsous);
|
||||
}
|
||||
}catch(SQLException e){
|
||||
@ -144,32 +168,38 @@ public class Model{
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Fonction recursive ajoutant les étudiant aux groupe de la promo
|
||||
* @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){
|
||||
try{
|
||||
PreparedStatement pst= cnx.prepareStatement(
|
||||
"SELECT Etudiant.nom, Etudiant.prenom, Etudiant.id FROM `CONTIENT` JOIN Etudiant on CONTIENT.idEt=Etudiant.id WHERE CONTIENT.idGroupe=? Group BY Etudiant.nom ORDER BY Etudiant.id ASC");
|
||||
//On récupère les etudiants contenue du groupe
|
||||
PreparedStatement pst;
|
||||
//Si c'est la promo
|
||||
pst= cnx.prepareStatement("SELECT Etudiant.nom, Etudiant.prenom, Etudiant.id FROM `CONTIENT` JOIN Etudiant on CONTIENT.idEt=Etudiant.id WHERE CONTIENT.idGroupe=1 ORDER BY Etudiant.id ASC");
|
||||
try{
|
||||
pst.setInt(1, g.getId());
|
||||
ResultSet rs=pst.executeQuery();
|
||||
try{
|
||||
//On vérifie dans toutes le promo si personne ne connait déja l'Etudiant(s) du même noms
|
||||
//Pour tous les étudiants
|
||||
while(rs.next()){
|
||||
for(Groupe m:this.promo){
|
||||
AbstractGroupeFactory agf=new AbstractGroupeFactoryNP(m);
|
||||
Set<Etudiant> contenue=agf.getEtudiants(rs.getString(1));
|
||||
//Si il est connu on le/les ajoute
|
||||
if(contenue.iterator().hasNext()){
|
||||
for(Etudiant e:contenue){
|
||||
g.addEtudiant(e);
|
||||
}
|
||||
//autrement on les crée
|
||||
//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)));
|
||||
}else{
|
||||
agf.addToGroupe(g, new EtudiantNP(rs.getString(1), rs.getString(2), rs.getInt(3)));
|
||||
//autrement on recupere l'etudiant
|
||||
for(Etudiant e: this.promo.getEtudiants(rs.getString(1))){
|
||||
this.promo.addToGroupe(g, e);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
//on ajout les étudiants a tous les sous groupe
|
||||
for(Groupe sous:g.getSousGroupes()){
|
||||
this.addEtudiant(sous, cnx);
|
||||
}
|
||||
}catch(SQLException e){
|
||||
System.out.println("erreur dans la prise de resultat");
|
||||
}
|
||||
@ -183,6 +213,10 @@ public class Model{
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction pour refresh/changer de groupe d'affichage
|
||||
* @param g le groupe a afficher
|
||||
*/
|
||||
public void showGroupe(Groupe g){
|
||||
this.fenGr=new FenetreGroupe(g, this);
|
||||
this.fenEtu=new FenetreEtudiant(g);
|
||||
@ -191,25 +225,28 @@ public class Model{
|
||||
this.fenetre.add(new JScrollPane(this.fenEtu));
|
||||
this.fenetre.revalidate();
|
||||
}
|
||||
|
||||
/**
|
||||
* getteur de la fenetre
|
||||
* @return JFrame la fenetre
|
||||
*/
|
||||
public JFrame getFenetre() {
|
||||
return fenetre;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction pour supprimer un groupe
|
||||
* @param g le groupe a supprimer
|
||||
*/
|
||||
public void delete(Groupe g){
|
||||
for(Groupe sous: this.promo){
|
||||
AbstractGroupeFactory agf=new AbstractGroupeFactoryNP(sous);
|
||||
if(agf.knows(g)){
|
||||
if(g==agf.getPromotion()){
|
||||
//On ne peut pas supprimer la promo
|
||||
if(g==this.promo.getPromotion()){
|
||||
JOptionPane.showMessageDialog(this.fenetre, "impossible de supprimer la promotion", "alerte", JOptionPane.ERROR_MESSAGE);
|
||||
return;
|
||||
}
|
||||
//autrement on récupere les groupe a supprimer par ordre avec une fonction recursive
|
||||
LinkedList<Groupe> file=new LinkedList<>();
|
||||
this.deleteRecursif(file, g);
|
||||
for(Groupe sup:file){
|
||||
agf.deleteGroupe(sup);
|
||||
}
|
||||
}
|
||||
this.promo.deleteGroupe(sup);
|
||||
}
|
||||
}
|
||||
|
||||
@ -221,13 +258,11 @@ public class Model{
|
||||
}
|
||||
|
||||
public void partition(Groupe g, int n, String name){
|
||||
AbstractGroupeFactory agf=new AbstractGroupeFactoryNP(g);
|
||||
agf.createPartition(g, name, n);
|
||||
this.promo.createPartition(g, name, n);
|
||||
}
|
||||
|
||||
public void free(Groupe g, String name, int min, int max){
|
||||
AbstractGroupeFactory agf=new AbstractGroupeFactoryNP(g);
|
||||
agf.createGroupe(g, name, min, max);
|
||||
this.promo.createGroupe(g, name, min, max);
|
||||
}
|
||||
|
||||
public void rename(String name, Groupe g){
|
||||
|
Loading…
Reference in New Issue
Block a user