diff --git a/GestionDesInscriptions_1.jar b/GestionDesInscriptions_1.jar index f5d250d..bf093f9 100644 Binary files a/GestionDesInscriptions_1.jar and b/GestionDesInscriptions_1.jar differ diff --git a/GestionDesInscriptions_2.jar b/GestionDesInscriptions_2.jar index e3f30a2..91e500c 100644 Binary files a/GestionDesInscriptions_2.jar and b/GestionDesInscriptions_2.jar differ diff --git a/GestionDesInscriptions_3.jar b/GestionDesInscriptions_3.jar index 3e12de1..90d1af2 100644 Binary files a/GestionDesInscriptions_3.jar and b/GestionDesInscriptions_3.jar differ diff --git a/base.xml b/base.xml index c5eea5c..5f1bb47 100644 --- a/base.xml +++ b/base.xml @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/baseUFRHG/gestionnaire.java b/src/baseUFRHG/gestionnaire.java index bbafc97..7ebfeba 100644 --- a/src/baseUFRHG/gestionnaire.java +++ b/src/baseUFRHG/gestionnaire.java @@ -7,6 +7,8 @@ import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.Collections; @@ -17,6 +19,7 @@ import java.util.Map; import javax.swing.BoxLayout; import javax.swing.ImageIcon; +import javax.swing.JCheckBoxMenuItem; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; @@ -32,6 +35,8 @@ import javax.swing.ListSelectionModel; import javax.swing.SwingConstants; import javax.swing.border.BevelBorder; import javax.swing.border.EmptyBorder; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; @@ -40,6 +45,7 @@ import baseUFRHG.sauvegardeXMLBase.saveType; import baseUFRHG.actions.exportEmargement; import baseUFRHG.actions.exportTable; import baseUFRHG.actions.saveTable; +import javax.swing.JButton; public class gestionnaire extends JFrame { @@ -58,13 +64,28 @@ public class gestionnaire extends JFrame { private JComboBox cLV2; private JComboBox cInformatique; private JComboBox cLangue; + private JComboBox cDocumentation; private JComboBox cProfil; + private JComboBox cGroupePrincipal; + private JComboBox cGroupeProjet; + private JCheckBoxMenuItem chckToutesLesColonnes = new JCheckBoxMenuItem("Affiche toutes les colonnes"); + private JCheckBoxMenuItem chckGroupeTD = new JCheckBoxMenuItem("Groupe TD"); + private JCheckBoxMenuItem chckGroupeLangue = new JCheckBoxMenuItem("Groupe Langue"); + private JCheckBoxMenuItem chckGroupeInformatique = new JCheckBoxMenuItem("Groupe Informatique"); + private JCheckBoxMenuItem chckGroupeDocumentation = new JCheckBoxMenuItem("Groupe Documentation"); + private JCheckBoxMenuItem chckLV1 = new JCheckBoxMenuItem("LV1 : Langue Vivante 1"); + private JCheckBoxMenuItem chckLV2 = new JCheckBoxMenuItem("LV2 : Langue Vivante 2"); + private JCheckBoxMenuItem chckGroupePrincipal= new JCheckBoxMenuItem("Groupe Principal"); + private JCheckBoxMenuItem chckGroupeProjet= new JCheckBoxMenuItem("Groupe Projet"); + + JLabel lblInformation = new JLabel("Information :"); + JLabel lblInformationStudent = new JLabel(""); private JTable table; private String defautYear = null; public noeud nTable = null; - + List prefereAffichage = new ArrayList<>(); @@ -195,6 +216,101 @@ public class gestionnaire extends JFrame { panelNorth.add(menuBar, BorderLayout.NORTH); + JMenu menuAffichage = new JMenu("Affichage"); + menuAffichage.setFont(new Font("Segoe UI", Font.BOLD, 14)); + menuBar.add(menuAffichage); + + + + menuAffichage.add(chckToutesLesColonnes); + chckToutesLesColonnes.setSelected(true); + chckToutesLesColonnes.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if(chckToutesLesColonnes.isSelected()) { + chckGroupePrincipal.setSelected(true); + chckLV2.setSelected(true); + chckLV1.setSelected(true); + chckGroupeTD.setSelected(true); + chckGroupeLangue.setSelected(true); + chckGroupeInformatique.setSelected(true); + chckGroupeDocumentation.setSelected(true); + chckGroupeProjet.setSelected(true); + } + majTableFormation(); + } + }); + + + + + menuAffichage.addSeparator(); + + chckGroupePrincipal.setSelected(true); + menuAffichage.add(chckGroupePrincipal); + chckGroupePrincipal.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + majTableFormation(); + } + }); + + + chckGroupeTD.setSelected(true); + menuAffichage.add(chckGroupeTD); + chckGroupeTD.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + majTableFormation(); + } + }); + + chckGroupeLangue.setSelected(true); + menuAffichage.add(chckGroupeLangue); + chckGroupeLangue.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + majTableFormation(); + } + }); + + chckGroupeInformatique.setSelected(true); + menuAffichage.add(chckGroupeInformatique); + chckGroupeInformatique.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + majTableFormation(); + } + }); + + chckGroupeDocumentation.setSelected(true); + menuAffichage.add(chckGroupeDocumentation); + chckGroupeDocumentation.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + majTableFormation(); + } + }); + + chckGroupeProjet.setSelected(true); + menuAffichage.add(chckGroupeProjet); + chckGroupeProjet.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + majTableFormation(); + } + }); + + chckLV1.setSelected(true); + menuAffichage.add(chckLV1); + chckLV1.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + majTableFormation(); + } + }); + + chckLV2.setSelected(true); + menuAffichage.add(chckLV2); + chckLV2.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + majTableFormation(); + } + }); + + JMenu menuExport = new JMenu("Export"); menuExport.setFont(new Font("Tahoma", Font.BOLD, 14)); JMenuItem exportItem = menuExport.add(new exportTable(this)); @@ -208,12 +324,12 @@ public class gestionnaire extends JFrame { panelNorth.add(panelFiltre); cLV1= new JComboBox(); - cLV1.setBounds(677, 77, 168, 32); + cLV1.setBounds(854, 77, 168, 32); panelFiltre.add(cLV1); JLabel lblNewLabel_1 = new JLabel("LV1"); lblNewLabel_1.setFont(new Font("Tahoma", Font.BOLD, 12)); - lblNewLabel_1.setBounds(677, 60, 84, 14); + lblNewLabel_1.setBounds(854, 60, 84, 14); panelFiltre.add(lblNewLabel_1); cInformatique = new JComboBox(); @@ -226,12 +342,12 @@ public class gestionnaire extends JFrame { panelFiltre.add(lblGroupeInformatique); cLV2 = new JComboBox(); - cLV2.setBounds(677, 25, 168, 32); + cLV2.setBounds(854, 25, 168, 32); panelFiltre.add(cLV2); JLabel lblNewLabel_3 = new JLabel("LV2"); lblNewLabel_3.setFont(new Font("Tahoma", Font.BOLD, 12)); - lblNewLabel_3.setBounds(677, 11, 46, 14); + lblNewLabel_3.setBounds(854, 11, 46, 14); panelFiltre.add(lblNewLabel_3); cLangue= new JComboBox(); @@ -244,25 +360,73 @@ public class gestionnaire extends JFrame { panelFiltre.add(lblGroupeLangue); cProfil = new JComboBox(); - cProfil.setBounds(855, 25, 168, 32); + cProfil.setBounds(1032, 25, 168, 32); panelFiltre.add(cProfil); JLabel lblProfil = new JLabel("Profil étudiant"); lblProfil.setFont(new Font("Tahoma", Font.BOLD, 12)); - lblProfil.setBounds(855, 11, 127, 14); + lblProfil.setBounds(1032, 11, 127, 14); panelFiltre.add(lblProfil); + cDocumentation = new JComboBox(); + cDocumentation.setBounds(498, 77, 169, 32); + panelFiltre.add(cDocumentation); + + JLabel lblGroupeDocumentation = new JLabel("Groupe Documentation"); + lblGroupeDocumentation.setFont(new Font("Tahoma", Font.BOLD, 12)); + lblGroupeDocumentation.setBounds(499, 60, 160, 14); + panelFiltre.add(lblGroupeDocumentation); + + cGroupePrincipal = new JComboBox(); + cGroupePrincipal.setBounds(677, 25, 168, 32); + panelFiltre.add(cGroupePrincipal); + + JLabel lblGroupePrincipal = new JLabel("Groupe Principal"); + lblGroupePrincipal.setFont(new Font("Tahoma", Font.BOLD, 12)); + lblGroupePrincipal.setBounds(677, 11, 160, 14); + panelFiltre.add(lblGroupePrincipal); + + JButton btnNewButton = new JButton("Réïnitialise"); + btnNewButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + cDocumentation.setSelectedIndex(0); + cInformatique.setSelectedIndex(0); + cProfil.setSelectedIndex(0); + cGroupePrincipal.setSelectedIndex(0); + cGroupeProjet.setSelectedIndex(0); + cGroupeTD.setSelectedIndex(0); + cLV1.setSelectedIndex(0); + cLV2.setSelectedIndex(0); + cLangue.setSelectedIndex(0); + majTableGroupes(); + } + }); + btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 11)); + btnNewButton.setBounds(186, 25, 113, 32); + panelFiltre.add(btnNewButton); + + cGroupeProjet = new JComboBox(); + cGroupeProjet.setBounds(677, 77, 167, 32); + panelFiltre.add(cGroupeProjet); + + JLabel lblGroupeProjet = new JLabel("Groupe Projet"); + lblGroupeProjet.setFont(new Font("Tahoma", Font.BOLD, 12)); + lblGroupeProjet.setBounds(677, 61, 152, 14); + panelFiltre.add(lblGroupeProjet); + JPanel panelSouth = new JPanel(); panelSouth.setPreferredSize(new Dimension(400, 90)); panelSouth.setBackground(Color.gray); contentPane.add(panelSouth, BorderLayout.SOUTH); - panelSouth.setLayout(new BoxLayout(panelSouth, BoxLayout.X_AXIS)); - - - lblInformation.setAlignmentX(10.0f); + panelSouth.setLayout(new BoxLayout(panelSouth, BoxLayout.Y_AXIS)); lblInformation.setForeground(new Color(255, 255, 255)); lblInformation.setFont(new Font("Tahoma", Font.BOLD, 12)); panelSouth.add(lblInformation); + + lblInformationStudent.setForeground(new Color(255, 255, 128)); + lblInformationStudent.setFont(new Font("Tahoma", Font.PLAIN, 12)); + lblInformationStudent.setAlignmentY(1.0f); + panelSouth.add(lblInformationStudent); // Ajout d'un ActionListener à la JComboBox @@ -316,6 +480,63 @@ public class gestionnaire extends JFrame { } }); + cDocumentation.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + majTableGroupes(); + } + }); + + cGroupePrincipal.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + majTableGroupes(); + } + }); + + cGroupeProjet.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + majTableGroupes(); + } + }); + + + // Ajout d'un ListSelectionListener pour détecter la sélection de la ligne + ListSelectionModel selectionModel = table.getSelectionModel(); + selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + selectionModel.addListSelectionListener(new ListSelectionListener() { + @Override + public void valueChanged(ListSelectionEvent e) { + if (!e.getValueIsAdjusting()) { + int selectedRow = table.getSelectedRow(); + if (selectedRow != -1) { + + // Récupération des données de la ligne sélectionnée + Object[] rowData = new Object[table.getColumnCount()]; + for (int i = 0; i < table.getColumnCount(); i++) { + rowData[i] = table.getValueAt(selectedRow, i); + } + // Concaténation des valeurs de la ligne dans une chaîne de caractères +// StringBuilder sb = new StringBuilder(); +// for (Object value : rowData) { +// sb.append(value).append(", "); +// } +// sb.delete(sb.length() - 2, sb.length()); // Suppression de la virgule finale +// String rowDataString = sb.toString(); + + // Mise à jour de la JLabel avec les données de la ligne sélectionnée +// lblInformationStudent.setText("

Ligne : " + selectedRow + "
" + table.getValueAt(selectedRow, 16) + " " + table.getValueAt(selectedRow, 15) +// + " - - Groupe TD : " + table.getValueAt(selectedRow, 10) +// + " - - Groupe Langue : "+ table.getValueAt(selectedRow, 7) +// + " - - Groupe Informatique : " + table.getValueAt(selectedRow, 6) +"

"); + } + } + } + }); + + + majTableFormation(); majTableGroupes(); frame.setVisible(true); @@ -328,19 +549,45 @@ public class gestionnaire extends JFrame { if(nYears!=null) { noeud nFormation = nYears.getChild(cFormations.getSelectedItem().toString()); + String selectedGroupeTD = null; + String selectedLV1 = null; + String selectedLV2 = null; + String selectedLangue = null; + String selectedInformatique = null; + String selectedDocumentation = null; + String selectedProfil = null; + String selectedGroupePrincipal = null; + String selectedGroupeProjet= null; + + if(cGroupeTD.getItemCount()>0) selectedGroupeTD = cGroupeTD.getSelectedItem().toString(); + if(cLV1.getItemCount()>0) selectedLV1 = cLV1.getSelectedItem().toString(); + if(cLV2.getItemCount()>0) selectedLV2 = cLV2.getSelectedItem().toString(); + if(cLangue.getItemCount()>0) selectedLangue = cLangue.getSelectedItem().toString(); + if(cInformatique.getItemCount()>0) selectedInformatique = cInformatique.getSelectedItem().toString(); + if(cDocumentation.getItemCount()>0) selectedDocumentation = cDocumentation.getSelectedItem().toString(); + if(cProfil.getItemCount()>0) selectedProfil = cProfil.getSelectedItem().toString(); + if(cGroupePrincipal.getItemCount()>0) selectedGroupePrincipal = cGroupePrincipal.getSelectedItem().toString(); + if(cGroupeProjet.getItemCount()>0) selectedGroupeProjet = cGroupeProjet.getSelectedItem().toString(); + cGroupeTD.removeAllItems(); cLV1.removeAllItems(); cLV2.removeAllItems(); cLangue.removeAllItems(); cInformatique.removeAllItems(); + cDocumentation.removeAllItems(); cProfil.removeAllItems(); + cGroupePrincipal.removeAllItems(); + cGroupeProjet.removeAllItems(); List lGroupeTD = new ArrayList(); List lLV1 = new ArrayList(); List lLV2 = new ArrayList(); List lGroupeLangue = new ArrayList(); List lGroupeInformatique = new ArrayList(); + List lGroupeDocumentation = new ArrayList(); List lProfil = new ArrayList(); + List lGroupePrincipal = new ArrayList(); + List lGroupeProjet = new ArrayList(); String pasChoisi = " - "; @@ -354,6 +601,9 @@ public class gestionnaire extends JFrame { String GroupeLangue = nStudent.getAttributes("Groupe_Langue"); String GroupeInformatique = nStudent.getAttributes("Groupe_Informatique"); String Profil = nStudent.getAttributes("Profil_etudiant_lib."); + String Documentation = nStudent.getAttributes("Groupe_Doc"); + String GroupePrincipal = nStudent.getAttributes("Groupe_Principal"); + String GroupeProjet = nStudent.getAttributes("Groupe_Projet"); boolean isOnlySpaces = GroupeTD.matches("\\s+"); if(!lGroupeTD.contains(GroupeTD) && !isOnlySpaces) { @@ -379,7 +629,18 @@ public class gestionnaire extends JFrame { if(!lProfil.contains(Profil) && !isOnlySpaces) { lProfil.add(Profil); } - + isOnlySpaces = Documentation.matches("\\s+"); + if(!lGroupeDocumentation.contains(Documentation) && !isOnlySpaces) { + lGroupeDocumentation.add(Documentation); + } + isOnlySpaces = GroupePrincipal.matches("\\s+"); + if(!lGroupePrincipal.contains(GroupePrincipal) && !isOnlySpaces) { + lGroupePrincipal.add(GroupePrincipal); + } + isOnlySpaces = GroupeProjet.matches("\\s+"); + if(!lGroupeProjet.contains(GroupeProjet) && !isOnlySpaces) { + lGroupeProjet.add(GroupeProjet); + } } } @@ -388,36 +649,82 @@ public class gestionnaire extends JFrame { for (String option : lGroupeTD) { cGroupeTD.addItem(option); } + if(selectedGroupeTD!=null)if(lGroupeTD.contains(selectedGroupeTD)) { + cGroupeTD.setSelectedItem(selectedGroupeTD); + } + Collections.sort(lLV1); cLV1.addItem(pasChoisi); for (String option : lLV1) { cLV1.addItem(option); } + if(selectedLV1!=null)if(lLV1.contains(selectedLV1)) { + cLV1.setSelectedItem(selectedLV1); + } Collections.sort(lLV2); cLV2.addItem(pasChoisi); for (String option : lLV2) { cLV2.addItem(option); } + if(selectedLV2!=null)if(lLV2.contains(selectedLV2)) { + cLV2.setSelectedItem(selectedLV2); + } Collections.sort(lGroupeLangue); cLangue.addItem(pasChoisi); for (String option : lGroupeLangue) { cLangue.addItem(option); } + if(selectedLangue!=null)if(lGroupeLangue.contains(selectedLangue)) { + cLangue.setSelectedItem(selectedLangue); + } Collections.sort(lGroupeInformatique); cInformatique.addItem(pasChoisi); for (String option : lGroupeInformatique) { cInformatique.addItem(option); } + if(selectedInformatique!=null)if(lGroupeInformatique.contains(selectedInformatique)) { + cInformatique.setSelectedItem(selectedInformatique); + } Collections.sort(lProfil); cProfil.addItem(pasChoisi); for (String option : lProfil) { cProfil.addItem(option); } + if(selectedProfil!=null)if(lProfil.contains(selectedProfil)) { + cProfil.setSelectedItem(selectedProfil); + } + + Collections.sort(lGroupeDocumentation); + cDocumentation.addItem(pasChoisi); + for (String option : lGroupeDocumentation) { + cDocumentation.addItem(option); + } + if(selectedDocumentation!=null)if(lGroupeDocumentation.contains(selectedDocumentation)) { + cDocumentation.setSelectedItem(selectedDocumentation); + } + + Collections.sort(lGroupePrincipal); + cGroupePrincipal.addItem(pasChoisi); + for (String option : lGroupePrincipal) { + cGroupePrincipal.addItem(option); + } + if(selectedGroupePrincipal!=null)if(lGroupePrincipal.contains(selectedGroupePrincipal)) { + cGroupePrincipal.setSelectedItem(selectedGroupePrincipal); + } + + Collections.sort(lGroupeProjet); + cGroupeProjet.addItem(pasChoisi); + for (String option : lGroupeProjet) { + cGroupeProjet.addItem(option); + } + if(selectedGroupeProjet!=null)if(lGroupeProjet.contains(selectedGroupeProjet)) { + cGroupeProjet.setSelectedItem(selectedGroupeProjet); + } } @@ -438,6 +745,9 @@ public class gestionnaire extends JFrame { String GroupeLangue = (String) cLangue.getSelectedItem(); String GroupeInformatique = (String) cInformatique.getSelectedItem(); String Profil = (String) cProfil.getSelectedItem(); + String GroupeDocumentation = (String) cDocumentation.getSelectedItem(); + String GroupePrincipal = (String) cGroupePrincipal.getSelectedItem(); + String GroupeProjet = (String) cGroupeProjet.getSelectedItem(); nTable = new noeud("Table"); nTable.setAttribut("defaut_Year", defautYear); @@ -484,119 +794,215 @@ public class gestionnaire extends JFrame { Profil = pasChoisi; } + if(cDocumentation.getSelectedItem()!=null) { + nTable.setAttribut("Groupe_Doc", cDocumentation.getSelectedItem().toString()); + }else { + nTable.setAttribut("Groupe_Doc", pasChoisi); + GroupeDocumentation = pasChoisi; + } + + if(cGroupePrincipal.getSelectedItem()!=null) { + nTable.setAttribut("Groupe_Principal", cGroupePrincipal.getSelectedItem().toString()); + }else { + nTable.setAttribut("Groupe_Principal", pasChoisi); + GroupePrincipal = pasChoisi; + } + + if(cGroupeProjet.getSelectedItem()!=null) { + nTable.setAttribut("Groupe_Projet", cGroupeProjet.getSelectedItem().toString()); + }else { + nTable.setAttribut("Groupe_Projet", pasChoisi); + GroupeProjet = pasChoisi; + } + Map dictionary = new HashMap<>(); - if(GroupeTD!=null) { - noeud nYears = commandes.nBase.getChild(cYears.getSelectedItem().toString()); - nTable.setAttribut("Formation", cFormations.getSelectedItem().toString()); + noeud nYears = commandes.nBase.getChild(cYears.getSelectedItem().toString()); + nTable.setAttribut("Formation", cFormations.getSelectedItem().toString()); + + if(nYears!=null) { + noeud nFormation = nYears.getChild(cFormations.getSelectedItem().toString()); + String[][] data = new String[nFormation.getChildren().size()][31] ; - if(nYears!=null) { - noeud nFormation = nYears.getChild(cFormations.getSelectedItem().toString()); - String[][] data = new String[nFormation.getChildren().size()][31] ; - - // création de l'entête - int indexCol = 0; - int compteur = 0; - noeud firstStudent = nFormation.getFirstChild(); - for (Map.Entry entry : firstStudent.getAttributes().entrySet()) { - String key = entry.getKey(); - dictionary.put(key, indexCol); + // création de l'entête + int indexCol = 0; + int compteur = 0; + noeud firstStudent = nFormation.getFirstChild(); + for (Map.Entry entry : firstStudent.getAttributes().entrySet()) { + String key = entry.getKey(); + if(chckToutesLesColonnes.isSelected() ) { + dictionary.put(key, indexCol); indexCol++; - } + }else { + if(key.equals("Individu_-_Nom") || key.equals("Individu_-_Prenom") || key.equals("Individu_-_Code_Etudiant")) { + dictionary.put(key, indexCol); + indexCol++; + } + if(chckGroupePrincipal.isSelected() && key.equals("Groupe_Principal") ) { + dictionary.put(key, indexCol); + indexCol++; + } + if(chckGroupeTD.isSelected() && key.equals("Groupe_TD") ) { + dictionary.put(key, indexCol); + indexCol++; + } + if(chckGroupeLangue.isSelected() && key.equals("Groupe_Langue") ) { + dictionary.put(key, indexCol); + indexCol++; + } + if(chckGroupeInformatique.isSelected() && key.equals("Groupe_Informatique") ) { + dictionary.put(key, indexCol); + indexCol++; + } + if(chckGroupeDocumentation.isSelected() && key.equals("Groupe_Doc") ) { + dictionary.put(key, indexCol); + indexCol++; + } + if(chckLV1.isSelected() && key.equals("LV1") ) { + dictionary.put(key, indexCol); + indexCol++; + } + if(chckLV2.isSelected() && key.equals("LV2") ) { + dictionary.put(key, indexCol); + indexCol++; + } + if(chckGroupeProjet.isSelected() && key.equals("Groupe_Projet") ) { + dictionary.put(key, indexCol); + indexCol++; + } + } + } + + int indexRow = 0; + for(noeud nStudent : nFormation.getChildren()) { + indexCol = 0; + boolean trouve = false; + for (Map.Entry entry : nStudent.getAttributes().entrySet()) { + + if( ( nStudent.getAttributes("Groupe_Projet").equals(GroupeProjet) || GroupeProjet.equals(pasChoisi) ) + && ( nStudent.getAttributes("Groupe_Principal").equals(GroupePrincipal) || GroupePrincipal.equals(pasChoisi) ) + && ( nStudent.getAttributes("Groupe_Doc").equals(GroupeDocumentation) || GroupeDocumentation.equals(pasChoisi) ) + && ( nStudent.getAttributes("Profil_etudiant_lib.").equals(Profil) || Profil.equals(pasChoisi) ) + && ( nStudent.getAttributes("Groupe_Langue").equals(GroupeLangue) || GroupeLangue.equals(pasChoisi) ) + && ( nStudent.getAttributes("LV2").equals(LV2) || LV2.equals(pasChoisi) ) + && ( nStudent.getAttributes("Groupe_Informatique").equals(GroupeInformatique) || GroupeInformatique.equals(pasChoisi) ) + && ( nStudent.getAttributes("Groupe_TD").equals(GroupeTD) || GroupeTD.equals(pasChoisi) ) + && ( nStudent.getAttributes("LV1").equals(LV1) || LV1.equals(pasChoisi) ) ) { + + if(dictionary.get(entry.getKey())!=null) { + String key = entry.getKey(); + if(chckToutesLesColonnes.isSelected() ) { + data[indexRow][dictionary.get(key)] = entry.getValue(); + }else { + if(key.equals("Individu_-_Nom") || key.equals("Individu_-_Prenom") || key.equals("Individu_-_Code_Etudiant")) { + data[indexRow][dictionary.get(key)] = entry.getValue(); + } + if(chckGroupePrincipal.isSelected() && key.equals("Groupe_Principal") ) { + data[indexRow][dictionary.get(key)] = entry.getValue(); + } + if(chckGroupeTD.isSelected() && key.equals("Groupe_TD") ) { + data[indexRow][dictionary.get(key)] = entry.getValue(); + } + if(chckGroupeLangue.isSelected() && key.equals("Groupe_Langue") ) { + data[indexRow][dictionary.get(key)] = entry.getValue(); + } + if(chckGroupeInformatique.isSelected() && key.equals("Groupe_Informatique") ) { + data[indexRow][dictionary.get(key)] = entry.getValue(); + } + if(chckGroupeDocumentation.isSelected() && key.equals("Groupe_Doc") ) { + data[indexRow][dictionary.get(key)] = entry.getValue(); + } + if(chckLV1.isSelected() && key.equals("LV1") ) { + data[indexRow][dictionary.get(key)] = entry.getValue(); + } + if(chckLV2.isSelected() && key.equals("LV2") ) { + data[indexRow][dictionary.get(key)] = entry.getValue(); + } + if(chckGroupeProjet.isSelected() && key.equals("Groupe_Projet") ) { + data[indexRow][dictionary.get(key)] = entry.getValue(); + } + } + indexCol++; + trouve=true; + } + + } + } - int indexRow = 0; - for(noeud nStudent : nFormation.getChildren()) { - indexCol = 0; - boolean trouve = false; - for (Map.Entry entry : nStudent.getAttributes().entrySet()) { - - if( ( nStudent.getAttributes("Profil_etudiant_lib.").equals(Profil) || Profil.equals(pasChoisi) ) - && ( nStudent.getAttributes("Groupe_Langue").equals(GroupeLangue) || GroupeLangue.equals(pasChoisi) ) - && ( nStudent.getAttributes("LV2").equals(LV2) || LV2.equals(pasChoisi) ) - && ( nStudent.getAttributes("Groupe_Informatique").equals(GroupeInformatique) || GroupeInformatique.equals(pasChoisi) ) - && ( nStudent.getAttributes("Groupe_TD").equals(GroupeTD) || GroupeTD.equals(pasChoisi) ) - && ( nStudent.getAttributes("LV1").equals(LV1) || LV1.equals(pasChoisi) ) ) { - - if(dictionary.get(entry.getKey())!=null) { - data[indexRow][dictionary.get(entry.getKey())] = entry.getValue(); - indexCol++; - trouve=true; - } - - } - } - - if(trouve) { - indexRow++; - compteur=indexRow; - try { - nTable.addChild(nStudent.clone()); - } catch (CloneNotSupportedException e) { - e.printStackTrace(); - } + if(trouve) { + indexRow++; + compteur=indexRow; + try { + nTable.addChild(nStudent.clone()); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); } } - - lblInformation.setText("Informations : Nombre d'étudaint = " + compteur); - - // Obtenir les entrées du dictionnaire sous forme de liste - List> entryList = new ArrayList<>(dictionary.entrySet()); - - // Trier la liste d'entrées par ordre croissant des valeurs - Collections.sort(entryList, Comparator.comparingInt(Map.Entry::getValue)); - - // Extraire les clés triées dans un tableau de type String[] dans l'ordre des colonnes - String[] head = entryList.stream() - .map(Map.Entry::getKey) - .toArray(String[]::new); - - table.setModel(new DefaultTableModel(data, head)); - - for (int columnIndex = 0; columnIndex < table.getColumnCount(); columnIndex++) { - // Obtention de la colonne à l'index donné - table.getColumnModel().getColumn(columnIndex).setPreferredWidth(getMaxColumnWidth(table, columnIndex)); - } - - // Ajouter un écouteur de modification de cellule à la table - table.getModel().addTableModelListener(e -> { - int row = e.getFirstRow(); - int column = e.getColumn(); - if (row != -1 && column != -1) { - String key = getColumnsName()[column]; - String value = (String) table.getValueAt(row, column); - - // Obtenir l'indice de la colonne "Individu_-_Code_Etudiant" - int columnIndex = table.getColumnModel().getColumnIndex("Individu_-_Code_Etudiant"); - String numeroEtudiant = (String) table.getModel().getValueAt(row, columnIndex); - - noeud nF = commandes.nBase.getChild(defautYear).getChild(cFormations.getSelectedItem().toString()); - String codeStudent = "n"+numeroEtudiant; - - noeud nStudent = nF.getChild(codeStudent); - - boolean isOnlySpace = value.matches("\\s+"); - if(!isOnlySpace) { - try { - nStudent.setAttribut(key, value.trim() ); - sauvegardeXMLBase.save(commandes.nBase, saveType.SANS_MESSAGE); - }catch (Exception e1) { - JOptionPane.showMessageDialog(null, "Impossible de sauvegarder ce contenu.", "Erreur", JOptionPane.ERROR_MESSAGE); - } - }else { - JOptionPane.showMessageDialog(null, "Le contenu ne doit pas être composé d'espace.", "Erreur", JOptionPane.ERROR_MESSAGE); - table.setValueAt("", row, column); - } - - majTableFormation(); - majTableGroupes(); - - } - }); - table.revalidate(); - table.repaint(); } + + lblInformation.setText("Informations : Nombre d'étudaint = " + compteur); + + // Obtenir les entrées du dictionnaire sous forme de liste + List> entryList = new ArrayList<>(dictionary.entrySet()); + + // Trier la liste d'entrées par ordre croissant des valeurs + Collections.sort(entryList, Comparator.comparingInt(Map.Entry::getValue)); + + // Extraire les clés triées dans un tableau de type String[] dans l'ordre des colonnes + String[] head = entryList.stream() + .map(Map.Entry::getKey) + .toArray(String[]::new); + + table.setModel(new DefaultTableModel(data, head)); + + for (int columnIndex = 0; columnIndex < table.getColumnCount(); columnIndex++) { + // Obtention de la colonne à l'index donné + table.getColumnModel().getColumn(columnIndex).setPreferredWidth(getMaxColumnWidth(table, columnIndex)); + } + + // Ajouter un écouteur de modification de cellule à la table + table.getModel().addTableModelListener(e -> { + int row = e.getFirstRow(); + int column = e.getColumn(); + if (row != -1 && column != -1) { + String key = getColumnsName()[column]; + String value = (String) table.getValueAt(row, column); + + // Obtenir l'indice de la colonne "Individu_-_Code_Etudiant" + int columnIndex = table.getColumnModel().getColumnIndex("Individu_-_Code_Etudiant"); + String numeroEtudiant = (String) table.getModel().getValueAt(row, columnIndex); + + noeud nF = commandes.nBase.getChild(defautYear).getChild(cFormations.getSelectedItem().toString()); + String codeStudent = "n"+numeroEtudiant; + + noeud nStudent = nF.getChild(codeStudent); + + boolean isOnlySpace = value.matches("\\s+"); + if(!isOnlySpace) { + try { + nStudent.setAttribut(key, value.trim() ); + sauvegardeXMLBase.save(commandes.nBase, saveType.SANS_MESSAGE); + }catch (Exception e1) { + JOptionPane.showMessageDialog(null, "Impossible de sauvegarder ce contenu.", "Erreur", JOptionPane.ERROR_MESSAGE); + } + }else { + JOptionPane.showMessageDialog(null, "Le contenu ne doit pas être composé d'espace.", "Erreur", JOptionPane.ERROR_MESSAGE); + table.setValueAt("", row, column); + } + + majTableFormation(); + majTableGroupes(); + + } + }); + + + + table.revalidate(); + table.repaint(); } + } @@ -607,7 +1013,7 @@ public class gestionnaire extends JFrame { * @return */ private static int getMaxColumnWidth(JTable table, int columnIndex) { - int maxWidth = 70; + int maxWidth = 80; DefaultTableCellRenderer cellRenderer = new DefaultTableCellRenderer(); @@ -651,5 +1057,4 @@ public class gestionnaire extends JFrame { } return columnNames; } - } diff --git a/src/baseUFRHG/lecture.java b/src/baseUFRHG/lecture.java index 6a3e957..cf75cf5 100644 --- a/src/baseUFRHG/lecture.java +++ b/src/baseUFRHG/lecture.java @@ -13,7 +13,6 @@ public class lecture { noeud noeudCSV = null; - noeud nBase = recupeBases.recupeLaBase(); @@ -24,8 +23,6 @@ public class lecture { if(fileData!=null) { String filePath = fileData.getAbsolutePath(); noeudCSV = lectureCSV.noeudCSV(filePath); - - } } catch (Exception e) { e.printStackTrace(); diff --git a/src/baseUFRHG/lectureCSV.java b/src/baseUFRHG/lectureCSV.java index 6142349..82bb89b 100644 --- a/src/baseUFRHG/lectureCSV.java +++ b/src/baseUFRHG/lectureCSV.java @@ -16,9 +16,7 @@ public class lectureCSV { String line; String csvSplitBy = ";"; noeud donne = new noeud("data"); - -// try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path),"UTF-8"))) { - + String encoding = FileEncodingDetector.EncodingFile(path); if(encoding!=null) { try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path), encoding))) { @@ -43,7 +41,6 @@ public class lectureCSV { int compteur = 0 ; noeud d = new noeud("ligne_" + compteurLine); for (String value : data) { - // value = supprimeCaracatresSpeciaux.TousLesCaracatresSpeciaux(value); d.setAttribut(Head.getAttributes("C"+String.valueOf(compteur)), value); compteur++; } diff --git a/src/baseUFRHG/majBase.java b/src/baseUFRHG/majBase.java index 25088f1..5c16e07 100644 --- a/src/baseUFRHG/majBase.java +++ b/src/baseUFRHG/majBase.java @@ -18,8 +18,10 @@ public class majBase { if(nCSV.getChildren().get(i).getAttributes("IAE_-_Etape_lib.")!=null) { if(!nCSV.getChildren().get(i).getAttributes("IAE_-_Etape_lib.").isEmpty()) { if(!isExisteFormationIntoBase(nBase, nCSV.getChildren().get(i).getAttributes("IAE_-_Etape_lib."))) { - nBase.getChild(defaut_Year).addChild(new noeud( supprimeCaracatresSpeciaux.TousLesCaracatresSpeciaux(nCSV.getChildren().get(i).getAttributes("IAE_-_Etape_lib.")))); - } + noeud nFormation = new noeud( supprimeCaracatresSpeciaux.TousLesCaracatresSpeciaux(nCSV.getChildren().get(i).getAttributes("IAE_-_Etape_lib."))); + nFormation.setAttribut("Affichage", "defaut"); + nBase.getChild(defaut_Year).addChild(nFormation); + } } }