correction de bug MPD et premiere navigation Groupe et Etudiant

This commit is contained in:
2022-11-13 04:01:11 +01:00
parent 82c4b78930
commit 5116d7a998
9 changed files with 166 additions and 90 deletions

View File

@@ -0,0 +1,21 @@
package fr.iutfbleau.projetIHM2022FI2.Graphic.Controller;
import java.awt.event.*;
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
import fr.iutfbleau.projetIHM2022FI2.Graphic.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);
}
}

View File

@@ -2,8 +2,10 @@ package fr.iutfbleau.projetIHM2022FI2.Graphic;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.Objects;
import java.util.Set;
import java.sql.Connection;
import org.mariadb.jdbc.*;
import java.sql.DriverManager;
@@ -13,31 +15,43 @@ 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.Graphic.View.PaintGroupe;
import fr.iutfbleau.projetIHM2022FI2.Graphic.Controller.ObservateurChangeGroupe;
import fr.iutfbleau.projetIHM2022FI2.Graphic.Controller.ObservateurFenetre;
import fr.iutfbleau.projetIHM2022FI2.Graphic.View.FenetreEtudiant;
import fr.iutfbleau.projetIHM2022FI2.Graphic.View.FenetreGroupe;
import fr.iutfbleau.projetIHM2022FI2.MNP.AbstractGroupeFactoryNP;
import fr.iutfbleau.projetIHM2022FI2.MNP.EtudiantNP;
import fr.iutfbleau.projetIHM2022FI2.MNP.GroupeNP;
public class Graphic{
private PaintGroupe paint;
private JFrame fenetre;
public class Model{
private FenetreGroupe fenGr;
private FenetreEtudiant fenEtu;
private AbstractGroupeFactory agf;
public Graphic(){
this.fenetre=new JFrame("Gestion des étudiants");
this.fenetre.setSize(1000, 720);
this.fenetre.setLocation(200,200);
this.fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
private JFrame fenetre;
private Set<Etudiant> etu;
public Model(){
this.etu=null;
this.getPromo();
this.fenetre.setVisible(true);
System.out.println(this.agf.getPromotion().monPrint());
Groupe racineDeLaPartition = agf.getPromotion().getSousGroupes().iterator().next();
System.out.println(racineDeLaPartition.monPrint());
for(Groupe g : racineDeLaPartition.getSousGroupes()){
System.out.println(g.monPrint());
}
this.fenGr=new FenetreGroupe(this.agf.getPromotion(), this);
this.fenEtu=new FenetreEtudiant(this.agf.getPromotion());
this.fenetre=new JFrame();
this.fenetre.setSize(1200, 720);
this.fenetre.setLocation(100,100);
this.fenetre.addWindowListener(new ObservateurFenetre());
this.fenetre.setLayout(new GridLayout(1,2));
this.fenetre.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.fenetre.add(this.fenGr);
this.fenetre.add(this.fenEtu);
this.fenetre.setVisible(true);
}
private void getPromo(){
@@ -117,13 +131,22 @@ public class Graphic{
private void addEtudiant(Groupe g, Connection cnx){
try{
PreparedStatement pst= cnx.prepareStatement(
"SELECT Etudiant.nom, Etudiant.prenom, Etudiant.id FROM `Etudiant` NATURAL JOIN CONTIENT WHERE CONTIENT.idGroupe=? Group BY Etudiant.id;");
"SELECT Etudiant.nom, Etudiant.id FROM `CONTIENT` JOIN Etudiant on CONTIENT.idEt=Etudiant.id WHERE CONTIENT.idGroupe=? Group BY Etudiant.nom; ");
try{
pst.setString(1, String.valueOf(g.getId()));
pst.setInt(1, g.getId());
ResultSet rs=pst.executeQuery();
try{
while(rs.next()){
this.agf.addToGroupe(g, new EtudiantNP(rs.getString(1), rs.getString(2)));
if(g==this.agf.getPromotion()){
this.agf.addToGroupe(g, new EtudiantNP(rs.getString(1), rs.getString(2)));
}else{
Set<Etudiant> contenue=agf.getEtudiants(rs.getString(1));
if(contenue.iterator().hasNext()){
for(Etudiant e:contenue){
agf.addToGroupe(g, e);
}
}
}
}
}catch(SQLException e){
System.out.println("erreur dans la prise de resultat");
@@ -133,8 +156,24 @@ public class Graphic{
System.out.println("erreur dans la préparation");
}
pst.close();
}catch(SQLException e){
System.out.println("erreur debut requete");
}catch(SQLException e){
System.out.println("erreur debut requete");
}
}
public void showGroupe(Groupe g){
this.fenetre.dispose();
this.fenGr=new FenetreGroupe(g, this);
this.fenEtu=new FenetreEtudiant(g);
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.DISPOSE_ON_CLOSE);
this.fenetre.add(this.fenGr);
this.fenetre.add(this.fenEtu);
this.fenetre.setVisible(true);
}
}

View File

@@ -0,0 +1,23 @@
package fr.iutfbleau.projetIHM2022FI2.Graphic.View;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.GridLayout;
import java.util.Set;
import fr.iutfbleau.projetIHM2022FI2.API.Etudiant;
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
public class FenetreEtudiant extends JPanel{
private Set<Etudiant> etu;
public FenetreEtudiant(Groupe g){
super(new GridLayout(57, 1));
this.etu=g.getEtudiants();
for(Etudiant e: this.etu){
this.add(new JLabel(e.monPrint()));
}
}
}

View File

@@ -0,0 +1,32 @@
package fr.iutfbleau.projetIHM2022FI2.Graphic.View;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.GridLayout;
import fr.iutfbleau.projetIHM2022FI2.API.Groupe;
import fr.iutfbleau.projetIHM2022FI2.Graphic.Model;
import fr.iutfbleau.projetIHM2022FI2.Graphic.Controller.ObservateurChangeGroupe;
public class FenetreGroupe extends JPanel{
private Groupe g;
public FenetreGroupe(Groupe g, Model m){
super(new GridLayout(15, 1));
this.g=g;
JButton bout=new JButton("point point");
bout.addActionListener(new ObservateurChangeGroupe(m, this.g.getPointPoint()));
this.add(bout);
this.add(new JLabel(g.getName()));
this.add(new JLabel("id= "+String.valueOf(g.getId())));
this.add(new JLabel("min= "+String.valueOf(g.getMin())));
this.add(new JLabel("max= "+String.valueOf(g.getMax())));
this.add(new JLabel("Sous groupe"));
for(Groupe gr: g.getSousGroupes()){
JButton b=new JButton(gr.getName());
b.addActionListener(new ObservateurChangeGroupe(m, gr));
this.add(b);
}
}
}

View File

@@ -1,52 +0,0 @@
package fr.iutfbleau.projetIHM2022FI2.Graphic.View;
import fr.iutfbleau.projetIHM2022FI2.API.*;
import javax.swing.JComponent;
import java.awt.Graphics;
import java.util.LinkedList;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
public class PaintGroupe extends JComponent {
private LinkedList<Groupe> tabGroupe=new LinkedList<Groupe>();
public PaintGroupe(){}
@Override
protected void paintComponent(Graphics pinceau) {
// obligatoire : on crée un nouveau pinceau pour pouvoir le modifier plus tard
Graphics secondPinceau = pinceau.create();
// 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(this.getForeground());
int y=100;
for(Groupe g: this.tabGroupe){
secondPinceau.setColor(Color.BLACK);
secondPinceau.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 40));
FontMetrics metrics = secondPinceau.getFontMetrics(secondPinceau.getFont());
secondPinceau.drawString(g.getName().toUpperCase(), (this.getWidth()/2-metrics.stringWidth(g.getName().toUpperCase())/2), (y-metrics.getAscent()));
g.getName();
y+=100;
}
}
public void addGroupe(Groupe g){
this.tabGroupe.add(g);
this.repaint();
}
public boolean removeGroupe(Groupe g){
int i=this.tabGroupe.indexOf(g);
if(i==-1){
return false;
}else{
this.tabGroupe.remove(i);
}
this.repaint();
return true;
}
}