diff --git a/java/APIGroupe/Makefile b/java/APIGroupe/Makefile index 91b185d..98ab5a9 100644 --- a/java/APIGroupe/Makefile +++ b/java/APIGroupe/Makefile @@ -95,18 +95,29 @@ ${BUILD}/MNP/AbstractChangementFactoryNP.class : ${SRC}/MNP/AbstractChangementFa ## Graphic ## ## View ## -${BUILD}/Graphic/View/PaintGroupe.class : ${SRC}/Graphic/View/PaintGroupe.java - ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/View/PaintGroupe.java +${BUILD}/Graphic/View/FenetreGroupe.class : ${SRC}/Graphic/View/FenetreGroupe.java \ + ${BUILD}/Graphic/Controller/ObservateurFenetre.class \ + ${BUILD}/Graphic/Controller/ObservateurChangeGroupe.class + ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/View/FenetreGroupe.java -${BUILD}/Graphic/Graphic.class : ${SRC}/Graphic/Graphic.java \ - ${BUILD}/Graphic/Controller/ObservateurFenetre.class \ - ${BUILD}/Graphic/View/PaintGroupe.class - ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/Graphic.java +${BUILD}/Graphic/View/FenetreEtudiant.class :${SRC}/Graphic/View/FenetreEtudiant.java \ + ${BUILD}/Graphic/Controller/ObservateurFenetre.class \ + ${BUILD}/Graphic/Controller/ObservateurChangeGroupe.class + ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/View/FenetreEtudiant.java + + +${BUILD}/Graphic/Model.class : ${SRC}/Graphic/Model.java \ + ${BUILD}/Graphic/View/FenetreGroupe.class \ + ${BUILD}/Graphic/View/FenetreEtudiant.class + ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/Model.java ## Controller ## ${BUILD}/Graphic/Controller/ObservateurFenetre.class : ${SRC}/Graphic/Controller/ObservateurFenetre.java ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/Controller/ObservateurFenetre.java +${BUILD}/Graphic/Controller/ObservateurChangeGroupe.class : ${SRC}/Graphic/Controller/ObservateurChangeGroupe.java + ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/Graphic/Controller/ObservateurChangeGroupe.java + ##.... @@ -118,7 +129,7 @@ ${BUILD}/Graphic/Controller/ObservateurFenetre.class : ${SRC}/Graphic/Controller ${BUILD}/MNP/ChangementNP.class \ ${BUILD}/MNP/AbstractGroupeFactoryNP.class \ ${BUILD}/MNP/AbstractChangementFactoryNP.class \ - ${BUILD}/Graphic/Graphic.class + ${BUILD}/Graphic/Model.class ${JAVAC} -Xlint:deprecation ${JAVAC_OPTIONS} ${SRC}/Test/TestTexteMNP.java # ## JARS ## diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/Groupe.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/Groupe.java index 0d24d4b..6793be6 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/Groupe.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/Groupe.java @@ -115,6 +115,8 @@ public interface Groupe extends MonPrint { sb.append("\t _ "+ g.getName() + " (" + g.getType() + ", capacité " + g.getMin() + " à " + g.getMax() +", id " + g.getId()+")"); sb.append("\n"); } + sb.append(" ** Groupe Pere **\n"); + sb.append(getPointPoint().getName()+"\n"); return sb.toString(); } diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Controller/ObservateurChangeGroupe.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Controller/ObservateurChangeGroupe.java new file mode 100644 index 0000000..aa4bab8 --- /dev/null +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Controller/ObservateurChangeGroupe.java @@ -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); + } + +} diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Graphic.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Model.java similarity index 67% rename from java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Graphic.java rename to java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Model.java index e547db1..80c404e 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Graphic.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/Model.java @@ -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 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 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); } } diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/View/FenetreEtudiant.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/View/FenetreEtudiant.java new file mode 100644 index 0000000..9e6845e --- /dev/null +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/View/FenetreEtudiant.java @@ -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 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())); + } + } +} diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/View/FenetreGroupe.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/View/FenetreGroupe.java new file mode 100644 index 0000000..82a3db7 --- /dev/null +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/View/FenetreGroupe.java @@ -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); + } + } +} diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/View/PaintGroupe.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/View/PaintGroupe.java deleted file mode 100644 index e91cfe5..0000000 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Graphic/View/PaintGroupe.java +++ /dev/null @@ -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 tabGroupe=new LinkedList(); - 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; - } -} diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java index 80ace5e..c32b22e 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java @@ -206,15 +206,14 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory { * @throws java.lang.NullPointerException si le String est null. */ public Set getEtudiants(String nomEtu){ - // on cherche bêtement dans la promo. - Set out = new LinkedHashSet(); - for (Etudiant e : getPromotion().getEtudiants()){ - if (e.getNom().equals(nomEtu)){ - out.add(e); - break; - } + Set s=new LinkedHashSet<>(); + for(Etudiant e:this.getPromotion().getEtudiants()){ + //System.out.println("Comparaison de: \""+nomEtu.toLowerCase()+"\" a \"" + e.getNom().toLowerCase()+"\""); + if((e.getNom()).equals(nomEtu.toString())){ + s.add(e); + } } - return out; + return s; } /** diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Test/TestTexteMNP.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Test/TestTexteMNP.java index e47c2b1..cfb20d5 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Test/TestTexteMNP.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/Test/TestTexteMNP.java @@ -1,6 +1,6 @@ package fr.iutfbleau.projetIHM2022FI2.Test; import fr.iutfbleau.projetIHM2022FI2.API.*; -import fr.iutfbleau.projetIHM2022FI2.Graphic.Graphic; +import fr.iutfbleau.projetIHM2022FI2.Graphic.Model; import fr.iutfbleau.projetIHM2022FI2.MNP.*; import java.util.*; import org.mariadb.jdbc.*; @@ -26,7 +26,7 @@ public class TestTexteMNP{ ////System.out.println("Test de l\'API"); //System.out.print("Création des étudiants"); - Graphic ga=new Graphic(); + Model ga=new Model(); Etudiant e1=new EtudiantNP("césar","lycurgus"); Etudiant e2=new EtudiantNP("denis","uranus"); @@ -238,11 +238,11 @@ public class TestTexteMNP{ acf.deleteChangement(itch.next()); for (Changement cgt : acf.getAllChangements()){ ////System.out.println(cgt.monPrint()); - }*/ + } - /* + try{ Class.forName("org.mariadb.jdbc.Driver"); try{ @@ -252,12 +252,13 @@ public class TestTexteMNP{ try{ PreparedStatement pst = cnx.prepareStatement( "INSERT INTO `CONTIENT` (`idGroupe`, `idEt`) VALUES (?, ?);"); - Groupe g=agf.getPromotion(); - for(Etudiant et: g.getEtudiants()){ - pst.setInt(1, g.getId()); + 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");