commentaire, javadoc et simplification
This commit is contained in:
parent
46d4ac31d7
commit
602b5ce0da
@ -23,7 +23,7 @@ run : ${JAR_MNP}
|
|||||||
|
|
||||||
# AUTRE BUTS
|
# AUTRE BUTS
|
||||||
doc :
|
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 :
|
clean :
|
||||||
rm -rf ${BUILD}/* *.jar
|
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.EtudiantNP;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.MNP.GroupeNP;
|
import fr.iutfbleau.projetIHM2022FI2.MNP.GroupeNP;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Le Model de L'IHM
|
||||||
|
*/
|
||||||
public class Model{
|
public class Model{
|
||||||
private FenetreGroupe fenGr;
|
private FenetreGroupe fenGr;
|
||||||
private FenetreEtudiant fenEtu;
|
private FenetreEtudiant fenEtu;
|
||||||
private Set<Groupe> promo;
|
private AbstractGroupeFactory promo;
|
||||||
private JFrame fenetre;
|
private JFrame fenetre;
|
||||||
public Model(){
|
public Model(){
|
||||||
this.fenetre=new JFrame();
|
this.fenetre=new JFrame();
|
||||||
@ -39,22 +42,14 @@ 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.promo=new LinkedHashSet<>();
|
|
||||||
this.getPromo(ch);
|
this.getPromo(ch);
|
||||||
switch(this.promo.size()){
|
//A Modif
|
||||||
case 0:
|
if(this.promo==null){
|
||||||
this.fenGr=new FenetreGroupe(null, this);
|
this.fenGr=new FenetreGroupe(null, this);
|
||||||
this.fenEtu=new FenetreEtudiant(null);
|
this.fenEtu=new FenetreEtudiant(null);
|
||||||
break;
|
}else{
|
||||||
case 1:
|
this.fenGr=new FenetreGroupe(this.promo.getPromotion(), this);
|
||||||
this.fenGr=new FenetreGroupe(this.promo.iterator().next(), this);
|
this.fenEtu=new FenetreEtudiant(this.promo.getPromotion());
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
this.fenetre.dispose();
|
this.fenetre.dispose();
|
||||||
this.fenetre=new JFrame();
|
this.fenetre=new JFrame();
|
||||||
@ -68,7 +63,13 @@ public class Model{
|
|||||||
this.fenetre.setVisible(true);
|
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){
|
private void getPromo(Chargement chargement){
|
||||||
|
//On se Connecte a la BD
|
||||||
try{
|
try{
|
||||||
Class.forName("org.mariadb.jdbc.Driver");
|
Class.forName("org.mariadb.jdbc.Driver");
|
||||||
try{
|
try{
|
||||||
@ -76,20 +77,26 @@ 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)
|
//on récupère le Groupe de la BD n'ayant pas de Parent (La promo donc)
|
||||||
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 where Groupe.id=`Groupe`.`id-parent` 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();
|
||||||
rs.last();
|
|
||||||
int nbpromo=rs.getRow();
|
|
||||||
rs=pst.executeQuery();
|
rs=pst.executeQuery();
|
||||||
try{
|
try{
|
||||||
while(rs.next()){
|
//Si il existe bien une promotion
|
||||||
//on image qu'il puisse avoir plusieur promo
|
if(rs.first()){
|
||||||
this.promo.add(new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), null));
|
//On créer le groupe de promo
|
||||||
//on y ajoute tous ses sous-groupe
|
Groupe groupe=new GroupeNP(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4), TypeGroupe.getType(rs.getString(5)), null);
|
||||||
this.addSousGroupe(promo.iterator().next(), cnx, chargement, 100/nbpromo);
|
//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){
|
}catch(SQLException e){
|
||||||
System.out.println("erreur dans la prise de resultat");
|
System.out.println("erreur dans la prise de resultat");
|
||||||
@ -110,25 +117,42 @@ public class Model{
|
|||||||
System.out.println("pilote non disponible");
|
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){
|
private void addSousGroupe(Groupe g, Connection cnx, Chargement ch, int pourcent){
|
||||||
this.addEtudiant(g, cnx);
|
|
||||||
try{
|
try{
|
||||||
|
//On récupere les Groupe qui ont le parent :g
|
||||||
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 where Groupe.`id-parent`=? and Groupe.id!=Groupe.`id-parent`;");
|
"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{
|
try{
|
||||||
pst.setString(1, String.valueOf(g.getId()));
|
pst.setString(1, String.valueOf(g.getId()));
|
||||||
ResultSet rs=pst.executeQuery();
|
ResultSet rs=pst.executeQuery();
|
||||||
|
//on récupère le nombre de ligne
|
||||||
rs.last();
|
rs.last();
|
||||||
int nbsous=rs.getRow();
|
int nbsous=rs.getRow();
|
||||||
|
//si il n'y pas de sous-groupe
|
||||||
if(nbsous==0){
|
if(nbsous==0){
|
||||||
|
//on ajoute le pourcentage de chargement de ce groupe
|
||||||
ch.addPourcent(pourcent);
|
ch.addPourcent(pourcent);
|
||||||
|
//La fonction est fini
|
||||||
|
rs.close();
|
||||||
|
pst.close();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
rs=pst.executeQuery();
|
rs=pst.executeQuery();
|
||||||
|
//autrement si le groupe as des sous groupe
|
||||||
try{
|
try{
|
||||||
while(rs.next()){
|
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);
|
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);
|
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);
|
this.addSousGroupe(nouveau, cnx, ch, pourcent/nbsous);
|
||||||
}
|
}
|
||||||
}catch(SQLException e){
|
}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){
|
private void addEtudiant(Groupe g, Connection cnx){
|
||||||
try{
|
try{
|
||||||
PreparedStatement pst= cnx.prepareStatement(
|
//On récupère les etudiants contenue du groupe
|
||||||
"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");
|
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{
|
try{
|
||||||
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
|
//Pour tous les étudiants
|
||||||
while(rs.next()){
|
while(rs.next()){
|
||||||
for(Groupe m:this.promo){
|
//si c'est la groupe de promo
|
||||||
AbstractGroupeFactory agf=new AbstractGroupeFactoryNP(m);
|
//On ne peut pas récuperer l'etudiant il est donc créer
|
||||||
Set<Etudiant> contenue=agf.getEtudiants(rs.getString(1));
|
if(g==this.promo.getPromotion()){
|
||||||
//Si il est connu on le/les ajoute
|
this.promo.addToGroupe(g, new EtudiantNP(rs.getString(1), rs.getString(2), rs.getInt(3)));
|
||||||
if(contenue.iterator().hasNext()){
|
|
||||||
for(Etudiant e:contenue){
|
|
||||||
g.addEtudiant(e);
|
|
||||||
}
|
|
||||||
//autrement on les crée
|
|
||||||
}else{
|
}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){
|
}catch(SQLException e){
|
||||||
System.out.println("erreur dans la prise de resultat");
|
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){
|
public void showGroupe(Groupe g){
|
||||||
this.fenGr=new FenetreGroupe(g, this);
|
this.fenGr=new FenetreGroupe(g, this);
|
||||||
this.fenEtu=new FenetreEtudiant(g);
|
this.fenEtu=new FenetreEtudiant(g);
|
||||||
@ -191,25 +225,28 @@ public class Model{
|
|||||||
this.fenetre.add(new JScrollPane(this.fenEtu));
|
this.fenetre.add(new JScrollPane(this.fenEtu));
|
||||||
this.fenetre.revalidate();
|
this.fenetre.revalidate();
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* getteur de la fenetre
|
||||||
|
* @return JFrame la fenetre
|
||||||
|
*/
|
||||||
public JFrame getFenetre() {
|
public JFrame getFenetre() {
|
||||||
return fenetre;
|
return fenetre;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Fonction pour supprimer un groupe
|
||||||
|
* @param g le groupe a supprimer
|
||||||
|
*/
|
||||||
public void delete(Groupe g){
|
public void delete(Groupe g){
|
||||||
for(Groupe sous: this.promo){
|
//On ne peut pas supprimer la promo
|
||||||
AbstractGroupeFactory agf=new AbstractGroupeFactoryNP(sous);
|
if(g==this.promo.getPromotion()){
|
||||||
if(agf.knows(g)){
|
|
||||||
if(g==agf.getPromotion()){
|
|
||||||
JOptionPane.showMessageDialog(this.fenetre, "impossible de supprimer la promotion", "alerte", JOptionPane.ERROR_MESSAGE);
|
JOptionPane.showMessageDialog(this.fenetre, "impossible de supprimer la promotion", "alerte", JOptionPane.ERROR_MESSAGE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
//autrement on récupere les groupe a supprimer par ordre avec une fonction recursive
|
||||||
LinkedList<Groupe> file=new LinkedList<>();
|
LinkedList<Groupe> file=new LinkedList<>();
|
||||||
this.deleteRecursif(file, g);
|
this.deleteRecursif(file, g);
|
||||||
for(Groupe sup:file){
|
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){
|
public void partition(Groupe g, int n, String name){
|
||||||
AbstractGroupeFactory agf=new AbstractGroupeFactoryNP(g);
|
this.promo.createPartition(g, name, n);
|
||||||
agf.createPartition(g, name, n);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void free(Groupe g, String name, int min, int max){
|
public void free(Groupe g, String name, int min, int max){
|
||||||
AbstractGroupeFactory agf=new AbstractGroupeFactoryNP(g);
|
this.promo.createGroupe(g, name, min, max);
|
||||||
agf.createGroupe(g, name, min, max);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void rename(String name, Groupe g){
|
public void rename(String name, Groupe g){
|
||||||
|
Loading…
Reference in New Issue
Block a user