repartition ROOT, ETU et utilisation de l'API respecter, correction de bug et ajout fonction visite de groupe d'un etudiant seulement ceux que il connait
This commit is contained in:
parent
203fca24cd
commit
47742b1ddc
@ -24,7 +24,7 @@ run : build\
|
|||||||
|
|
||||||
# AUTRE BUTS
|
# AUTRE BUTS
|
||||||
doc :
|
doc :
|
||||||
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
|
javadoc -d doc src/fr/iutfbleau/projetIHM2022FI2/API/*.java src/fr/iutfbleau/projetIHM2022FI2/MNP/*.java src/fr/iutfbleau/projetIHM2022FI2/ROOT/Controller/*.java src/fr/iutfbleau/projetIHM2022FI2/ROOT/View/*.java
|
||||||
|
|
||||||
clean :
|
clean :
|
||||||
rm -rf ${BUILD}/* *.jar
|
rm -rf ${BUILD}/* *.jar
|
||||||
@ -95,104 +95,162 @@ ${BUILD}/MNP/AbstractChangementFactoryNP.class : ${SRC}/MNP/AbstractChangementFa
|
|||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MNP/AbstractChangementFactoryNP.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MNP/AbstractChangementFactoryNP.java
|
||||||
|
|
||||||
|
|
||||||
## Graphic ##
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## ROOT ##
|
||||||
|
|
||||||
## Util ###
|
## Util ###
|
||||||
|
|
||||||
${BUILD}/Graphic/Util/BD.class : ${SRC}/Graphic/Util/BD.java
|
${BUILD}/ROOT/Util/BD.class : ${SRC}/ROOT/Util/BD.java
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/Util/BD.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Util/BD.java
|
||||||
|
|
||||||
|
${BUILD}/ROOT/Util/User.class : ${SRC}/ROOT/Util/User.java
|
||||||
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Util/User.java
|
||||||
|
|
||||||
## View ##
|
## View ##
|
||||||
${BUILD}/Graphic/View/JTreeGroupe.class : ${SRC}/Graphic/View/JTreeGroupe.java \
|
|
||||||
${BUILD}/Graphic/Controller/TreeSelectionListenerGroupe.class \
|
|
||||||
${BUILD}/Graphic/Controller/TreeSelectionEventGroupe.class \
|
|
||||||
${BUILD}/Graphic/View/DefaultMutableTreeNodeGroupe.class
|
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/View/JTreeGroupe.java
|
|
||||||
|
|
||||||
${BUILD}/Graphic/View/FenetreGroupe.class : ${SRC}/Graphic/View/FenetreGroupe.java \
|
${BUILD}/ROOT/View/FenetreGroupe.class : ${SRC}/ROOT/View/FenetreGroupe.java \
|
||||||
${BUILD}/Graphic/Controller/ObservateurFenetre.class \
|
${BUILD}/ROOT/Controller/ObservateurFenetre.class \
|
||||||
${BUILD}/Graphic/Controller/ObservateurChangeGroupe.class \
|
${BUILD}/ROOT/Controller/ObservateurChangeGroupe.class \
|
||||||
${BUILD}/Graphic/Controller/ObservateurModifGroupe.class
|
${BUILD}/ROOT/Controller/ObservateurModifGroupe.class
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/View/FenetreGroupe.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/View/FenetreGroupe.java
|
||||||
|
|
||||||
${BUILD}/Graphic/View/FenetreEtudiant.class :${SRC}/Graphic/View/FenetreEtudiant.java \
|
${BUILD}/ROOT/View/FenetreEtudiant.class :${SRC}/ROOT/View/FenetreEtudiant.java \
|
||||||
${BUILD}/Graphic/Controller/ObservateurFenetre.class \
|
${BUILD}/ROOT/Controller/ObservateurFenetre.class \
|
||||||
${BUILD}/Graphic/Controller/ObservateurChangeGroupe.class \
|
${BUILD}/ROOT/Controller/ObservateurChangeGroupe.class \
|
||||||
${BUILD}/Graphic/View/PanelEtudiant.class \
|
${BUILD}/ROOT/View/PanelEtudiant.class \
|
||||||
${BUILD}/Graphic/Controller/ActionListenerChangeEtu.class
|
${BUILD}/ROOT/Controller/ActionListenerChangeEtu.class
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/View/FenetreEtudiant.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/View/FenetreEtudiant.java
|
||||||
|
|
||||||
${BUILD}/Graphic/View/PanelEtudiant.class : ${SRC}/Graphic/View/PanelEtudiant.java \
|
${BUILD}/ROOT/View/PanelEtudiant.class : ${SRC}/ROOT/View/PanelEtudiant.java \
|
||||||
${BUILD}/Graphic/Controller/ActionListenerSuprEtu.class
|
${BUILD}/ROOT/Controller/ActionListenerSuprEtu.class
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/View/PanelEtudiant.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/View/PanelEtudiant.java
|
||||||
|
|
||||||
${BUILD}/Graphic/View/Chargement.class : ${SRC}/Graphic/View/Chargement.java
|
${BUILD}/ROOT/View/Chargement.class : ${SRC}/ROOT/View/Chargement.java
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/View/Chargement.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/View/Chargement.java
|
||||||
|
|
||||||
${BUILD}/Graphic/View/FenetreSelectionEtu.class : ${SRC}/Graphic/View/FenetreSelectionEtu.java \
|
${BUILD}/ROOT/View/FenetreSelectionEtu.class : ${SRC}/ROOT/View/FenetreSelectionEtu.java \
|
||||||
${BUILD}/Graphic/Controller/SelecteurEtudiant.class \
|
${BUILD}/ROOT/Controller/SelecteurEtudiant.class \
|
||||||
${BUILD}/Graphic/Controller/ActionListenerNouveauEtu.class
|
${BUILD}/ROOT/Controller/ActionListenerNouveauEtu.class
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/View/FenetreSelectionEtu.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/View/FenetreSelectionEtu.java
|
||||||
|
|
||||||
${BUILD}/Graphic/View/DefaultMutableTreeNodeGroupe.class : ${SRC}/Graphic/View/DefaultMutableTreeNodeGroupe.java
|
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/View/DefaultMutableTreeNodeGroupe.java
|
|
||||||
|
|
||||||
## Controller ##
|
## Controller ##
|
||||||
${BUILD}/Graphic/Controller/ActionListenerChangeEtu.class : ${SRC}/Graphic/Controller/ActionListenerChangeEtu.java
|
${BUILD}/ROOT/Controller/ActionListenerChangeEtu.class : ${SRC}/ROOT/Controller/ActionListenerChangeEtu.java
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/Controller/ActionListenerChangeEtu.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Controller/ActionListenerChangeEtu.java
|
||||||
|
|
||||||
${BUILD}/Graphic/Controller/ActionListenerSuprEtu.class : ${SRC}/Graphic/Controller/ActionListenerSuprEtu.java \
|
${BUILD}/ROOT/Controller/ActionListenerSuprEtu.class : ${SRC}/ROOT/Controller/ActionListenerSuprEtu.java \
|
||||||
${BUILD}/API/Etudiant.class
|
${BUILD}/API/Etudiant.class
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/Controller/ActionListenerSuprEtu.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Controller/ActionListenerSuprEtu.java
|
||||||
|
|
||||||
|
|
||||||
${BUILD}/Graphic/Controller/ObservateurFenetre.class : ${SRC}/Graphic/Controller/ObservateurFenetre.java
|
${BUILD}/ROOT/Controller/ObservateurFenetre.class : ${SRC}/ROOT/Controller/ObservateurFenetre.java
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/Controller/ObservateurFenetre.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Controller/ObservateurFenetre.java
|
||||||
|
|
||||||
${BUILD}/Graphic/Controller/ObservateurModifGroupe.class : ${SRC}/Graphic/Controller/ObservateurModifGroupe.java \
|
${BUILD}/ROOT/Controller/ObservateurModifGroupe.class : ${SRC}/ROOT/Controller/ObservateurModifGroupe.java \
|
||||||
${BUILD}/Graphic/View/FenetreSelectionEtu.class
|
${BUILD}/ROOT/View/FenetreSelectionEtu.class
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/Controller/ObservateurModifGroupe.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Controller/ObservateurModifGroupe.java
|
||||||
|
|
||||||
${BUILD}/Graphic/Controller/ObservateurChangeGroupe.class : ${SRC}/Graphic/Controller/ObservateurChangeGroupe.java
|
${BUILD}/ROOT/Controller/ObservateurChangeGroupe.class : ${SRC}/ROOT/Controller/ObservateurChangeGroupe.java
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/Controller/ObservateurChangeGroupe.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Controller/ObservateurChangeGroupe.java
|
||||||
|
|
||||||
${BUILD}/Graphic/Controller/SelecteurEtudiant.class : ${SRC}/Graphic/Controller/SelecteurEtudiant.java
|
${BUILD}/ROOT/Controller/SelecteurEtudiant.class : ${SRC}/ROOT/Controller/SelecteurEtudiant.java
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/Controller/SelecteurEtudiant.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Controller/SelecteurEtudiant.java
|
||||||
|
|
||||||
${BUILD}/Graphic/Controller/ActionListenerNouveauEtu.class : ${SRC}/Graphic/Controller/ActionListenerNouveauEtu.java
|
${BUILD}/ROOT/Controller/ActionListenerNouveauEtu.class : ${SRC}/ROOT/Controller/ActionListenerNouveauEtu.java
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/Controller/ActionListenerNouveauEtu.java
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Controller/ActionListenerNouveauEtu.java
|
||||||
|
|
||||||
${BUILD}/Graphic/Controller/TreeSelectionListenerGroupe.class : ${SRC}/Graphic/Controller/TreeSelectionListenerGroupe.java \
|
|
||||||
${BUILD}/Graphic/Controller/TreeSelectionEventGroupe.class
|
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/Controller/TreeSelectionListenerGroupe.java
|
|
||||||
|
|
||||||
${BUILD}/Graphic/Controller/TreeSelectionEventGroupe.class : ${SRC}/Graphic/Controller/TreeSelectionEventGroupe.java
|
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/Controller/TreeSelectionEventGroupe.java
|
|
||||||
##....
|
##....
|
||||||
|
|
||||||
|
|
||||||
## Model ###
|
## Model ###
|
||||||
|
|
||||||
${BUILD}/Graphic/Model/Model.class : ${SRC}/Graphic/Model/Model.java \
|
${BUILD}/ROOT/Model/Model.class : ${SRC}/ROOT/Model/Model.java \
|
||||||
${BUILD}/Graphic/View/FenetreGroupe.class \
|
${BUILD}/ROOT/View/FenetreGroupe.class \
|
||||||
${BUILD}/Graphic/View/FenetreEtudiant.class \
|
${BUILD}/ROOT/View/FenetreEtudiant.class \
|
||||||
${BUILD}/Graphic/View/Chargement.class \
|
${BUILD}/ROOT/View/Chargement.class \
|
||||||
${BUILD}/Graphic/Util/BD.class \
|
${BUILD}/ROOT/Util/BD.class \
|
||||||
${BUILD}/Graphic/Controller/TreeSelectionListenerGroupe.class \
|
${BUILD}/ROOT/Util/User.class
|
||||||
${BUILD}/Graphic/View/JTreeGroupe.class
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ROOT/Model/Model.java
|
||||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/Model/Model.java
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## ETU ##
|
||||||
|
|
||||||
|
## Util ###
|
||||||
|
|
||||||
|
${BUILD}/ETU/Util/BD.class : ${SRC}/ETU/Util/BD.java
|
||||||
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ETU/Util/BD.java
|
||||||
|
|
||||||
|
${BUILD}/ETU/Util/User.class : ${SRC}/ETU/Util/User.java
|
||||||
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ETU/Util/User.java
|
||||||
|
|
||||||
|
## View ##
|
||||||
|
|
||||||
|
${BUILD}/ETU/View/FenetreGroupe.class : ${SRC}/ETU/View/FenetreGroupe.java \
|
||||||
|
${BUILD}/ETU/Controller/ObservateurFenetre.class \
|
||||||
|
${BUILD}/ETU/Controller/ObservateurChangeGroupe.class
|
||||||
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ETU/View/FenetreGroupe.java
|
||||||
|
|
||||||
|
${BUILD}/ETU/View/FenetreEtudiant.class :${SRC}/ETU/View/FenetreEtudiant.java \
|
||||||
|
${BUILD}/ETU/Controller/ObservateurFenetre.class \
|
||||||
|
${BUILD}/ETU/Controller/ObservateurChangeGroupe.class \
|
||||||
|
${BUILD}/ETU/View/PanelEtudiant.class \
|
||||||
|
${BUILD}/ETU/Controller/ActionListenerChangeEtu.class
|
||||||
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ETU/View/FenetreEtudiant.java
|
||||||
|
|
||||||
|
${BUILD}/ETU/View/PanelEtudiant.class : ${SRC}/ETU/View/PanelEtudiant.java
|
||||||
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ETU/View/PanelEtudiant.java
|
||||||
|
|
||||||
|
${BUILD}/ETU/View/Chargement.class : ${SRC}/ETU/View/Chargement.java
|
||||||
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ETU/View/Chargement.java
|
||||||
|
|
||||||
|
|
||||||
|
## Controller ##
|
||||||
|
${BUILD}/ETU/Controller/ActionListenerChangeEtu.class : ${SRC}/ETU/Controller/ActionListenerChangeEtu.java
|
||||||
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ETU/Controller/ActionListenerChangeEtu.java
|
||||||
|
|
||||||
|
${BUILD}/ETU/Controller/ObservateurFenetre.class : ${SRC}/ETU/Controller/ObservateurFenetre.java
|
||||||
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ETU/Controller/ObservateurFenetre.java
|
||||||
|
|
||||||
|
${BUILD}/ETU/Controller/ObservateurChangeGroupe.class : ${SRC}/ETU/Controller/ObservateurChangeGroupe.java
|
||||||
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ETU/Controller/ObservateurChangeGroupe.java
|
||||||
|
|
||||||
|
##....
|
||||||
|
|
||||||
|
|
||||||
|
## Model ###
|
||||||
|
|
||||||
|
${BUILD}/ETU/Model/Model.class : ${SRC}/ETU/Model/Model.java \
|
||||||
|
${BUILD}/ETU/View/FenetreGroupe.class \
|
||||||
|
${BUILD}/ETU/View/FenetreEtudiant.class \
|
||||||
|
${BUILD}/ETU/View/Chargement.class \
|
||||||
|
${BUILD}/ETU/Util/BD.class \
|
||||||
|
${BUILD}/ETU/Util/User.class
|
||||||
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/ETU/Model/Model.java
|
||||||
|
|
||||||
|
|
||||||
## TEST ##
|
## TEST ##
|
||||||
|
|
||||||
|
${BUILD}/Test/Connexion.class : ${SRC}/Test/Connexion.java
|
||||||
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Test/Connexion.java
|
||||||
|
|
||||||
${BUILD}/Test/TestTexteMNP.class : ${SRC}/Test/TestTexteMNP.java \
|
${BUILD}/Test/TestTexteMNP.class : ${SRC}/Test/TestTexteMNP.java \
|
||||||
${BUILD}/MNP/EtudiantNP.class \
|
${BUILD}/MNP/EtudiantNP.class \
|
||||||
${BUILD}/MNP/GroupeNP.class \
|
${BUILD}/MNP/GroupeNP.class \
|
||||||
${BUILD}/MNP/ChangementNP.class \
|
${BUILD}/MNP/ChangementNP.class \
|
||||||
${BUILD}/MNP/AbstractGroupeFactoryNP.class \
|
${BUILD}/MNP/AbstractGroupeFactoryNP.class \
|
||||||
${BUILD}/MNP/AbstractChangementFactoryNP.class \
|
${BUILD}/MNP/AbstractChangementFactoryNP.class \
|
||||||
${BUILD}/Graphic/Model/Model.class
|
${BUILD}/ROOT/Model/Model.class \
|
||||||
${JAVAC} -Xlint:deprecation ${JAVAC_OPTIONS} ${SRC}/Test/TestTexteMNP.java
|
${BUILD}/ETU/Model/Model.class \
|
||||||
|
${BUILD}/Test/Connexion.class
|
||||||
|
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Test/TestTexteMNP.java
|
||||||
|
|
||||||
# ## JARS ##
|
# ## JARS ##
|
||||||
|
|
||||||
|
@ -110,4 +110,13 @@ public interface AbstractGroupeFactory {
|
|||||||
*/
|
*/
|
||||||
public Set<Groupe> getGroupesOfEtudiant(Etudiant etu);
|
public Set<Groupe> getGroupesOfEtudiant(Etudiant etu);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ajout a l'API pour changer facilement de nom de groupe
|
||||||
|
*
|
||||||
|
* @param g le groupe
|
||||||
|
* @param name le nom
|
||||||
|
* @return true si possible
|
||||||
|
*/
|
||||||
|
public boolean changeNameGroupe(Groupe g, String name);
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,6 @@ public interface Groupe extends MonPrint {
|
|||||||
* @param s le nouveau nom
|
* @param s le nouveau nom
|
||||||
*/
|
*/
|
||||||
public void setName(String s);
|
public void setName(String s);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see MonPrint
|
* @see MonPrint
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package fr.iutfbleau.projetIHM2022FI2.Graphic.Controller;
|
package fr.iutfbleau.projetIHM2022FI2.ETU.Controller;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
import fr.iutfbleau.projetIHM2022FI2.API.Etudiant;
|
import fr.iutfbleau.projetIHM2022FI2.API.Etudiant;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.Model.Model;
|
import fr.iutfbleau.projetIHM2022FI2.ETU.Model.Model;
|
||||||
|
|
||||||
public class ActionListenerChangeEtu implements ActionListener {
|
public class ActionListenerChangeEtu implements ActionListener {
|
||||||
public Etudiant etudiant;
|
public Etudiant etudiant;
|
@ -1,9 +1,9 @@
|
|||||||
package fr.iutfbleau.projetIHM2022FI2.Graphic.Controller;
|
package fr.iutfbleau.projetIHM2022FI2.ETU.Controller;
|
||||||
|
|
||||||
import java.awt.event.*;
|
import java.awt.event.*;
|
||||||
|
|
||||||
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
|
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.Model.Model;
|
import fr.iutfbleau.projetIHM2022FI2.ETU.Model.Model;
|
||||||
|
|
||||||
public class ObservateurChangeGroupe implements ActionListener{
|
public class ObservateurChangeGroupe implements ActionListener{
|
||||||
private Model m;
|
private Model m;
|
@ -1,4 +1,4 @@
|
|||||||
package fr.iutfbleau.projetIHM2022FI2.Graphic.Controller;
|
package fr.iutfbleau.projetIHM2022FI2.ETU.Controller;
|
||||||
import java.awt.event.WindowEvent;
|
import java.awt.event.WindowEvent;
|
||||||
import java.awt.event.WindowListener;
|
import java.awt.event.WindowListener;
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
@ -0,0 +1,367 @@
|
|||||||
|
package fr.iutfbleau.projetIHM2022FI2.ETU.Model;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.API.AbstractGroupeFactory;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.API.Etudiant;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.API.TypeGroupe;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.MNP.AbstractGroupeFactoryNP;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.MNP.GroupeNP;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.ETU.Controller.ObservateurFenetre;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.ETU.Util.BD;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.ETU.View.Chargement;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.ETU.View.FenetreEtudiant;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.ETU.View.FenetreGroupe;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Le Model de L'IHM
|
||||||
|
*/
|
||||||
|
public class Model{
|
||||||
|
|
||||||
|
private JPanel panGroupe;
|
||||||
|
private FenetreGroupe fenGr;
|
||||||
|
private FenetreEtudiant fenEtu;
|
||||||
|
private AbstractGroupeFactory promo;
|
||||||
|
private JFrame fenetre;
|
||||||
|
private Etudiant Selected;
|
||||||
|
//private JTree tree;
|
||||||
|
private BD bd;
|
||||||
|
public Model(){
|
||||||
|
this.fenetre=new JFrame();
|
||||||
|
this.fenetre.setSize(1200, 720);
|
||||||
|
this.fenetre.setLocation(100,100);
|
||||||
|
this.fenetre.addWindowListener(new ObservateurFenetre());
|
||||||
|
this.fenetre.setLayout(new GridLayout(1,2));
|
||||||
|
this.fenetre.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
|
||||||
|
this.fenetre.setMinimumSize(this.fenetre.getSize());
|
||||||
|
this.bd=new BD(this.fenetre);
|
||||||
|
Chargement ch=new Chargement(this.fenetre);
|
||||||
|
this.promo=this.getPromo(ch);
|
||||||
|
ch.dispose();
|
||||||
|
this.fenetre.setVisible(true);
|
||||||
|
this.initEtu(null);
|
||||||
|
if(this.promo==null){
|
||||||
|
this.fenGr=new FenetreGroupe(null, this, null);
|
||||||
|
this.fenEtu=new FenetreEtudiant(null, this.Selected);
|
||||||
|
}else{
|
||||||
|
this.fenGr=new FenetreGroupe(this.promo.getPromotion(), this,this.promo.getGroupesOfEtudiant(this.Selected));
|
||||||
|
this.fenEtu=new FenetreEtudiant(this.promo.getPromotion(), this.Selected);
|
||||||
|
}
|
||||||
|
this.panGroupe=new JPanel(new GridLayout(1,1));
|
||||||
|
if(this.promo!=null){
|
||||||
|
this.showGroupe(this.promo.getPromotion());
|
||||||
|
}else{
|
||||||
|
this.showGroupe(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fonction pour refresh/changer de groupe d'affichage
|
||||||
|
* @param g le groupe a afficher
|
||||||
|
*/
|
||||||
|
public void showGroupe(Groupe g){
|
||||||
|
if(g!=null)
|
||||||
|
g=this.bd.refreshALL(g);
|
||||||
|
this.panGroupe.removeAll();
|
||||||
|
this.fenGr=new FenetreGroupe(g, this, this.promo.getGroupesOfEtudiant(this.Selected));
|
||||||
|
this.fenEtu=new FenetreEtudiant(g, this.Selected);
|
||||||
|
this.fenetre.getContentPane().removeAll();
|
||||||
|
this.panGroupe.add(this.fenGr.getPan());
|
||||||
|
this.panGroupe.revalidate();
|
||||||
|
this.fenetre.add(this.panGroupe);
|
||||||
|
JScrollPane scroll=new JScrollPane(this.fenEtu.getPan());
|
||||||
|
scroll.getVerticalScrollBar().setUnitIncrement(15);
|
||||||
|
this.fenetre.add(scroll);
|
||||||
|
this.fenetre.revalidate();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* getteur de la fenetre
|
||||||
|
* @return JFrame la fenetre
|
||||||
|
*/
|
||||||
|
public JFrame getFenetre() {
|
||||||
|
return fenetre;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fonction permettant d'initialiser l'AbstractFactory de la promo
|
||||||
|
* avec la Base de donné
|
||||||
|
* @param Chargement: pour indiquer la progression du chargement
|
||||||
|
*/
|
||||||
|
private AbstractGroupeFactory getPromo(Chargement chargement){
|
||||||
|
AbstractGroupeFactory agf=null;
|
||||||
|
Connection cnx=this.bd.cnx();
|
||||||
|
//on récupère le Groupe de la BD n'ayant pas de Parent (La promo donc)
|
||||||
|
try{
|
||||||
|
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;");
|
||||||
|
ResultSet rs = pst.executeQuery();
|
||||||
|
rs=pst.executeQuery();
|
||||||
|
rs.last();
|
||||||
|
int nbgrp=rs.getRow();
|
||||||
|
rs=pst.executeQuery();
|
||||||
|
try{
|
||||||
|
//Si il existe bien une promotion
|
||||||
|
if(rs.next()){
|
||||||
|
//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.init(groupe, (100/nbgrp), chargement);
|
||||||
|
//On créer la Factory
|
||||||
|
agf=new AbstractGroupeFactoryNP(groupe, this.fenetre);
|
||||||
|
}else{
|
||||||
|
//Si aucune ligne et donc pas de promo:
|
||||||
|
this.promo=null;
|
||||||
|
}
|
||||||
|
}catch(SQLException e){
|
||||||
|
}
|
||||||
|
rs.close();
|
||||||
|
pst.close();
|
||||||
|
}catch(SQLException e){
|
||||||
|
}
|
||||||
|
this.bd.close(cnx);
|
||||||
|
return agf;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<Etudiant> getEtudiant(){
|
||||||
|
return this.bd.getEtudiant();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void init(Groupe g, int pourcentage, Chargement ch){
|
||||||
|
this.bd.refreshALL(g);
|
||||||
|
ch.addPourcent(pourcentage+1);
|
||||||
|
for(Groupe gr:g.getSousGroupes()){
|
||||||
|
this.init(gr, pourcentage, ch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initEtu(String err){
|
||||||
|
Set<Etudiant> liste=this.promo.getPromotion().getEtudiants();
|
||||||
|
JPanel panel = new JPanel();
|
||||||
|
JPanel myPanel = new JPanel();
|
||||||
|
JTextField idd = new JTextField(15);
|
||||||
|
myPanel.add(new JLabel("Id:"));
|
||||||
|
myPanel.add(idd);
|
||||||
|
if(err!=null){
|
||||||
|
myPanel.add(new JLabel(err, SwingConstants.RIGHT));
|
||||||
|
}
|
||||||
|
panel.add(myPanel);
|
||||||
|
|
||||||
|
if(JOptionPane.showConfirmDialog(null, panel, "login", JOptionPane.OK_CANCEL_OPTION) != JOptionPane.OK_OPTION){
|
||||||
|
this.fenetre.dispose();
|
||||||
|
System.exit(0);
|
||||||
|
}else{
|
||||||
|
try{
|
||||||
|
int id=Integer.parseInt(idd.getText());
|
||||||
|
for(Etudiant et:liste){
|
||||||
|
if(et.getId()==id){
|
||||||
|
this.Selected=et;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}catch(NumberFormatException e){
|
||||||
|
this.initEtu("Id incomprhéhensible");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.initEtu("Etudiant introuvable");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ***********************
|
||||||
|
// FONCTION POUR SUPRIMER UN ETUDIANT
|
||||||
|
// ***********************
|
||||||
|
|
||||||
|
|
||||||
|
public boolean deleteEtu(Etudiant e){
|
||||||
|
if(this.deleteEtutoChildren(e, this.fenGr.getG())){
|
||||||
|
this.promo.dropFromGroupe(this.fenGr.getG(), e);
|
||||||
|
this.showGroupe(this.fenGr.getG());
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean deleteEtutoChildren(Etudiant e, Groupe g){
|
||||||
|
if(g.getMax()<g.getEtudiants().size()-1)
|
||||||
|
return false;
|
||||||
|
for(Groupe sous: g.getSousGroupes()){
|
||||||
|
if(this.deleteEtutoChildren(e, sous)==false){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ***********************
|
||||||
|
// FONCTION POUR Ajouter UN ETUDIANT
|
||||||
|
// ***********************
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fonction pour ajouter un étudiant au groupe
|
||||||
|
* @param g
|
||||||
|
* @param e
|
||||||
|
* @return boolean pour savoir si il a pus être ajouter
|
||||||
|
*/
|
||||||
|
public boolean addEtudiant(Groupe g, Etudiant e){
|
||||||
|
//Si on a la place
|
||||||
|
if(g!=g.getPointPoint())
|
||||||
|
if(this.addEtuToParent(g.getPointPoint(), e)==false)
|
||||||
|
return false;
|
||||||
|
//On induqe a la BD de sauvegarder cette modification
|
||||||
|
this.promo.addToGroupe(g, e);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fonction recursive pour ajouter l'etudiant a ses parents si il ne l'ont pas
|
||||||
|
* @param g groupe
|
||||||
|
* @param e etudiant
|
||||||
|
* @return true si possible
|
||||||
|
*/
|
||||||
|
private boolean addEtuToParent(Groupe g, Etudiant e){
|
||||||
|
if(g.getMax()==g.getSize())
|
||||||
|
return false;
|
||||||
|
for(Etudiant et:g.getEtudiants()){
|
||||||
|
if(et.getId()==e.getId()){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(g.getPointPoint()!=g){
|
||||||
|
if(this.addEtuToParent(g.getPointPoint(), e)==false){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.promo.addToGroupe(g, e);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ***********************
|
||||||
|
// FONCTION POUR SUPRIMER UN GROUPE
|
||||||
|
// ***********************
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fonction pour supprimer un groupe
|
||||||
|
* @param g le groupe a supprimer
|
||||||
|
*/
|
||||||
|
public void delete(Groupe g){
|
||||||
|
//On ne peut pas supprimer la promo normallement
|
||||||
|
if(g==this.promo.getPromotion()){
|
||||||
|
if(JOptionPane.showConfirmDialog(this.fenetre, "Attention ête vous sûr de vouloir supprimer la promo", "Attention", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
|
||||||
|
this.promo.deleteGroupe(g);
|
||||||
|
this.promo=null;
|
||||||
|
this.showGroupe(null);
|
||||||
|
}else{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//JOptionPane.showMessageDialog(this.fenetre, "impossible de supprimer la promotion", "alerte", JOptionPane.ERROR_MESSAGE);
|
||||||
|
}else{
|
||||||
|
//on suprime le groupe
|
||||||
|
this.promo.deleteGroupe(g);
|
||||||
|
this.showGroupe(g.getPointPoint());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ***********************
|
||||||
|
// FONCTION POUR RENOMER UN GROUPE
|
||||||
|
// ***********************
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fonction pour renomer un groupe
|
||||||
|
* @param name
|
||||||
|
* @param g
|
||||||
|
*/
|
||||||
|
public void rename(String name, Groupe g){
|
||||||
|
this.promo.changeNameGroupe(g, name);
|
||||||
|
this.showGroupe(g);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// **********************
|
||||||
|
// FONCTION POUR CREER UN GROUPE
|
||||||
|
// **********************
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fonction permetant de créer une partition d'un groupe
|
||||||
|
* @param g le groupe a partitionner
|
||||||
|
* @param n le nombre de partition
|
||||||
|
* @param name le nom des partition
|
||||||
|
*/
|
||||||
|
public void partition(Groupe g, int n, String name){
|
||||||
|
Chargement ch=new Chargement(this.fenetre);
|
||||||
|
this.fenetre.setVisible(false);
|
||||||
|
this.promo.createPartition(g, name, n);
|
||||||
|
ch.dispose();
|
||||||
|
this.fenetre.setVisible(true);
|
||||||
|
this.showGroupe(g);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fonction permettant de créer un sous-groupe d'un groupe
|
||||||
|
* @param g le groupe parent
|
||||||
|
* @param name le nom du sous-groupe
|
||||||
|
* @param min le nombre min d'etudiant
|
||||||
|
* @param max le nombre max d'etudiant
|
||||||
|
* @param ajout la liste des étudiants a ajouter au groupe
|
||||||
|
*/
|
||||||
|
public void free(Groupe g, String name, int min, int max, Set<Etudiant> ajout){
|
||||||
|
Chargement ch=new Chargement(this.fenetre);
|
||||||
|
this.fenetre.setVisible(false);
|
||||||
|
//on creer le groupe
|
||||||
|
this.promo.createGroupe(g, name, min, max);
|
||||||
|
Groupe creer=null;
|
||||||
|
//on le recupere
|
||||||
|
for(Groupe gr:g.getSousGroupes()){
|
||||||
|
if(gr.getName()==name){
|
||||||
|
creer=gr;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//on y ajoute les étudiant
|
||||||
|
int n=0;
|
||||||
|
for(Etudiant e:ajout){
|
||||||
|
if(this.addEtudiant(creer, e)==false)
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
creer=this.bd.refreshALL(creer);
|
||||||
|
ch.dispose();
|
||||||
|
this.fenetre.setVisible(true);
|
||||||
|
if(n>0)
|
||||||
|
JOptionPane.showMessageDialog(this.fenetre, "erreur impossible d'ajouter "+n+" etudiants par manque de place dans le groupe de ses parents", "erreur", JOptionPane.ERROR_MESSAGE);
|
||||||
|
//Si finalement avec les etudiants qui n'ont pas pus être ajouter le min n'est pas atteint
|
||||||
|
if(creer.getEtudiants().size()+1<=creer.getMin()){
|
||||||
|
//On le supprime
|
||||||
|
this.promo.deleteGroupe(creer);
|
||||||
|
JOptionPane.showMessageDialog(this.fenetre, "en raison du manque d'etudiant pour le nombre min le groupe n'a pas pus être créer", "errer", JOptionPane.ERROR_MESSAGE);
|
||||||
|
}
|
||||||
|
this.showGroupe(g);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addPromo(int min, int max, String name, Set<Etudiant> ajout){
|
||||||
|
Chargement ch=new Chargement(this.fenetre);
|
||||||
|
this.promo=new AbstractGroupeFactoryNP(name, min, max, this.fenetre);
|
||||||
|
this.fenetre.setVisible(false);
|
||||||
|
ch.addPourcent(20);
|
||||||
|
int pourcent=85/ajout.size();
|
||||||
|
for(Etudiant e:ajout){
|
||||||
|
this.addEtudiant(this.promo.getPromotion(), e);
|
||||||
|
ch.addPourcent(pourcent);
|
||||||
|
}
|
||||||
|
ch.dispose();
|
||||||
|
this.fenetre.setVisible(true);
|
||||||
|
this.showGroupe(this.promo.getPromotion());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package fr.iutfbleau.projetIHM2022FI2.Graphic.Util;
|
package fr.iutfbleau.projetIHM2022FI2.ETU.Util;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
@ -11,9 +11,12 @@ import java.sql.SQLException;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.API.*;
|
import fr.iutfbleau.projetIHM2022FI2.API.*;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.View.Chargement;
|
|
||||||
import fr.iutfbleau.projetIHM2022FI2.MNP.*;
|
import fr.iutfbleau.projetIHM2022FI2.MNP.*;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.ETU.View.Chargement;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class relative a la BD
|
||||||
|
*/
|
||||||
public class BD {
|
public class BD {
|
||||||
private JFrame fenetre;
|
private JFrame fenetre;
|
||||||
public BD(JFrame fenetre){
|
public BD(JFrame fenetre){
|
||||||
@ -36,7 +39,10 @@ public class BD {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Erreur de connection
|
||||||
|
* @return true si posssible
|
||||||
|
*/
|
||||||
private boolean erreurCO(){
|
private boolean erreurCO(){
|
||||||
if(JOptionPane.showConfirmDialog(this.fenetre, "erreur connection a la BD reassayer?", "erreur connection", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
|
if(JOptionPane.showConfirmDialog(this.fenetre, "erreur connection a la BD reassayer?", "erreur connection", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
|
||||||
return true;
|
return true;
|
||||||
@ -46,14 +52,6 @@ public class BD {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean erreurSQL(){
|
|
||||||
if(JOptionPane.showConfirmDialog(this.fenetre, "erreur lors de la modification, reasssayer?", "erreur SQL", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
|
|
||||||
return true;
|
|
||||||
}else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void close(AutoCloseable clos){
|
public void close(AutoCloseable clos){
|
||||||
try{
|
try{
|
||||||
clos.close();
|
clos.close();
|
||||||
@ -110,9 +108,9 @@ public class BD {
|
|||||||
//autrement on recupere l'etudiant
|
//autrement on recupere l'etudiant
|
||||||
for(Etudiant e: g.getPointPoint().getEtudiants()){
|
for(Etudiant e: g.getPointPoint().getEtudiants()){
|
||||||
if(e.getId()==rs.getInt(3)){
|
if(e.getId()==rs.getInt(3)){
|
||||||
exist=true;
|
exist=true;
|
||||||
g.addEtudiant(e);
|
g.addEtudiant(e);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(exist==false){
|
if(exist==false){
|
||||||
@ -209,148 +207,6 @@ public class BD {
|
|||||||
return g;
|
return g;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public boolean saveEtu(Etudiant etudiant, Groupe g){
|
|
||||||
Connection cnx = this.cnx();
|
|
||||||
try{
|
|
||||||
PreparedStatement pst=cnx.prepareStatement(
|
|
||||||
"Select id from Etudiant where id=?; ");
|
|
||||||
pst.setString(1, String.valueOf(etudiant.getId()));
|
|
||||||
ResultSet rs=pst.executeQuery();
|
|
||||||
if(rs.next()){
|
|
||||||
//L'etudiant est déja connu de la BD
|
|
||||||
pst.close();
|
|
||||||
pst=cnx.prepareStatement(
|
|
||||||
"INSERT INTO `CONTIENT` (`idGroupe`, `idEt`) VALUES (?, ?);");
|
|
||||||
pst.setInt(2, etudiant.getId());
|
|
||||||
pst.setInt(1, g.getId());
|
|
||||||
pst.executeUpdate();
|
|
||||||
}else{
|
|
||||||
pst.close();
|
|
||||||
pst=cnx.prepareStatement(
|
|
||||||
"INSERT INTO `Etudiant` (`id`, `nom`, `prenom`) VALUES (?, ?, ?) ;");
|
|
||||||
pst.setInt(1, etudiant.getId());
|
|
||||||
pst.setString(2, etudiant.getNom());
|
|
||||||
pst.setString(3, etudiant.getPrenom());
|
|
||||||
pst.executeUpdate();
|
|
||||||
}
|
|
||||||
rs.close();
|
|
||||||
pst.close();
|
|
||||||
}catch(SQLException e){
|
|
||||||
System.out.println(e.toString());
|
|
||||||
if(this.erreurSQL()){
|
|
||||||
this.saveEtu(etudiant, g);
|
|
||||||
}else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.close(cnx);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean changeNameGroupe(Groupe g, String name){
|
|
||||||
Connection cnx=this.cnx();
|
|
||||||
try{
|
|
||||||
PreparedStatement pst=cnx.prepareStatement(
|
|
||||||
"UPDATE `Groupe` SET `nom` = ? WHERE `Groupe`.`id` = ? "
|
|
||||||
);
|
|
||||||
pst.setString(1, name);
|
|
||||||
pst.setInt(2, g.getId());
|
|
||||||
pst.executeUpdate();
|
|
||||||
pst.close();
|
|
||||||
}catch(SQLException e){
|
|
||||||
System.out.println(e.toString());
|
|
||||||
if(this.erreurSQL()){
|
|
||||||
this.changeNameGroupe(g, name);
|
|
||||||
}else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.close(cnx);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean suprGroupe(Groupe g){
|
|
||||||
Connection cnx=this.cnx();
|
|
||||||
try{
|
|
||||||
PreparedStatement pst=cnx.prepareStatement("Delete FROM Groupe where id=?;");
|
|
||||||
pst.setInt(1, g.getId());
|
|
||||||
pst.executeUpdate();
|
|
||||||
pst.close();
|
|
||||||
}catch(SQLException e){
|
|
||||||
System.out.println(e.toString());
|
|
||||||
if(this.erreurSQL()){
|
|
||||||
this.suprGroupe(g);
|
|
||||||
}else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.close(cnx);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public boolean saveGroupe(Groupe g, int taille, Chargement ch){
|
|
||||||
Connection cnx=this.cnx();
|
|
||||||
try{
|
|
||||||
PreparedStatement pst=cnx.prepareStatement(
|
|
||||||
"INSERT INTO `Groupe` (`id`, `nom`, `min`, `max`, `Type`, `id-parent`) VALUES (?, ?, ?, ?, ?, ?);"
|
|
||||||
);
|
|
||||||
pst.setInt(1, g.getId());
|
|
||||||
pst.setString(2, g.getName());
|
|
||||||
pst.setInt(3, g.getMin());
|
|
||||||
pst.setInt(4, g.getMax());
|
|
||||||
pst.setString(5, g.getType().name());
|
|
||||||
pst.setInt(6, g.getPointPoint().getId());
|
|
||||||
pst.executeUpdate();
|
|
||||||
pst.close();
|
|
||||||
for(Etudiant e: g.getEtudiants()){
|
|
||||||
this.saveEtu(e, g);
|
|
||||||
}
|
|
||||||
if(ch!=null)
|
|
||||||
ch.addPourcent(taille);
|
|
||||||
for(Groupe sous:g.getSousGroupes()){
|
|
||||||
this.saveGroupe(sous, taille, ch);
|
|
||||||
}
|
|
||||||
}catch(SQLException e){
|
|
||||||
System.out.println(e.toString());
|
|
||||||
if(this.erreurSQL()){
|
|
||||||
this.saveGroupe(g, taille, ch);
|
|
||||||
}else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.close(cnx);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean createGroupe(Groupe g){
|
|
||||||
Connection cnx=this.cnx();
|
|
||||||
try{
|
|
||||||
PreparedStatement pst=cnx.prepareStatement(
|
|
||||||
"INSERT INTO `Groupe` (`id`, `nom`, `min`, `max`, `Type`, `id-parent`) VALUES (?, ?, ?, ?, ?, ?);"
|
|
||||||
);;
|
|
||||||
//On set le mex ID:
|
|
||||||
pst.setInt(1,g.getId());
|
|
||||||
pst.setString(2, g.getName());
|
|
||||||
pst.setInt(3, g.getMin());
|
|
||||||
pst.setInt(4, g.getMax());
|
|
||||||
pst.setString(5, g.getType().name());
|
|
||||||
pst.setInt(6, g.getPointPoint().getId());
|
|
||||||
pst.executeUpdate();
|
|
||||||
pst.close();
|
|
||||||
}catch(SQLException e){
|
|
||||||
System.out.println(e.toString());
|
|
||||||
if(this.erreurSQL()){
|
|
||||||
this.saveGroupe(g, 0, null);
|
|
||||||
}else{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.close(cnx);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set<Etudiant> getEtudiant(){
|
public Set<Etudiant> getEtudiant(){
|
||||||
Connection cnx=this.cnx();
|
Connection cnx=this.cnx();
|
||||||
Set<Etudiant> ret=new LinkedHashSet<>();
|
Set<Etudiant> ret=new LinkedHashSet<>();
|
||||||
@ -369,37 +225,4 @@ public class BD {
|
|||||||
this.close(cnx);
|
this.close(cnx);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteEtu(Etudiant et, Groupe g){
|
|
||||||
Connection cnx=this.cnx();
|
|
||||||
try{
|
|
||||||
PreparedStatement pst=cnx.prepareStatement(
|
|
||||||
"DELETE FROM CONTIENT WHERE idGroupe=? AND idEt=?; "
|
|
||||||
);
|
|
||||||
pst.setInt(2, et.getId());
|
|
||||||
this.deleteEtu(pst, cnx, g);
|
|
||||||
pst.close();
|
|
||||||
}catch(SQLException e){
|
|
||||||
System.out.println(e.toString());
|
|
||||||
if(this.erreurSQL()){
|
|
||||||
this.deleteEtu(et, g);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.close(cnx);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void deleteEtu(PreparedStatement pst, Connection cnx, Groupe g){
|
|
||||||
try{
|
|
||||||
pst.setInt(1, g.getId());
|
|
||||||
pst.executeUpdate();
|
|
||||||
for(Groupe sous: g.getSousGroupes()){
|
|
||||||
this.deleteEtu(pst, cnx, sous);
|
|
||||||
}
|
|
||||||
}catch(SQLException e){
|
|
||||||
System.out.println(e.toString());
|
|
||||||
if(this.erreurSQL()){
|
|
||||||
this.deleteEtu(pst, cnx, g);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package fr.iutfbleau.projetIHM2022FI2.ETU.Util;
|
||||||
|
|
||||||
|
public enum User {
|
||||||
|
ROOT("root"), PROF("proffeseur"), ETUDIANT("etudiant");
|
||||||
|
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
private User(String s) {
|
||||||
|
name = s;
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package fr.iutfbleau.projetIHM2022FI2.Graphic.View;
|
package fr.iutfbleau.projetIHM2022FI2.ETU.View;
|
||||||
|
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
|
|
||||||
@ -14,11 +14,11 @@ public class Chargement extends JComponent{
|
|||||||
private int pourcentage;
|
private int pourcentage;
|
||||||
private JFrame fenetre;
|
private JFrame fenetre;
|
||||||
|
|
||||||
public Chargement(Dimension n){
|
public Chargement(JFrame n){
|
||||||
this.pourcentage=0;
|
this.pourcentage=0;
|
||||||
this.fenetre=new JFrame();
|
this.fenetre=new JFrame();
|
||||||
this.fenetre.setSize(n);
|
this.fenetre.setSize(n.getSize());
|
||||||
this.fenetre.setLocation(100,100);
|
this.fenetre.setLocation(n.getLocation());
|
||||||
this.fenetre.add(this, BorderLayout.CENTER);
|
this.fenetre.add(this, BorderLayout.CENTER);
|
||||||
this.repaint();
|
this.repaint();
|
||||||
this.fenetre.setVisible(true);
|
this.fenetre.setVisible(true);
|
@ -0,0 +1,63 @@
|
|||||||
|
package fr.iutfbleau.projetIHM2022FI2.ETU.View;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.API.Etudiant;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.API.TypeGroupe;
|
||||||
|
|
||||||
|
|
||||||
|
public class FenetreEtudiant{
|
||||||
|
private Set<Etudiant> etu;
|
||||||
|
private JPanel pan;
|
||||||
|
private Etudiant concerner;
|
||||||
|
private boolean partition;
|
||||||
|
public FenetreEtudiant(Groupe g, Etudiant e){
|
||||||
|
this.pan=new JPanel();
|
||||||
|
if(g!=null){
|
||||||
|
this.etu=g.getEtudiants();
|
||||||
|
}else{
|
||||||
|
this.etu=new LinkedHashSet<>();
|
||||||
|
}
|
||||||
|
this.concerner=e;
|
||||||
|
if(g.getPointPoint().getType()==TypeGroupe.PARTITION)
|
||||||
|
this.partition=true;
|
||||||
|
else{
|
||||||
|
this.partition=false;
|
||||||
|
}
|
||||||
|
this.draw();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void draw(){
|
||||||
|
if(this.etu.size()!=0){
|
||||||
|
this.pan.setLayout(new GridLayout(this.etu.size(), 1, 30, 0));
|
||||||
|
PanelEtudiant p=new PanelEtudiant(this.concerner, this.partition);
|
||||||
|
p.addActionChangeListener(null);
|
||||||
|
this.pan.add(p);
|
||||||
|
for(Etudiant e: this.etu){
|
||||||
|
if(this.concerner.getId() != e.getId()){
|
||||||
|
this.pan.add(p);
|
||||||
|
p=new PanelEtudiant(e,false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
this.pan.setLayout(new FlowLayout());
|
||||||
|
this.pan.add(new JLabel("Il n'y a pas d'étudiant"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void refresh(){
|
||||||
|
this.pan.removeAll();
|
||||||
|
this.draw();
|
||||||
|
this.pan.revalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
public JPanel getPan() {
|
||||||
|
return pan;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,98 @@
|
|||||||
|
package fr.iutfbleau.projetIHM2022FI2.ETU.View;
|
||||||
|
|
||||||
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.JScrollPane;
|
||||||
|
import java.awt.Font;
|
||||||
|
import java.awt.GridLayout;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.API.TypeGroupe;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.ETU.Model.Model;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.ETU.Controller.ObservateurChangeGroupe;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.awt.Color;
|
||||||
|
|
||||||
|
public class FenetreGroupe{
|
||||||
|
private Groupe g;
|
||||||
|
private JPanel pan;
|
||||||
|
private Model m;
|
||||||
|
private Set<Groupe> appartient;
|
||||||
|
public FenetreGroupe(Groupe g, Model m, Set<Groupe> appartient){
|
||||||
|
super();
|
||||||
|
this.g=g;
|
||||||
|
this.appartient=appartient;
|
||||||
|
this.m=m;
|
||||||
|
this.pan=new JPanel();
|
||||||
|
this.draw();
|
||||||
|
}
|
||||||
|
public Groupe getG() {
|
||||||
|
return this.g;
|
||||||
|
}
|
||||||
|
public void refresh(){
|
||||||
|
this.pan.removeAll();
|
||||||
|
this.draw();
|
||||||
|
this.pan.revalidate();
|
||||||
|
}
|
||||||
|
private void draw(){
|
||||||
|
if(g!=null){
|
||||||
|
int taille=1;
|
||||||
|
if(g.getType()==TypeGroupe.PARTITION || g.getType()==TypeGroupe.ROOT)
|
||||||
|
taille--;
|
||||||
|
if(g.getSousGroupes().size()>0)
|
||||||
|
this.pan.setLayout(new GridLayout(8, 1));
|
||||||
|
else{this.pan.setLayout(new GridLayout(7, 1));}
|
||||||
|
JPanel tache=new JPanel(new GridLayout(1,taille));
|
||||||
|
|
||||||
|
if(g.getType()!=TypeGroupe.ROOT){
|
||||||
|
JButton bout=new JButton(g.getPointPoint().getName());
|
||||||
|
bout.addActionListener(new ObservateurChangeGroupe(m, g.getPointPoint()));
|
||||||
|
tache.add(bout);
|
||||||
|
}
|
||||||
|
this.pan.add(tache);
|
||||||
|
JLabel titre=new JLabel("Group : "+g.getName(), JLabel.CENTER);
|
||||||
|
titre.setFont(new Font(Font.SERIF, Font.BOLD, titre.getFont().getSize()+10));
|
||||||
|
this.pan.add(titre);
|
||||||
|
this.pan.add(new JLabel("id= "+String.valueOf(g.getId()),JLabel.CENTER));
|
||||||
|
this.pan.add(new JLabel("min= "+String.valueOf(g.getMin()),JLabel.CENTER));
|
||||||
|
this.pan.add(new JLabel("max= "+String.valueOf(g.getMax()),JLabel.CENTER));
|
||||||
|
this.pan.add(new JLabel(g.getType().name(), JLabel.CENTER));
|
||||||
|
this.pan.add(new JLabel("Sous groupe:",JLabel.CENTER));
|
||||||
|
if(g.getSousGroupes().size()>0){
|
||||||
|
JPanel sous=new JPanel(new GridLayout(g.getSousGroupes().size(), 1));
|
||||||
|
for(Groupe gr: g.getSousGroupes()){
|
||||||
|
JButton b=new JButton(gr.getName());
|
||||||
|
boolean contenu=false;
|
||||||
|
for(Groupe t: this.appartient){
|
||||||
|
if(t.getId()==gr.getId()){
|
||||||
|
contenu=true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(contenu){
|
||||||
|
b.addActionListener(new ObservateurChangeGroupe(m, gr));
|
||||||
|
}else{
|
||||||
|
b.setBackground(Color.RED);
|
||||||
|
}
|
||||||
|
sous.add(b);
|
||||||
|
}
|
||||||
|
this.pan.add(new JScrollPane(sous));
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
JButton creer=new JButton("créer une promo");
|
||||||
|
creer.addActionListener(new ObservateurChangeGroupe(m, g));
|
||||||
|
this.pan.add(creer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setG(Groupe g) {
|
||||||
|
this.g = g;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAppartient(Set<Groupe> appartient) {
|
||||||
|
this.appartient = appartient;
|
||||||
|
}
|
||||||
|
public JPanel getPan() {
|
||||||
|
return pan;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
package fr.iutfbleau.projetIHM2022FI2.ETU.View;
|
||||||
|
|
||||||
|
import javax.swing.JLabel;
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.API.Etudiant;
|
||||||
|
|
||||||
|
import javax.swing.JButton;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
public class PanelEtudiant extends JPanel{
|
||||||
|
private JButton deplacer;
|
||||||
|
public PanelEtudiant(Etudiant e, boolean concerner){
|
||||||
|
super(new GridLayout(1,2,20,10));
|
||||||
|
JLabel label=new JLabel(" "+e.getNom()+" "+e.getPrenom()+" "+e.getId(), JLabel.LEFT);
|
||||||
|
label.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 20));
|
||||||
|
|
||||||
|
this.add(label);
|
||||||
|
this.deplacer=new JButton("changer de groupe");
|
||||||
|
if(concerner==true)
|
||||||
|
this.add(this.deplacer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void addActionChangeListener(ActionListener a){
|
||||||
|
this.deplacer.addActionListener(a);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -1,27 +0,0 @@
|
|||||||
package fr.iutfbleau.projetIHM2022FI2.Graphic.Controller;
|
|
||||||
|
|
||||||
import javax.swing.event.*;
|
|
||||||
import javax.swing.tree.TreePath;
|
|
||||||
|
|
||||||
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
|
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.Model.Model;
|
|
||||||
|
|
||||||
public class TreeSelectionEventGroupe extends TreeSelectionEvent{
|
|
||||||
private Groupe groupe;
|
|
||||||
private Model model;
|
|
||||||
public TreeSelectionEventGroupe(Object source, TreePath[] paths, boolean[] areNew, TreePath oldLeadSelectionPath,
|
|
||||||
TreePath newLeadSelectionPath, Groupe g, Model m) {
|
|
||||||
super(source, paths, areNew, oldLeadSelectionPath, newLeadSelectionPath);
|
|
||||||
this.groupe=g;
|
|
||||||
this.model=m;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Groupe getGroupe() {
|
|
||||||
return groupe;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Model getModel() {
|
|
||||||
return model;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
package fr.iutfbleau.projetIHM2022FI2.Graphic.Controller;
|
|
||||||
|
|
||||||
import javax.swing.event.TreeSelectionEvent;
|
|
||||||
import javax.swing.event.TreeSelectionListener;
|
|
||||||
|
|
||||||
|
|
||||||
public class TreeSelectionListenerGroupe implements TreeSelectionListener{
|
|
||||||
public TreeSelectionListenerGroupe(){
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void valueChanged(TreeSelectionEvent e) {
|
|
||||||
TreeSelectionEventGroupe k=(TreeSelectionEventGroupe)e;
|
|
||||||
k.getModel().showGroupe(k.getGroupe());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
package fr.iutfbleau.projetIHM2022FI2.Graphic.View;
|
|
||||||
|
|
||||||
import javax.swing.tree.DefaultMutableTreeNode;
|
|
||||||
|
|
||||||
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
|
|
||||||
public class DefaultMutableTreeNodeGroupe extends DefaultMutableTreeNode{
|
|
||||||
private Groupe groupe;
|
|
||||||
public DefaultMutableTreeNodeGroupe(Groupe g, String path){
|
|
||||||
super(path);
|
|
||||||
this.groupe=g;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Groupe getGroupe() {
|
|
||||||
return groupe;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGroupe(Groupe groupe) {
|
|
||||||
this.groupe = groupe;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,31 +0,0 @@
|
|||||||
package fr.iutfbleau.projetIHM2022FI2.Graphic.View;
|
|
||||||
import javax.swing.JTree;
|
|
||||||
import javax.swing.tree.TreeSelectionModel;
|
|
||||||
import javax.swing.event.TreeSelectionEvent;
|
|
||||||
import javax.swing.event.TreeSelectionListener;
|
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.Controller.TreeSelectionEventGroupe;
|
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.Controller.TreeSelectionListenerGroupe;
|
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.Model.Model;
|
|
||||||
|
|
||||||
public class JTreeGroupe extends JTree{
|
|
||||||
private Model model;
|
|
||||||
public JTreeGroupe(Model m, DefaultMutableTreeNodeGroupe mut){
|
|
||||||
super(mut);
|
|
||||||
this.model=m;
|
|
||||||
this.setEditable(true);
|
|
||||||
this.setShowsRootHandles(true);
|
|
||||||
this.getSelectionModel().setSelectionMode(
|
|
||||||
TreeSelectionModel.SINGLE_TREE_SELECTION);
|
|
||||||
this.addTreeSelectionListener(new TreeSelectionListenerGroupe());
|
|
||||||
this.setRowHeight(15);
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
protected void fireValueChanged(TreeSelectionEvent e) {
|
|
||||||
DefaultMutableTreeNodeGroupe node=(DefaultMutableTreeNodeGroupe) this.getLastSelectedPathComponent();
|
|
||||||
e=new TreeSelectionEventGroupe(this, getSelectionPaths(), null, getLeadSelectionPath(), getLeadSelectionPath(), node.getGroupe(), this.model);
|
|
||||||
TreeSelectionListener[] list=this.getTreeSelectionListeners();
|
|
||||||
TreeSelectionListenerGroupe l=(TreeSelectionListenerGroupe) list[0];
|
|
||||||
l.valueChanged(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,5 +1,13 @@
|
|||||||
package fr.iutfbleau.projetIHM2022FI2.MNP;
|
package fr.iutfbleau.projetIHM2022FI2.MNP;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.API.*;
|
import fr.iutfbleau.projetIHM2022FI2.API.*;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import org.mariadb.jdbc.*;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
/**
|
/**
|
||||||
* Usine abstraite gérant l'ensemble des groupes.
|
* Usine abstraite gérant l'ensemble des groupes.
|
||||||
@ -10,6 +18,9 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
|
|
||||||
// la racine (promotion)
|
// la racine (promotion)
|
||||||
private Groupe promo;
|
private Groupe promo;
|
||||||
|
|
||||||
|
//la fentre pour les fenetre modale
|
||||||
|
private JFrame fenetre;
|
||||||
|
|
||||||
// On utilise une table de hachage pour retrouver facilement un groupe (à partir de son id).
|
// On utilise une table de hachage pour retrouver facilement un groupe (à partir de son id).
|
||||||
// Si il y a beaucoup de groupes c'est plus rapide que de parcourir toute une liste.
|
// Si il y a beaucoup de groupes c'est plus rapide que de parcourir toute une liste.
|
||||||
@ -18,11 +29,24 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
/**
|
/**
|
||||||
* Le constructeur fabrique le groupe promotion déja plein (utilisé en Modèle persistant de donné).
|
* Le constructeur fabrique le groupe promotion déja plein (utilisé en Modèle persistant de donné).
|
||||||
*/
|
*/
|
||||||
public AbstractGroupeFactoryNP(Groupe promo){
|
public AbstractGroupeFactoryNP(Groupe promo, JFrame fenetre){
|
||||||
this.promo=promo;
|
this.promo=promo;
|
||||||
|
this.fenetre=fenetre;
|
||||||
|
this.brain=new HashMap<Integer,Groupe>();
|
||||||
|
this.addSousGroupe(this.promo);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Le constructeur fabrique le groupe promotion vide.
|
||||||
|
* Il faut ensuite y ajouter les étudiants.
|
||||||
|
*/
|
||||||
|
public AbstractGroupeFactoryNP(String name, int min, int max, JFrame fenetre){
|
||||||
|
Objects.requireNonNull(name,"On ne peut pas créer une promotion dont le nom est null");
|
||||||
|
this.promo=new GroupeNP(name,min,max);
|
||||||
|
this.fenetre=fenetre;
|
||||||
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);
|
this.saveGroupe(promo);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -37,17 +61,6 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
this.addSousGroupe(s);
|
this.addSousGroupe(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Le constructeur fabrique le groupe promotion vide.
|
|
||||||
* Il faut ensuite y ajouter les étudiants.
|
|
||||||
*/
|
|
||||||
public AbstractGroupeFactoryNP(String name, int min, int max){
|
|
||||||
Objects.requireNonNull(name,"On ne peut pas créer une promotion dont le nom est null");
|
|
||||||
this.promo=new GroupeNP(name,min,max);
|
|
||||||
this.brain=new HashMap<Integer,Groupe>();
|
|
||||||
this.brain.put(Integer.valueOf(this.promo.getId()),this.promo);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test plutôt optimiste. Si la clé est identique alors on fait comme si c'était le bon groupe.
|
* Test plutôt optimiste. Si la clé est identique alors on fait comme si c'était le bon groupe.
|
||||||
@ -58,8 +71,35 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
return this.brain.containsKey(Integer.valueOf(g.getId()));
|
return this.brain.containsKey(Integer.valueOf(g.getId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean changeNameGroupe(Groupe g, String name){
|
||||||
|
if(!this.knows(g)){
|
||||||
|
throw new IllegalArgumentException("Groupe inconu ");
|
||||||
|
}
|
||||||
|
Connection cnx=this.cnx();
|
||||||
|
try{
|
||||||
|
PreparedStatement pst=cnx.prepareStatement(
|
||||||
|
"UPDATE `Groupe` SET `nom` = ? WHERE `Groupe`.`id` = ? "
|
||||||
|
);
|
||||||
|
pst.setString(1, name);
|
||||||
|
pst.setInt(2, g.getId());
|
||||||
|
pst.executeUpdate();
|
||||||
|
pst.close();
|
||||||
|
}catch(SQLException e){
|
||||||
|
System.out.println(e.toString());
|
||||||
|
if(this.erreurSQL()){
|
||||||
|
this.changeNameGroupe(g, name);
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.close(cnx);
|
||||||
|
g.setName(name);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* permet de récupérer le Groupe qui contient les étudiants de toute la promotion
|
* permet de récupérer le Groupe qui contient les étudiants de toute la promotion
|
||||||
* @return la promo.
|
* @return la promo.
|
||||||
@ -81,14 +121,9 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
if (!this.knows(g)){
|
if (!this.knows(g)){
|
||||||
throw new IllegalArgumentException("Impossible d'enlever un groupe inconnu");
|
throw new IllegalArgumentException("Impossible d'enlever un groupe inconnu");
|
||||||
}
|
}
|
||||||
if (this.getPromotion().equals(g)){
|
|
||||||
throw new IllegalArgumentException("Impossible de détruire le groupe de toute la promotion");
|
|
||||||
}
|
|
||||||
if (g.getSousGroupes().size()>0){
|
|
||||||
throw new IllegalStateException("Impossible de détruire un groupe contenant un groupe");
|
|
||||||
}
|
|
||||||
g.getPointPoint().removeSousGroupe(g);
|
g.getPointPoint().removeSousGroupe(g);
|
||||||
this.brain.remove(Integer.valueOf(g.getId()));
|
this.brain.remove(Integer.valueOf(g.getId()));
|
||||||
|
this.suprGroupe(g);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -104,6 +139,7 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
public void createGroupe(Groupe pere, String name, int min, int max){
|
public void createGroupe(Groupe pere, String name, int min, int max){
|
||||||
Objects.requireNonNull(pere,"Le groupe pere ne peut pas être null");
|
Objects.requireNonNull(pere,"Le groupe pere ne peut pas être null");
|
||||||
Objects.requireNonNull(name,"Le nouveau groupe ne peut pas avoir null comme nom");
|
Objects.requireNonNull(name,"Le nouveau groupe ne peut pas avoir null comme nom");
|
||||||
|
|
||||||
if (!this.knows(pere)){
|
if (!this.knows(pere)){
|
||||||
throw new IllegalArgumentException("Interdit d'ajouter un fils à un groupe inconnu");
|
throw new IllegalArgumentException("Interdit d'ajouter un fils à un groupe inconnu");
|
||||||
}
|
}
|
||||||
@ -113,9 +149,11 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
if ( min <= 0 || max < min){
|
if ( min <= 0 || max < min){
|
||||||
throw new IllegalArgumentException("Il faut que 0 < min <= max");
|
throw new IllegalArgumentException("Il faut que 0 < min <= max");
|
||||||
}
|
}
|
||||||
|
|
||||||
Groupe g = new GroupeNP(pere,name,min,max);
|
Groupe g = new GroupeNP(pere,name,min,max);
|
||||||
pere.addSousGroupe(g);
|
pere.addSousGroupe(g);
|
||||||
this.brain.put(Integer.valueOf(g.getId()),g);
|
this.brain.put(Integer.valueOf(g.getId()),g);
|
||||||
|
this.saveGroupe(g);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -167,6 +205,7 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
groupes.get(i).addEtudiant(s);
|
groupes.get(i).addEtudiant(s);
|
||||||
i = (i+1) %n;
|
i = (i+1) %n;
|
||||||
}
|
}
|
||||||
|
this.saveGroupe(copiePereRacinePartition);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -186,6 +225,7 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
throw new IllegalArgumentException("Impossible d'ajouter l'étudiant car le est groupe inconnu");
|
throw new IllegalArgumentException("Impossible d'ajouter l'étudiant car le est groupe inconnu");
|
||||||
}
|
}
|
||||||
g.addEtudiant(e);
|
g.addEtudiant(e);
|
||||||
|
this.saveEtu(e, g);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -205,6 +245,7 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
throw new IllegalArgumentException("Impossible d'ajouter l'étudiant car le est groupe inconnu");
|
throw new IllegalArgumentException("Impossible d'ajouter l'étudiant car le est groupe inconnu");
|
||||||
}
|
}
|
||||||
g.removeEtudiant(e);
|
g.removeEtudiant(e);
|
||||||
|
this.deleteEtu(e, g);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -250,4 +291,180 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory {
|
|||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// **********************
|
||||||
|
// FONCTION POUR SIMPLIFIER LES Modification BD
|
||||||
|
// ***********************
|
||||||
|
|
||||||
|
|
||||||
|
private Connection cnx(){
|
||||||
|
//On se Connecte a la BD
|
||||||
|
try{
|
||||||
|
Class.forName("org.mariadb.jdbc.Driver");
|
||||||
|
Connection cnx = DriverManager.getConnection(
|
||||||
|
"jdbc:mariadb://dwarves.iut-fbleau.fr/chaignea",
|
||||||
|
"chaignea", "Chaigneauphpmyadmin");
|
||||||
|
return cnx;
|
||||||
|
}catch(Exception e){
|
||||||
|
if(this.erreurCO()==true){
|
||||||
|
return this.cnx();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean erreurCO(){
|
||||||
|
if(JOptionPane.showConfirmDialog(this.fenetre, "erreur connection a la BD reassayer?", "erreur connection", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
this.fenetre.dispose();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean erreurSQL(){
|
||||||
|
if(JOptionPane.showConfirmDialog(this.fenetre, "erreur lors de la modification, reasssayer?", "erreur SQL", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void deleteEtu(Etudiant et, Groupe g){
|
||||||
|
Connection cnx=this.cnx();
|
||||||
|
try{
|
||||||
|
PreparedStatement pst=cnx.prepareStatement(
|
||||||
|
"DELETE FROM CONTIENT WHERE idGroupe=? AND idEt=?; "
|
||||||
|
);
|
||||||
|
pst.setInt(2, et.getId());
|
||||||
|
this.deleteEtu(pst, cnx, g);
|
||||||
|
pst.close();
|
||||||
|
}catch(SQLException e){
|
||||||
|
System.out.println(e.toString());
|
||||||
|
if(this.erreurSQL()){
|
||||||
|
this.deleteEtu(et, g);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.close(cnx);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void deleteEtu(PreparedStatement pst, Connection cnx, Groupe g){
|
||||||
|
try{
|
||||||
|
pst.setInt(1, g.getId());
|
||||||
|
pst.executeUpdate();
|
||||||
|
for(Groupe sous: g.getSousGroupes()){
|
||||||
|
this.deleteEtu(pst, cnx, sous);
|
||||||
|
}
|
||||||
|
}catch(SQLException e){
|
||||||
|
System.out.println(e.toString());
|
||||||
|
if(this.erreurSQL()){
|
||||||
|
this.deleteEtu(pst, cnx, g);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void close(AutoCloseable clos){
|
||||||
|
try{
|
||||||
|
clos.close();
|
||||||
|
}catch(Exception e){
|
||||||
|
if(this.erreurCO()==true)
|
||||||
|
this.close(clos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private boolean saveEtu(Etudiant etudiant, Groupe g){
|
||||||
|
Connection cnx = this.cnx();
|
||||||
|
try{
|
||||||
|
PreparedStatement pst=cnx.prepareStatement(
|
||||||
|
"Select id from Etudiant where id=?; ");
|
||||||
|
pst.setString(1, String.valueOf(etudiant.getId()));
|
||||||
|
ResultSet rs=pst.executeQuery();
|
||||||
|
if(rs.next()){
|
||||||
|
//L'etudiant est déja connu de la BD
|
||||||
|
pst.close();
|
||||||
|
pst=cnx.prepareStatement(
|
||||||
|
"INSERT INTO `CONTIENT` (`idGroupe`, `idEt`) VALUES (?, ?);");
|
||||||
|
pst.setInt(2, etudiant.getId());
|
||||||
|
pst.setInt(1, g.getId());
|
||||||
|
pst.executeUpdate();
|
||||||
|
}else{
|
||||||
|
pst.close();
|
||||||
|
pst=cnx.prepareStatement(
|
||||||
|
"INSERT INTO `Etudiant` (`id`, `nom`, `prenom`) VALUES (?, ?, ?) ;");
|
||||||
|
pst.setInt(1, etudiant.getId());
|
||||||
|
pst.setString(2, etudiant.getNom());
|
||||||
|
pst.setString(3, etudiant.getPrenom());
|
||||||
|
pst.executeUpdate();
|
||||||
|
}
|
||||||
|
rs.close();
|
||||||
|
pst.close();
|
||||||
|
}catch(SQLException e){
|
||||||
|
System.out.println(e.toString());
|
||||||
|
if(this.erreurSQL()){
|
||||||
|
this.saveEtu(etudiant, g);
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.close(cnx);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean saveGroupe(Groupe g){
|
||||||
|
Connection cnx=this.cnx();
|
||||||
|
try{
|
||||||
|
PreparedStatement pst=cnx.prepareStatement(
|
||||||
|
"INSERT INTO `Groupe` (`id`, `nom`, `min`, `max`, `Type`, `id-parent`) VALUES (?, ?, ?, ?, ?, ?);"
|
||||||
|
);
|
||||||
|
pst.setInt(1, g.getId());
|
||||||
|
pst.setString(2, g.getName());
|
||||||
|
pst.setInt(3, g.getMin());
|
||||||
|
pst.setInt(4, g.getMax());
|
||||||
|
pst.setString(5, g.getType().name());
|
||||||
|
pst.setInt(6, g.getPointPoint().getId());
|
||||||
|
pst.executeUpdate();
|
||||||
|
pst.close();
|
||||||
|
for(Etudiant e: g.getEtudiants()){
|
||||||
|
this.saveEtu(e, g);
|
||||||
|
}
|
||||||
|
for(Groupe sous:g.getSousGroupes()){
|
||||||
|
this.saveGroupe(sous);
|
||||||
|
}
|
||||||
|
}catch(SQLException e){
|
||||||
|
System.out.println(e.toString());
|
||||||
|
if(this.erreurSQL()){
|
||||||
|
this.saveGroupe(g);
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.close(cnx);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean suprGroupe(Groupe g){
|
||||||
|
Connection cnx=this.cnx();
|
||||||
|
try{
|
||||||
|
PreparedStatement pst=cnx.prepareStatement("Delete FROM Groupe where id=?;");
|
||||||
|
pst.setInt(1, g.getId());
|
||||||
|
pst.executeUpdate();
|
||||||
|
pst.close();
|
||||||
|
pst=cnx.prepareStatement("Delete FROM CONTIENT where idGroupe=?;");
|
||||||
|
pst.setInt(1, g.getId());
|
||||||
|
pst.executeUpdate();
|
||||||
|
pst.close();
|
||||||
|
}catch(SQLException e){
|
||||||
|
System.out.println(e.toString());
|
||||||
|
if(this.erreurSQL()){
|
||||||
|
this.suprGroupe(g);
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.close(cnx);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,20 @@
|
|||||||
|
package fr.iutfbleau.projetIHM2022FI2.ROOT.Controller;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.API.Etudiant;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.ROOT.Model.Model;
|
||||||
|
|
||||||
|
public class ActionListenerChangeEtu implements ActionListener {
|
||||||
|
public Etudiant etudiant;
|
||||||
|
public Model model;
|
||||||
|
public ActionListenerChangeEtu(Model m, Etudiant e){
|
||||||
|
this.model=m;
|
||||||
|
this.etudiant=e;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
System.out.println(this.etudiant.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,9 +1,11 @@
|
|||||||
package fr.iutfbleau.projetIHM2022FI2.Graphic.Controller;
|
package fr.iutfbleau.projetIHM2022FI2.ROOT.Controller;
|
||||||
|
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.View.FenetreSelectionEtu;
|
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.ROOT.View.FenetreSelectionEtu;
|
||||||
|
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
|
|
||||||
public class ActionListenerNouveauEtu implements ActionListener{
|
public class ActionListenerNouveauEtu implements ActionListener{
|
@ -1,11 +1,11 @@
|
|||||||
package fr.iutfbleau.projetIHM2022FI2.Graphic.Controller;
|
package fr.iutfbleau.projetIHM2022FI2.ROOT.Controller;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
|
|
||||||
import fr.iutfbleau.projetIHM2022FI2.API.Etudiant;
|
import fr.iutfbleau.projetIHM2022FI2.API.Etudiant;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.Model.Model;
|
import fr.iutfbleau.projetIHM2022FI2.ROOT.Model.Model;
|
||||||
public class ActionListenerSuprEtu implements ActionListener {
|
public class ActionListenerSuprEtu implements ActionListener {
|
||||||
public Etudiant etudiant;
|
public Etudiant etudiant;
|
||||||
public Model model;
|
public Model model;
|
@ -0,0 +1,21 @@
|
|||||||
|
package fr.iutfbleau.projetIHM2022FI2.ROOT.Controller;
|
||||||
|
|
||||||
|
import java.awt.event.*;
|
||||||
|
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.ROOT.Model.Model;
|
||||||
|
|
||||||
|
public class ObservateurChangeGroupe implements ActionListener{
|
||||||
|
private Model m;
|
||||||
|
private Groupe g;
|
||||||
|
public ObservateurChangeGroupe(Model m, Groupe g){
|
||||||
|
this.m=m;
|
||||||
|
this.g=g;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
m.showGroupe(this.g);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,58 @@
|
|||||||
|
package fr.iutfbleau.projetIHM2022FI2.ROOT.Controller;
|
||||||
|
import java.awt.event.WindowEvent;
|
||||||
|
import java.awt.event.WindowListener;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
|
||||||
|
public class ObservateurFenetre implements WindowListener{
|
||||||
|
|
||||||
|
public ObservateurFenetre(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void windowActivated(WindowEvent e) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void windowClosed(WindowEvent e) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void windowClosing(WindowEvent e) {
|
||||||
|
JFrame fenetre= (JFrame) e.getSource();
|
||||||
|
int confirmation = JOptionPane.showConfirmDialog(fenetre.getContentPane(), "Voulez vous quitter?", "Quitter", JOptionPane.YES_NO_OPTION);
|
||||||
|
if(confirmation == JOptionPane.YES_OPTION){
|
||||||
|
fenetre.dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void windowDeactivated(WindowEvent e) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void windowDeiconified(WindowEvent e) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void windowIconified(WindowEvent e) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void windowOpened(WindowEvent e) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,12 +1,13 @@
|
|||||||
package fr.iutfbleau.projetIHM2022FI2.Graphic.Controller;
|
package fr.iutfbleau.projetIHM2022FI2.ROOT.Controller;
|
||||||
|
|
||||||
import java.awt.event.*;
|
import java.awt.event.*;
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.API.*;
|
import fr.iutfbleau.projetIHM2022FI2.API.*;
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
|
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.Model.Model;
|
import fr.iutfbleau.projetIHM2022FI2.ROOT.Model.Model;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.View.FenetreSelectionEtu;
|
import fr.iutfbleau.projetIHM2022FI2.ROOT.View.FenetreSelectionEtu;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
public class ObservateurModifGroupe implements ActionListener{
|
public class ObservateurModifGroupe implements ActionListener{
|
@ -1,9 +1,9 @@
|
|||||||
package fr.iutfbleau.projetIHM2022FI2.Graphic.Controller;
|
package fr.iutfbleau.projetIHM2022FI2.ROOT.Controller;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.awt.event.MouseListener;
|
import java.awt.event.MouseListener;
|
||||||
|
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.View.FenetreSelectionEtu;
|
import fr.iutfbleau.projetIHM2022FI2.ROOT.View.FenetreSelectionEtu;
|
||||||
|
|
||||||
public class SelecteurEtudiant implements MouseListener{
|
public class SelecteurEtudiant implements MouseListener{
|
||||||
private FenetreSelectionEtu pere;
|
private FenetreSelectionEtu pere;
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,228 @@
|
|||||||
|
package fr.iutfbleau.projetIHM2022FI2.ROOT.Util;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
import org.mariadb.jdbc.*;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.API.*;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.MNP.*;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.ROOT.View.Chargement;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class relative a la BD
|
||||||
|
*/
|
||||||
|
public class BD {
|
||||||
|
private JFrame fenetre;
|
||||||
|
public BD(JFrame fenetre){
|
||||||
|
this.fenetre=fenetre;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Connection cnx(){
|
||||||
|
//On se Connecte a la BD
|
||||||
|
try{
|
||||||
|
Class.forName("org.mariadb.jdbc.Driver");
|
||||||
|
Connection cnx = DriverManager.getConnection(
|
||||||
|
"jdbc:mariadb://dwarves.iut-fbleau.fr/chaignea",
|
||||||
|
"chaignea", "Chaigneauphpmyadmin");
|
||||||
|
return cnx;
|
||||||
|
}catch(Exception e){
|
||||||
|
if(this.erreurCO()==true){
|
||||||
|
return this.cnx();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Erreur de connection
|
||||||
|
* @return true si posssible
|
||||||
|
*/
|
||||||
|
private boolean erreurCO(){
|
||||||
|
if(JOptionPane.showConfirmDialog(this.fenetre, "erreur connection a la BD reassayer?", "erreur connection", JOptionPane.YES_NO_OPTION)==JOptionPane.YES_OPTION){
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
this.fenetre.dispose();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void close(AutoCloseable clos){
|
||||||
|
try{
|
||||||
|
clos.close();
|
||||||
|
}catch(Exception e){
|
||||||
|
if(this.erreurCO()==true)
|
||||||
|
this.close(clos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 pourcent le pourcentage de ce groupe dans le chargement
|
||||||
|
*/
|
||||||
|
private void addSousGroupe(Groupe g, Connection 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`;");
|
||||||
|
pst.setString(1, String.valueOf(g.getId()));
|
||||||
|
ResultSet rs=pst.executeQuery();
|
||||||
|
rs=pst.executeQuery();
|
||||||
|
//autrement si le groupe as des sous groupe
|
||||||
|
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
|
||||||
|
}
|
||||||
|
rs.close();
|
||||||
|
}catch(SQLException e){
|
||||||
|
if(this.erreurCO())
|
||||||
|
this.addSousGroupe(g, cnx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 addBDEtudiant(Groupe g, Connection cnx){
|
||||||
|
try{
|
||||||
|
//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=? ORDER BY Etudiant.id ASC");
|
||||||
|
pst.setInt(1, g.getId());
|
||||||
|
ResultSet rs=pst.executeQuery();
|
||||||
|
//Pour tous les étudiants
|
||||||
|
while(rs.next()){
|
||||||
|
boolean exist=false;
|
||||||
|
//autrement on recupere l'etudiant
|
||||||
|
for(Etudiant e: g.getPointPoint().getEtudiants()){
|
||||||
|
if(e.getId()==rs.getInt(3)){
|
||||||
|
exist=true;
|
||||||
|
g.addEtudiant(e);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(exist==false){
|
||||||
|
g.addEtudiant(new EtudiantNP(rs.getString(1), rs.getString(2), rs.getInt(3)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rs.close();
|
||||||
|
pst.close();
|
||||||
|
}catch(SQLException e){
|
||||||
|
if(this.erreurCO())
|
||||||
|
this.addBDEtudiant(g, cnx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Refresh le groupe donnée pour le mettre a jour avec la Base de donnée
|
||||||
|
* Si le groupe n'existe plus on retourne le groupe parent le plus proche existant encore
|
||||||
|
* @param g le groupe a refresh
|
||||||
|
* @return le groupe refresh
|
||||||
|
*/
|
||||||
|
public Groupe refreshGroupe(Groupe g){
|
||||||
|
Connection cnx=this.cnx();
|
||||||
|
g=this.refreshGroupe(g, cnx);
|
||||||
|
this.close(cnx);
|
||||||
|
return g;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Refresh le groupe donnée pour le mettre a jour avec la Base de donnée
|
||||||
|
* Si le groupe n'existe plus on retourne le groupe parent le plus proche existant encore
|
||||||
|
* @param g le groupe a refresh
|
||||||
|
* @return le groupe refresh
|
||||||
|
*/
|
||||||
|
private Groupe refreshGroupe(Groupe g, Connection cnx){
|
||||||
|
|
||||||
|
try{
|
||||||
|
PreparedStatement pst = cnx.prepareStatement(
|
||||||
|
"SELECT `id`, `nom`, `min`, `max`, `value`, `id-parent` FROM `Groupe` join `TYPE` on Groupe.Type=TYPE.name where Groupe.`id`=? OR Groupe.`id-parent`=? ORDER BY Groupe.id ASC;");
|
||||||
|
pst.setString(1, String.valueOf(g.getId()));
|
||||||
|
pst.setString(2, String.valueOf(g.getId()));
|
||||||
|
ResultSet rs=pst.executeQuery();
|
||||||
|
if(rs.next()){
|
||||||
|
if(rs.getString(2)!=g.getName()){
|
||||||
|
g.setName(rs.getString(2));
|
||||||
|
}
|
||||||
|
Set<Groupe> it=new LinkedHashSet<>();
|
||||||
|
for(Groupe gr:g.getSousGroupes()){
|
||||||
|
it.add(gr);
|
||||||
|
}
|
||||||
|
for(Groupe gr:it){
|
||||||
|
g.removeSousGroupe(gr);
|
||||||
|
}
|
||||||
|
Set<Etudiant> et=new LinkedHashSet<>();
|
||||||
|
for(Etudiant gr:g.getEtudiants()){
|
||||||
|
et.add(gr);
|
||||||
|
}
|
||||||
|
for(Etudiant gr:et){
|
||||||
|
g.removeEtudiant(gr);
|
||||||
|
}
|
||||||
|
this.addSousGroupe(g, cnx);
|
||||||
|
}else{
|
||||||
|
if(g==g.getPointPoint()){
|
||||||
|
g=null;
|
||||||
|
}else{
|
||||||
|
g=this.refreshGroupe(g.getPointPoint(), cnx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rs.close();
|
||||||
|
}catch(SQLException e){
|
||||||
|
if(this.erreurCO())
|
||||||
|
this.refreshGroupe(g, cnx);
|
||||||
|
}
|
||||||
|
return g;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* refresh le Groupe ainsi que ses etudiants
|
||||||
|
* @param g le groupe
|
||||||
|
* @return le groupe refresh/un parent si il a été refresh
|
||||||
|
*/
|
||||||
|
public Groupe refreshALL(Groupe g){
|
||||||
|
Connection cnx = this.cnx();
|
||||||
|
g=this.refreshGroupe(g, cnx);
|
||||||
|
Set<Etudiant> et=new LinkedHashSet<>();
|
||||||
|
for(Etudiant gr:g.getEtudiants()){
|
||||||
|
et.add(gr);
|
||||||
|
}
|
||||||
|
for(Etudiant gr:et){
|
||||||
|
g.removeEtudiant(gr);
|
||||||
|
}
|
||||||
|
this.addBDEtudiant(g, cnx);
|
||||||
|
this.close(cnx);
|
||||||
|
return g;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<Etudiant> getEtudiant(){
|
||||||
|
Connection cnx=this.cnx();
|
||||||
|
Set<Etudiant> ret=new LinkedHashSet<>();
|
||||||
|
try{
|
||||||
|
PreparedStatement pst=cnx.prepareStatement("SELECT * FROM Etudiant");
|
||||||
|
ResultSet rs=pst.executeQuery();
|
||||||
|
while(rs.next()){
|
||||||
|
ret.add(new EtudiantNP(rs.getString(2), rs.getString(3), rs.getInt(1)));
|
||||||
|
}
|
||||||
|
pst.close();
|
||||||
|
rs.close();
|
||||||
|
}catch(SQLException e){
|
||||||
|
if(this.erreurCO())
|
||||||
|
return this.getEtudiant();
|
||||||
|
}
|
||||||
|
this.close(cnx);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package fr.iutfbleau.projetIHM2022FI2.ROOT.Util;
|
||||||
|
|
||||||
|
public enum User {
|
||||||
|
ROOT("root"), PROF("proffeseur"), ETUDIANT("etudiant");
|
||||||
|
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
private User(String s) {
|
||||||
|
name = s;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,55 @@
|
|||||||
|
package fr.iutfbleau.projetIHM2022FI2.ROOT.View;
|
||||||
|
|
||||||
|
import java.awt.Graphics;
|
||||||
|
|
||||||
|
import javax.swing.JComponent;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class Dessinant les boutons du menu
|
||||||
|
*/
|
||||||
|
public class Chargement extends JComponent{
|
||||||
|
private int pourcentage;
|
||||||
|
private JFrame fenetre;
|
||||||
|
|
||||||
|
public Chargement(JFrame n){
|
||||||
|
this.pourcentage=0;
|
||||||
|
this.fenetre=new JFrame();
|
||||||
|
this.fenetre.setSize(n.getSize());
|
||||||
|
this.fenetre.setLocation(n.getLocation());
|
||||||
|
this.fenetre.add(this, BorderLayout.CENTER);
|
||||||
|
this.repaint();
|
||||||
|
this.fenetre.setVisible(true);
|
||||||
|
}
|
||||||
|
public void addPourcent(int n){
|
||||||
|
this.pourcentage+=n;
|
||||||
|
this.repaint();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void dispose(){
|
||||||
|
this.fenetre.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void paintComponent(Graphics pinceau) {
|
||||||
|
// obligatoire : on crée un nouveau pinceau pour pouvoir le modifier plus tard
|
||||||
|
Graphics2D secondPinceau = (Graphics2D) pinceau.create();
|
||||||
|
secondPinceau.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
||||||
|
// obligatoire : si le composant n'est pas censé être transparent
|
||||||
|
if (this.isOpaque()) {
|
||||||
|
// obligatoire : on repeint toute la surface avec la couleur de fond
|
||||||
|
secondPinceau.setColor(this.getBackground());
|
||||||
|
secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight());
|
||||||
|
}
|
||||||
|
// maintenant on dessine ce que l'on veut
|
||||||
|
secondPinceau.setColor(Color.BLUE);
|
||||||
|
secondPinceau.setFont(new Font(Font.SANS_SERIF, Font.BOLD, (this.getWidth()/10)));
|
||||||
|
FontMetrics metrics = secondPinceau.getFontMetrics(secondPinceau.getFont());
|
||||||
|
secondPinceau.drawString("CHARGEMENT", (this.getWidth()/2-metrics.stringWidth("CHARGEMENT")/2), (this.getHeight()-metrics.getHeight())/3+metrics.getAscent());
|
||||||
|
secondPinceau.drawRect(this.getWidth()/10, this.getHeight()/2, this.getWidth()/10*8, this.getHeight()/10);
|
||||||
|
float stat=(int) 8.F/100.F*(pourcentage);
|
||||||
|
secondPinceau.fillRect(this.getWidth()/10, this.getHeight()/2, this.getWidth()/10*((int) stat), this.getHeight()/10);
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package fr.iutfbleau.projetIHM2022FI2.Graphic.View;
|
package fr.iutfbleau.projetIHM2022FI2.ROOT.View;
|
||||||
|
|
||||||
|
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
@ -10,16 +10,17 @@ import java.util.Set;
|
|||||||
|
|
||||||
import fr.iutfbleau.projetIHM2022FI2.API.Etudiant;
|
import fr.iutfbleau.projetIHM2022FI2.API.Etudiant;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
|
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.Controller.ActionListenerChangeEtu;
|
import fr.iutfbleau.projetIHM2022FI2.ROOT.Controller.ActionListenerChangeEtu;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.Controller.ActionListenerSuprEtu;
|
import fr.iutfbleau.projetIHM2022FI2.ROOT.Controller.ActionListenerSuprEtu;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.Model.Model;
|
import fr.iutfbleau.projetIHM2022FI2.ROOT.Model.Model;
|
||||||
|
|
||||||
|
|
||||||
public class FenetreEtudiant extends JPanel{
|
public class FenetreEtudiant{
|
||||||
private Set<Etudiant> etu;
|
private Set<Etudiant> etu;
|
||||||
private Model m;
|
private Model m;
|
||||||
|
private JPanel pan;
|
||||||
public FenetreEtudiant(Groupe g, Model m){
|
public FenetreEtudiant(Groupe g, Model m){
|
||||||
super();
|
this.pan=new JPanel();
|
||||||
this.m=m;
|
this.m=m;
|
||||||
if(g!=null){
|
if(g!=null){
|
||||||
this.etu=g.getEtudiants();
|
this.etu=g.getEtudiants();
|
||||||
@ -31,21 +32,25 @@ public class FenetreEtudiant extends JPanel{
|
|||||||
|
|
||||||
private void draw(){
|
private void draw(){
|
||||||
if(this.etu.size()!=0){
|
if(this.etu.size()!=0){
|
||||||
this.setLayout(new GridLayout(this.etu.size(), 1, 10, 0));
|
this.pan.setLayout(new GridLayout(this.etu.size(), 1, 10, 0));
|
||||||
for(Etudiant e: this.etu){
|
for(Etudiant e: this.etu){
|
||||||
PanelEtudiant p=new PanelEtudiant(e);
|
PanelEtudiant p=new PanelEtudiant(e);
|
||||||
p.addActionDeleteListener(new ActionListenerSuprEtu(m, e));
|
p.addActionDeleteListener(new ActionListenerSuprEtu(m, e));
|
||||||
p.addActionChangeListener(new ActionListenerChangeEtu(m, e));
|
p.addActionChangeListener(new ActionListenerChangeEtu(m, e));
|
||||||
this.add(p);
|
this.pan.add(p);
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
this.setLayout(new FlowLayout());
|
this.pan.setLayout(new FlowLayout());
|
||||||
this.add(new JLabel("Il n'y a pas d'étudiant"));
|
this.pan.add(new JLabel("Il n'y a pas d'étudiant"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void refresh(){
|
public void refresh(){
|
||||||
this.removeAll();
|
this.pan.removeAll();
|
||||||
this.draw();
|
this.draw();
|
||||||
this.revalidate();
|
this.pan.revalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
public JPanel getPan() {
|
||||||
|
return pan;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package fr.iutfbleau.projetIHM2022FI2.Graphic.View;
|
package fr.iutfbleau.projetIHM2022FI2.ROOT.View;
|
||||||
|
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
@ -8,27 +8,29 @@ import java.awt.Font;
|
|||||||
import java.awt.GridLayout;
|
import java.awt.GridLayout;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
|
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.API.TypeGroupe;
|
import fr.iutfbleau.projetIHM2022FI2.API.TypeGroupe;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.Controller.ObservateurChangeGroupe;
|
import fr.iutfbleau.projetIHM2022FI2.ROOT.Controller.ObservateurChangeGroupe;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.Controller.ObservateurModifGroupe;
|
import fr.iutfbleau.projetIHM2022FI2.ROOT.Controller.ObservateurModifGroupe;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.Model.Model;
|
import fr.iutfbleau.projetIHM2022FI2.ROOT.Model.Model;
|
||||||
|
|
||||||
|
|
||||||
public class FenetreGroupe extends JPanel{
|
public class FenetreGroupe{
|
||||||
private Groupe g;
|
private Groupe g;
|
||||||
|
private JPanel pan;
|
||||||
private Model m;
|
private Model m;
|
||||||
public FenetreGroupe(Groupe g, Model m){
|
public FenetreGroupe(Groupe g, Model m){
|
||||||
super();
|
super();
|
||||||
this.g=g;
|
this.g=g;
|
||||||
this.m=m;
|
this.m=m;
|
||||||
|
this.pan=new JPanel();
|
||||||
this.draw();
|
this.draw();
|
||||||
}
|
}
|
||||||
public Groupe getG() {
|
public Groupe getG() {
|
||||||
return this.g;
|
return this.g;
|
||||||
}
|
}
|
||||||
public void refresh(){
|
public void refresh(){
|
||||||
this.removeAll();
|
this.pan.removeAll();
|
||||||
this.draw();
|
this.draw();
|
||||||
this.revalidate();
|
this.pan.revalidate();
|
||||||
}
|
}
|
||||||
private void draw(){
|
private void draw(){
|
||||||
if(g!=null){
|
if(g!=null){
|
||||||
@ -36,8 +38,8 @@ public class FenetreGroupe extends JPanel{
|
|||||||
if(g.getType()==TypeGroupe.PARTITION || g.getType()==TypeGroupe.ROOT)
|
if(g.getType()==TypeGroupe.PARTITION || g.getType()==TypeGroupe.ROOT)
|
||||||
taille--;
|
taille--;
|
||||||
if(g.getSousGroupes().size()>0)
|
if(g.getSousGroupes().size()>0)
|
||||||
this.setLayout(new GridLayout(8, 1));
|
this.pan.setLayout(new GridLayout(8, 1));
|
||||||
else{this.setLayout(new GridLayout(7, 1));}
|
else{this.pan.setLayout(new GridLayout(7, 1));}
|
||||||
JPanel tache=new JPanel(new GridLayout(1,taille));
|
JPanel tache=new JPanel(new GridLayout(1,taille));
|
||||||
if(g.getType()!=TypeGroupe.ROOT){
|
if(g.getType()!=TypeGroupe.ROOT){
|
||||||
JButton bout=new JButton(g.getPointPoint().getName());
|
JButton bout=new JButton(g.getPointPoint().getName());
|
||||||
@ -58,15 +60,15 @@ public class FenetreGroupe extends JPanel{
|
|||||||
creer.addActionListener(new ObservateurModifGroupe(m, g));
|
creer.addActionListener(new ObservateurModifGroupe(m, g));
|
||||||
tache.add(creer);
|
tache.add(creer);
|
||||||
}
|
}
|
||||||
this.add(tache);
|
this.pan.add(tache);
|
||||||
JLabel titre=new JLabel("Group : "+g.getName(), JLabel.CENTER);
|
JLabel titre=new JLabel("Group : "+g.getName(), JLabel.CENTER);
|
||||||
titre.setFont(new Font(Font.SERIF, Font.BOLD, titre.getFont().getSize()+10));
|
titre.setFont(new Font(Font.SERIF, Font.BOLD, titre.getFont().getSize()+10));
|
||||||
this.add(titre);
|
this.pan.add(titre);
|
||||||
this.add(new JLabel("id= "+String.valueOf(g.getId()),JLabel.CENTER));
|
this.pan.add(new JLabel("id= "+String.valueOf(g.getId()),JLabel.CENTER));
|
||||||
this.add(new JLabel("min= "+String.valueOf(g.getMin()),JLabel.CENTER));
|
this.pan.add(new JLabel("min= "+String.valueOf(g.getMin()),JLabel.CENTER));
|
||||||
this.add(new JLabel("max= "+String.valueOf(g.getMax()),JLabel.CENTER));
|
this.pan.add(new JLabel("max= "+String.valueOf(g.getMax()),JLabel.CENTER));
|
||||||
this.add(new JLabel(g.getType().name(), JLabel.CENTER));
|
this.pan.add(new JLabel(g.getType().name(), JLabel.CENTER));
|
||||||
this.add(new JLabel("Sous groupe:",JLabel.CENTER));
|
this.pan.add(new JLabel("Sous groupe:",JLabel.CENTER));
|
||||||
if(g.getSousGroupes().size()>0){
|
if(g.getSousGroupes().size()>0){
|
||||||
JPanel sous=new JPanel(new GridLayout(g.getSousGroupes().size(), 1));
|
JPanel sous=new JPanel(new GridLayout(g.getSousGroupes().size(), 1));
|
||||||
for(Groupe gr: g.getSousGroupes()){
|
for(Groupe gr: g.getSousGroupes()){
|
||||||
@ -74,16 +76,20 @@ public class FenetreGroupe extends JPanel{
|
|||||||
b.addActionListener(new ObservateurChangeGroupe(m, gr));
|
b.addActionListener(new ObservateurChangeGroupe(m, gr));
|
||||||
sous.add(b);
|
sous.add(b);
|
||||||
}
|
}
|
||||||
this.add(new JScrollPane(sous));
|
this.pan.add(new JScrollPane(sous));
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
JButton creer=new JButton("créer une promo");
|
JButton creer=new JButton("créer une promo");
|
||||||
creer.addActionListener(new ObservateurModifGroupe(m, g));
|
creer.addActionListener(new ObservateurModifGroupe(m, g));
|
||||||
this.add(creer);
|
this.pan.add(creer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setG(Groupe g) {
|
public void setG(Groupe g) {
|
||||||
this.g = g;
|
this.g = g;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public JPanel getPan() {
|
||||||
|
return pan;
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,13 +1,11 @@
|
|||||||
package fr.iutfbleau.projetIHM2022FI2.Graphic.View;
|
package fr.iutfbleau.projetIHM2022FI2.ROOT.View;
|
||||||
|
|
||||||
import fr.iutfbleau.projetIHM2022FI2.API.Etudiant;
|
import fr.iutfbleau.projetIHM2022FI2.API.Etudiant;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
|
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.Controller.ActionListenerNouveauEtu;
|
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.Controller.SelecteurEtudiant;
|
|
||||||
import fr.iutfbleau.projetIHM2022FI2.MNP.EtudiantNP;
|
import fr.iutfbleau.projetIHM2022FI2.MNP.EtudiantNP;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.ROOT.Controller.ActionListenerNouveauEtu;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.ROOT.Controller.SelecteurEtudiant;
|
||||||
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.LinkedHashSet;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.awt.GridLayout;
|
import java.awt.GridLayout;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
@ -1,4 +1,4 @@
|
|||||||
package fr.iutfbleau.projetIHM2022FI2.Graphic.View;
|
package fr.iutfbleau.projetIHM2022FI2.ROOT.View;
|
||||||
|
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
@ -0,0 +1,50 @@
|
|||||||
|
package fr.iutfbleau.projetIHM2022FI2.Test;
|
||||||
|
import fr.iutfbleau.projetIHM2022FI2.ROOT.Util.User;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class Connexion extends JOptionPane{
|
||||||
|
|
||||||
|
public static User seConnecter(boolean err){
|
||||||
|
|
||||||
|
JPanel panel = new JPanel(new GridLayout(2,1));
|
||||||
|
User[] use=new User[3];
|
||||||
|
use[0]=User.ROOT;
|
||||||
|
use[1]=User.PROF;
|
||||||
|
use[2]=User.ETUDIANT;
|
||||||
|
|
||||||
|
JComboBox<User> combo=new JComboBox<User>(use);
|
||||||
|
|
||||||
|
JPanel myPanel = new JPanel();
|
||||||
|
JTextField password = new JTextField(15);
|
||||||
|
myPanel.add(new JLabel("Password:"));
|
||||||
|
myPanel.add(password);
|
||||||
|
if(err==true){
|
||||||
|
myPanel.add(new JLabel("mdp incorect", SwingConstants.RIGHT));
|
||||||
|
}
|
||||||
|
panel.add(combo);
|
||||||
|
panel.add(myPanel);
|
||||||
|
|
||||||
|
if(JOptionPane.showConfirmDialog(null, panel, "login", JOptionPane.OK_CANCEL_OPTION) != JOptionPane.OK_OPTION){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if(combo.getSelectedIndex()==0){
|
||||||
|
if(password.getText().equals("root")){
|
||||||
|
return User.ROOT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(combo.getSelectedIndex()==1){
|
||||||
|
if(password.getText().equals("prof")){
|
||||||
|
return User.PROF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(combo.getSelectedIndex()==2){
|
||||||
|
if(password.getText().equals("etuiutsen")){
|
||||||
|
return User.ETUDIANT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Connexion.seConnecter(true);
|
||||||
|
}
|
||||||
|
}
|
@ -1,11 +1,24 @@
|
|||||||
package fr.iutfbleau.projetIHM2022FI2.Test;
|
package fr.iutfbleau.projetIHM2022FI2.Test;
|
||||||
import fr.iutfbleau.projetIHM2022FI2.Graphic.Model.Model;
|
import fr.iutfbleau.projetIHM2022FI2.ROOT.Util.User;
|
||||||
|
|
||||||
public class TestTexteMNP{
|
public class TestTexteMNP{
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
new Model();
|
User chois=Connexion.seConnecter(false);
|
||||||
|
if(chois!=null){
|
||||||
|
if(chois==User.ROOT){
|
||||||
|
new fr.iutfbleau.projetIHM2022FI2.ROOT.Model.Model();
|
||||||
|
}
|
||||||
|
if(chois==User.ETUDIANT){
|
||||||
|
new fr.iutfbleau.projetIHM2022FI2.ETU.Model.Model();
|
||||||
|
}
|
||||||
|
if(chois==User.PROF){
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Iterator<Groupe> itgr = racineDeLaPartition.getSousGroupes().iterator();
|
Iterator<Groupe> itgr = racineDeLaPartition.getSousGroupes().iterator();
|
||||||
Groupe A = itgr.next(); // premier sous-groupe
|
Groupe A = itgr.next(); // premier sous-groupe
|
||||||
@ -44,38 +57,9 @@ public class TestTexteMNP{
|
|||||||
acf.deleteChangement(itch.next());
|
acf.deleteChangement(itch.next());
|
||||||
for (Changement cgt : acf.getAllChangements()){
|
for (Changement cgt : acf.getAllChangements()){
|
||||||
System.out.println(cgt.monPrint());
|
System.out.println(cgt.monPrint());
|
||||||
}
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
try{
|
|
||||||
Class.forName("org.mariadb.jdbc.Driver");
|
|
||||||
try{
|
|
||||||
Connection cnx = DriverManager.getConnection(
|
|
||||||
"jdbc:mariadb://dwarves.iut-fbleau.fr/chaignea",
|
|
||||||
"chaignea", "Chaigneauphpmyadmin");
|
|
||||||
try{
|
|
||||||
PreparedStatement pst = cnx.prepareStatement(
|
|
||||||
"INSERT INTO `CONTIENT` (`idGroupe`, `idEt`) VALUES (?, ?);");
|
|
||||||
for(Groupe k: racineDeLaPartition.getSousGroupes()){
|
|
||||||
for(Etudiant et: k.getEtudiants()){
|
|
||||||
pst.setInt(1, k.getId());
|
|
||||||
pst.setInt(2, et.getId());
|
|
||||||
pst.executeQuery();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pst.close();
|
|
||||||
}catch(SQLException ef){
|
|
||||||
System.out.println("erreur dans la preparation");
|
|
||||||
}
|
|
||||||
cnx.close();
|
|
||||||
}catch(SQLException ef){
|
|
||||||
System.out.println("Erreur dans la connexion!");
|
|
||||||
}
|
|
||||||
}catch(ClassNotFoundException ef){
|
|
||||||
System.out.println("pilote non disponible");
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user