diff --git a/base/archiveBase.zip b/base/archiveBase.zip index a495f5e..0a0933f 100644 Binary files a/base/archiveBase.zip and b/base/archiveBase.zip differ diff --git a/base/base.xml b/base/base.xml index ae12f65..27df416 100644 --- a/base/base.xml +++ b/base/base.xml @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/base/base_sauvegarde.xml b/base/base_sauvegarde.xml index ae12f65..8ea656c 100644 --- a/base/base_sauvegarde.xml +++ b/base/base_sauvegarde.xml @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/Sans titre - Copie.png b/resources/Sans titre _2.png similarity index 100% rename from resources/Sans titre - Copie.png rename to resources/Sans titre _2.png diff --git a/resources/Sans titre_2.png b/resources/Sans titre_2.png new file mode 100644 index 0000000..fa3ebb1 Binary files /dev/null and b/resources/Sans titre_2.png differ diff --git a/src/baseUFRHG/FileEncodingDetector.java b/src/Inscriptions/FileEncodingDetector.java similarity index 95% rename from src/baseUFRHG/FileEncodingDetector.java rename to src/Inscriptions/FileEncodingDetector.java index e26687c..31f469b 100644 --- a/src/baseUFRHG/FileEncodingDetector.java +++ b/src/Inscriptions/FileEncodingDetector.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package Inscriptions; import java.io.File; import java.io.FileInputStream; diff --git a/src/Inscriptions/importInscriptionCSV.java b/src/Inscriptions/importInscriptionCSV.java index 007755f..50f870d 100644 --- a/src/Inscriptions/importInscriptionCSV.java +++ b/src/Inscriptions/importInscriptionCSV.java @@ -6,10 +6,10 @@ import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; -import baseUFRHG.FileChooserCSV; -import baseUFRHG.commandes; -import baseUFRHG.noeud; -import baseUFRHG.recupeBases; +import base.recupeBases; +import outils.FileChooserCSV; +import outils.commandes; +import outils.noeud; public class importInscriptionCSV { diff --git a/src/Inscriptions/importInscriptionXLS.java b/src/Inscriptions/importInscriptionXLS.java index 96db7cf..05cb959 100644 --- a/src/Inscriptions/importInscriptionXLS.java +++ b/src/Inscriptions/importInscriptionXLS.java @@ -15,11 +15,11 @@ import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import baseUFRHG.commandes; -import baseUFRHG.noeud; -import baseUFRHG.recupeBases; -import baseUFRHG.sauvegardeXMLBase; -import baseUFRHG.supprimeCaracatresSpeciaux; +import base.recupeBases; +import base.sauvegardeXMLBase; +import outils.commandes; +import outils.noeud; +import outils.supprimeCaracatresSpeciaux; public class importInscriptionXLS { diff --git a/src/Inscriptions/lectureCSV.java b/src/Inscriptions/lectureCSV.java index 8cac042..b1392b8 100644 --- a/src/Inscriptions/lectureCSV.java +++ b/src/Inscriptions/lectureCSV.java @@ -9,9 +9,8 @@ import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; -import baseUFRHG.FileEncodingDetector; -import baseUFRHG.noeud; -import baseUFRHG.supprimeCaracatresSpeciaux; +import outils.noeud; +import outils.supprimeCaracatresSpeciaux; public class lectureCSV { diff --git a/src/Inscriptions/majBaseWithCSV.java b/src/Inscriptions/majBaseWithCSV.java index 9f8e7eb..52dc420 100644 --- a/src/Inscriptions/majBaseWithCSV.java +++ b/src/Inscriptions/majBaseWithCSV.java @@ -2,10 +2,10 @@ package Inscriptions; import javax.swing.JOptionPane; -import baseUFRHG.noeud; -import baseUFRHG.sauvegardeXMLBase; -import baseUFRHG.supprimeCaracatresSpeciaux; -import baseUFRHG.sauvegardeXMLBase.saveType; +import base.sauvegardeXMLBase; +import base.sauvegardeXMLBase.saveType; +import outils.noeud; +import outils.supprimeCaracatresSpeciaux; public class majBaseWithCSV { diff --git a/src/Windows/Window_demarre.java b/src/Windows/Window_demarre.java index f7d8349..7c1e9ba 100644 --- a/src/Windows/Window_demarre.java +++ b/src/Windows/Window_demarre.java @@ -13,6 +13,7 @@ import java.io.File; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; +import java.util.Random; import java.util.Timer; import java.util.TimerTask; @@ -27,14 +28,15 @@ import javax.swing.UIManager; import Inscriptions.importInscriptionCSV; import Inscriptions.importInscriptionXLS; -import baseUFRHG.CreateUpdateZipArchive; -import baseUFRHG.FileChooserXLSX; -import baseUFRHG.VersionChecker; -import baseUFRHG.commandes; -import baseUFRHG.exportBaseToExcel; -import baseUFRHG.importAllBaseToExcel; -import baseUFRHG.recupeBases; -import baseUFRHG.sauvegardeXMLBase; +import base.CreateUpdateZipArchive; +import base.Hash; +import base.recupeBases; +import base.sauvegardeXMLBase; +import exportations.exportBaseToExcel; +import gestion_version.VersionChecker; +import importations.importAllBaseToExcel; +import outils.FileChooserXLSX; +import outils.commandes; public class Window_demarre extends JFrame { @@ -73,10 +75,12 @@ public class Window_demarre extends JFrame { // mise à jour de la base de données si nouvelle version de l'application utilisé. commandes.nBase=recupeBases.recupeLaBase(); + VersionChecker.UpdateVersion(commandes.nBase); if(commandes.blocageApplication) { - JOptionPane.showMessageDialog(null, "Blocage de l'application.
Par pablo rodriguez"); + JOptionPane.showMessageDialog(null, "Blocage de l'application.
" + + "Contacter votre administrateur réseau.
Erreur : Autorisation refusée."); return; } @@ -95,8 +99,10 @@ public class Window_demarre extends JFrame { @Override public void run() { // Appeler la méthode de sauvegarde ici - sauvegardeXMLBase.saveSauvegarde(commandes.nBase); - CreateUpdateZipArchive.save(); + if(Hash.faireLaSauvegarde()) { + sauvegardeXMLBase.saveSauvegarde(commandes.nBase); + CreateUpdateZipArchive.save(); + } } }; @@ -185,21 +191,16 @@ public class Window_demarre extends JFrame { btnimporterDesInscriptionsdepuisClasseur.setBounds(397, 323, 366, 60); frmEvalwriter.getContentPane().add(btnimporterDesInscriptionsdepuisClasseur); - JLabel lblAuteurVersion = new JLabel("Pablo Rodriguez - 2023
Version "+ commandes.version+""); - lblAuteurVersion.setVerticalAlignment(SwingConstants.TOP); - lblAuteurVersion.setHorizontalAlignment(SwingConstants.LEFT); - lblAuteurVersion.setFont(new Font("Tahoma", Font.BOLD, 16)); - lblAuteurVersion.setForeground(new Color(255, 255, 255)); - lblAuteurVersion.setBounds(22, 11, 307, 55); - frmEvalwriter.getContentPane().add(lblAuteurVersion); - btnNAideMiseAJour.setForeground(Color.GRAY); btnNAideMiseAJour.setFont(new Font("Tahoma", Font.BOLD | Font.ITALIC, 12)); btnNAideMiseAJour.setBounds(10, 561, 377, 30); frmEvalwriter.getContentPane().add(btnNAideMiseAJour); - - ImageIcon imageIcon = new ImageIcon(Window_demarre.class.getResource("/resources/Sans titre.png")); + // Générer un nombre aléatoire entre 1 et 4 inclusivement + Random random = new Random(); + int randomNumber = random.nextInt(16) + 1; + ImageIcon imageIcon = new ImageIcon(Window_demarre.class.getResource("/resources/Sans titre_"+ String.valueOf(randomNumber) +".jpg")); +// imageIcon = new ImageIcon(Window_demarre.class.getResource("/resources/Sans titre_16.jpg")); Image image = imageIcon.getImage(); // Détermination de la taille souhaitée pour l'image @@ -209,9 +210,20 @@ public class Window_demarre extends JFrame { // Redimensionnement de l'image pour qu'elle s'adapte à la taille souhaitée Image resizedImage = image.getScaledInstance(newWidth, newHeight, Image.SCALE_SMOOTH); + JLabel lblAuteurVersion = new JLabel("Pablo Rodriguez - 2023
Version "+ commandes.version+""); + lblAuteurVersion.setVerticalAlignment(SwingConstants.TOP); + lblAuteurVersion.setHorizontalAlignment(SwingConstants.LEFT); + lblAuteurVersion.setFont(new Font("Tahoma", Font.BOLD, 16)); + lblAuteurVersion.setForeground(new Color(255, 255, 255)); + lblAuteurVersion.setBounds(22, 11, 307, 55); + frmEvalwriter.getContentPane().add(lblAuteurVersion); + if(randomNumber==3 || randomNumber==4 || randomNumber==7 + || randomNumber==10 || randomNumber==11 || randomNumber==12 + || randomNumber==14 || randomNumber==15) lblAuteurVersion.setForeground(new Color(0, 0, 0)); + JLabel lblFondImage= new JLabel(new ImageIcon(resizedImage)); lblFondImage.setVerticalAlignment(SwingConstants.BOTTOM); - lblFondImage.setBounds(10, -48, 753, 365); + lblFondImage.setBounds(10, 0, 753, 317); frmEvalwriter.getContentPane().add(lblFondImage); diff --git a/src/Windows/Window_gestionnaire.java b/src/Windows/Window_gestionnaire.java index 2bb1dd7..ae52035 100644 --- a/src/Windows/Window_gestionnaire.java +++ b/src/Windows/Window_gestionnaire.java @@ -15,6 +15,7 @@ import java.awt.event.InputEvent; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; import java.io.File; import java.util.ArrayList; import java.util.Collections; @@ -54,15 +55,15 @@ import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; -import baseUFRHG.sauvegardeXMLBase.saveType; -import baseUFRHG.FileChooserXML; -import baseUFRHG.commandes; -import baseUFRHG.noeud; -import baseUFRHG.recupeBases; -import baseUFRHG.sauvegardeXMLBase; -import baseUFRHG.actions.exportEmargement; -import baseUFRHG.actions.exportTable; -import baseUFRHG.actions.saveTable; +import actions.exportEmargement; +import actions.exportTable; +import actions.saveTable; +import base.recupeBases; +import base.sauvegardeXMLBase; +import base.sauvegardeXMLBase.saveType; +import outils.FileChooserXML; +import outils.commandes; +import outils.noeud; public class Window_gestionnaire extends JFrame { @@ -108,6 +109,7 @@ public class Window_gestionnaire extends JFrame { private JTable table; private String defautYear = null; public noeud nTable = null; + public noeud nStudent = null; String oldValue = null; @@ -281,7 +283,8 @@ public class Window_gestionnaire extends JFrame { cLangueLV1.setSelectedIndex(0); cLangueLV2.setSelectedIndex(0); cRegime.setSelectedIndex(0); - majTableGroupes(); + nStudent = null; + majTable(); } }); @@ -301,7 +304,7 @@ public class Window_gestionnaire extends JFrame { cGroupeTD.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - majTableGroupes(); + majTable(); } }); @@ -326,7 +329,7 @@ public class Window_gestionnaire extends JFrame { cLangueLV1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - majTableGroupes(); + majTable(); } }); @@ -341,7 +344,7 @@ public class Window_gestionnaire extends JFrame { cGroupePrincipal.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - majTableGroupes(); + majTable(); } }); @@ -353,12 +356,12 @@ public class Window_gestionnaire extends JFrame { gbc_cGroupeProjet.gridy = 1; panelFiltre.add(cGroupeProjet, gbc_cGroupeProjet); - cGroupeProjet.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - majTableGroupes(); - } - }); + cGroupeProjet.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + majTable(); + } + }); cLV1= new JComboBox(); GridBagConstraints gbc_cLV1 = new GridBagConstraints(); @@ -371,7 +374,7 @@ public class Window_gestionnaire extends JFrame { cLV1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - majTableGroupes(); + majTable(); } }); @@ -386,7 +389,7 @@ public class Window_gestionnaire extends JFrame { cProfil.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - majTableGroupes(); + majTable(); } }); textPaneNom.setFont(new Font("Tahoma", Font.BOLD, 12)); @@ -400,13 +403,13 @@ public class Window_gestionnaire extends JFrame { @Override public void insertUpdate(DocumentEvent e) { - majTableGroupes(); + majTable(); System.out.println("insertUpdate"); } @Override public void removeUpdate(DocumentEvent e) { - majTableGroupes(); + majTable(); System.out.println("removeUpdate"); } @@ -465,8 +468,6 @@ public class Window_gestionnaire extends JFrame { panelFiltre.add(lblLV2, gbc_lblLV2); - - // Ajout d'un ActionListener à la JComboBox cFormations = new JComboBox(); cFormations.setVisible(true); @@ -480,11 +481,10 @@ public class Window_gestionnaire extends JFrame { cFormations.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - majTableFormation(); + majFiltres(); } }); - JLabel lblRegime = new JLabel("Régime"); lblRegime.setFont(new Font("Tahoma", Font.BOLD, 12)); @@ -534,8 +534,6 @@ public class Window_gestionnaire extends JFrame { JMenu menuAffichage = new JMenu("Affichage"); menuAffichage.setFont(new Font("Segoe UI", Font.BOLD, 14)); menuBar.add(menuAffichage); - - menuAffichage.add(chckToutesLesColonnes); chckToutesLesColonnes.addItemListener(new ItemListener() { @@ -659,6 +657,39 @@ public class Window_gestionnaire extends JFrame { mnNewMenu.addSeparator(); + JMenuItem menuSupprimeEtudiantDeLaBase = new JMenuItem("Supprimer de la base l'étudiant sélectionné."); + mnNewMenu.add(menuSupprimeEtudiantDeLaBase); + menuSupprimeEtudiantDeLaBase.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + if(nStudent!=null) { + + String nomStudent = nStudent.getAttributes("Individu_-_Nom"); + String prenomStudent = nStudent.getAttributes("Individu_-_Prenom"); + String codeStudent = nStudent.getAttributes("Individu_-_Code_Etudiant"); + String nomFormation = cFormations.getSelectedItem().toString(); + + int userChoice = JOptionPane.showConfirmDialog(null, "Vous êtes sur le point de supprimer de la formation : \"" + nomFormation +"\"
" + + "L'étudiant(e) : " +codeStudent + " - "+ prenomStudent + " " + nomStudent + "

" + + "Voulez-vous réellement le(a) retirer de cette formation ?", "Confirmation",JOptionPane.YES_NO_CANCEL_OPTION); + + // Vérifier le choix de l'utilisateur + if (userChoice == JOptionPane.YES_OPTION) { + System.out.println("Vous avez choisi Oui."); + commandes.nBase.getChild(nomFormation).removeChild(nStudent); + majTable(); + } else if (userChoice == JOptionPane.NO_OPTION) { + System.out.println("Vous avez choisi Non."); + } else if (userChoice == JOptionPane.CANCEL_OPTION) { + System.out.println("Vous avez choisi Annuler."); + } else { + System.out.println("Aucun choix n'a été fait."); + } + } + } + }); + + mnNewMenu.addSeparator(); + JMenuItem menuSelectYearDefautl = new JMenuItem("Sélectionner une année universitaire par défaut"); mnNewMenu.add(menuSelectYearDefautl); @@ -684,7 +715,7 @@ public class Window_gestionnaire extends JFrame { cInformatique.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - majTableGroupes(); + majTable(); } }); @@ -698,7 +729,7 @@ public class Window_gestionnaire extends JFrame { cLangueLV2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - majTableGroupes(); + majTable(); } }); @@ -709,11 +740,10 @@ public class Window_gestionnaire extends JFrame { gbc_cDocumentation.gridx = 4; gbc_cDocumentation.gridy = 3; panelFiltre.add(cDocumentation, gbc_cDocumentation); - cDocumentation.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - majTableGroupes(); + majTable(); } }); @@ -724,11 +754,10 @@ public class Window_gestionnaire extends JFrame { gbc_cLV2.gridx = 6; gbc_cLV2.gridy = 3; panelFiltre.add(cLV2, gbc_cLV2); - cLV2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - majTableGroupes(); + majTable(); } }); @@ -739,11 +768,10 @@ public class Window_gestionnaire extends JFrame { gbc_cRegime.gridx = 7; gbc_cRegime.gridy = 3; panelFiltre.add(cRegime, gbc_cRegime); - cRegime.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - majTableGroupes(); + majTable(); } }); @@ -792,8 +820,10 @@ public class Window_gestionnaire extends JFrame { if(rowData[indexPrenom]!=null && rowData[indexNom]!=null && rowData[indexCode]!=null) { lblInformationStudent.setText(rowData[indexPrenom].toString() + " " + rowData[indexNom].toString() + " - " + rowData[indexCode].toString() ); + nStudent = commandes.nBase.getChild(cFormations.getSelectedItem().toString()).getChild("n"+ rowData[indexCode]); }else { lblInformationStudent.setText(""); + nStudent = null; } } @@ -817,16 +847,42 @@ public class Window_gestionnaire extends JFrame { } }); - + // Ajouter un KeyListener à la JFrame + // détection de la touche escape pour remettre à null le noeud nStudent + // et réinitialise la selection de la ligne. + table.addKeyListener(new KeyListener() { + @Override + public void keyTyped(KeyEvent e) { + // Cette méthode n'est pas utilisée ici + } + @Override + public void keyPressed(KeyEvent e) { + // Vérifier si la touche Echap est pressée + if (e.getKeyCode() == KeyEvent.VK_ESCAPE) { + nStudent = null; + table.clearSelection(); + System.out.println("La touche Echap a été pressée !"); + } + } + + @Override + public void keyReleased(KeyEvent e) { + // Cette méthode n'est pas utilisée ici + } + }); - majTableFormation(); - majTableGroupes(); + + majFiltres(); + majTable(); frame.setVisible(true); } - public void majTableFormation() { + /** + * Mise à jour des combox + */ + public void majFiltres() { chargeAffichageColonne(); @@ -1058,7 +1114,7 @@ public class Window_gestionnaire extends JFrame { /** * Mise à jour de la table. */ - public void majTableGroupes() { + public void majTable() { lblInformationStudent.setText(""); @@ -1386,8 +1442,8 @@ public class Window_gestionnaire extends JFrame { table.setValueAt(oldValue, row, column); } - majTableFormation(); - majTableGroupes(); + majFiltres(); + majTable(); } }); @@ -1453,6 +1509,11 @@ public class Window_gestionnaire extends JFrame { return columnNames; } + /** + * Permet de construire un dictionnaire qui permet + * d'associer au nom des colonnes de la table l'index de la colonne. + * @return + */ private Map getMapNamesColumnsIndexColumns(){ // Obtenir le modèle de la table TableModel model = table.getModel(); @@ -1470,6 +1531,10 @@ public class Window_gestionnaire extends JFrame { return MapColumnNames; } + /** + * Mise à jour dans la table des chckMenu pour l'affichage de colonne. + * Enregistre dans la base l'état des chcMenu. + */ private void majAffichageDesChck() { noeud nYears = commandes.nBase.getChild(cYears.getSelectedItem().toString()); @@ -1493,9 +1558,13 @@ public class Window_gestionnaire extends JFrame { sauvegardeXMLBase.save(commandes.nBase, saveType.SANS_MESSAGE,""); - majTableGroupes(); + majTable(); } + + /** + * Mise à jour de l'affichage des colonnes en fonction de l'information qui se trouve dans le noeud commandes.nBase. + */ private void chargeAffichageColonne() { noeud nYears = commandes.nBase.getChild(cYears.getSelectedItem().toString()); diff --git a/src/baseUFRHG/actions/exportEmargement.java b/src/actions/exportEmargement.java similarity index 86% rename from src/baseUFRHG/actions/exportEmargement.java rename to src/actions/exportEmargement.java index 70784ba..100b0ae 100644 --- a/src/baseUFRHG/actions/exportEmargement.java +++ b/src/actions/exportEmargement.java @@ -1,4 +1,4 @@ -package baseUFRHG.actions; +package actions; import java.awt.event.ActionEvent; import java.awt.event.InputEvent; @@ -10,9 +10,9 @@ import javax.swing.ImageIcon; import javax.swing.KeyStroke; import Windows.Window_gestionnaire; -import baseUFRHG.exportBaseToExcel; -import baseUFRHG.exportBaseToExcel.exportType; -import baseUFRHG.noeud; +import exportations.exportBaseToExcel; +import exportations.exportBaseToExcel.exportType; +import outils.noeud; @@ -38,7 +38,7 @@ public class exportEmargement extends AbstractAction{ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub - instance.majTableGroupes(); + instance.majTable(); this.nTable = instance.nTable; if(nTable!=null) { exportBaseToExcel.exportTable(nTable, exportType.EMARGEMENT); diff --git a/src/baseUFRHG/actions/exportTable.java b/src/actions/exportTable.java similarity index 86% rename from src/baseUFRHG/actions/exportTable.java rename to src/actions/exportTable.java index a1a7e1a..d5065db 100644 --- a/src/baseUFRHG/actions/exportTable.java +++ b/src/actions/exportTable.java @@ -1,4 +1,4 @@ -package baseUFRHG.actions; +package actions; import java.awt.event.ActionEvent; import java.awt.event.InputEvent; @@ -11,9 +11,9 @@ import javax.swing.JOptionPane; import javax.swing.KeyStroke; import Windows.Window_gestionnaire; -import baseUFRHG.exportBaseToExcel; -import baseUFRHG.exportBaseToExcel.exportType; -import baseUFRHG.noeud; +import exportations.exportBaseToExcel; +import exportations.exportBaseToExcel.exportType; +import outils.noeud; @@ -39,7 +39,7 @@ public class exportTable extends AbstractAction{ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub - instance.majTableGroupes(); + instance.majTable(); this.nTable = instance.nTable; if(nTable!=null) { exportBaseToExcel.exportTable(nTable, exportType.TABLE); diff --git a/src/baseUFRHG/actions/saveTable.java b/src/actions/saveTable.java similarity index 73% rename from src/baseUFRHG/actions/saveTable.java rename to src/actions/saveTable.java index 50f0ba8..9455232 100644 --- a/src/baseUFRHG/actions/saveTable.java +++ b/src/actions/saveTable.java @@ -1,4 +1,4 @@ -package baseUFRHG.actions; +package actions; import java.awt.event.ActionEvent; import java.awt.event.InputEvent; @@ -10,19 +10,15 @@ import javax.swing.ImageIcon; import javax.swing.KeyStroke; import Windows.Window_gestionnaire; -import baseUFRHG.CreateUpdateZipArchive; -import baseUFRHG.commandes; -import baseUFRHG.sauvegardeXMLBase; -import baseUFRHG.sauvegardeXMLBase.saveType; +import base.CreateUpdateZipArchive; +import base.sauvegardeXMLBase; +import base.sauvegardeXMLBase.saveType; +import outils.commandes; public class saveTable extends AbstractAction{ - - private Window_gestionnaire instance; - public saveTable(Window_gestionnaire instance) { - this.instance = instance; putValue( Action.NAME, "Sauvegarder les modifications" ); putValue( Action.SMALL_ICON, new ImageIcon(Window_gestionnaire.class.getResource("/resources/saveTable.png")) ); putValue( Action.LARGE_ICON_KEY, new ImageIcon(Window_gestionnaire.class.getResource("/resources/saveTable.png")) ); @@ -40,10 +36,6 @@ public class saveTable extends AbstractAction{ // Sauvegarde de la base sauvegardeXMLBase.save(commandes.nBase,saveType.WITH_DEFAULT_MESSAGE,""); - CreateUpdateZipArchive.save(); - - instance.majTableFormation(); - instance.majTableGroupes(); - + CreateUpdateZipArchive.save(); } } diff --git a/src/baseUFRHG/CreateUpdateZipArchive.java b/src/base/CreateUpdateZipArchive.java similarity index 96% rename from src/baseUFRHG/CreateUpdateZipArchive.java rename to src/base/CreateUpdateZipArchive.java index a3142ce..fd1cd23 100644 --- a/src/baseUFRHG/CreateUpdateZipArchive.java +++ b/src/base/CreateUpdateZipArchive.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package base; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; @@ -17,6 +17,8 @@ import java.util.Comparator; import java.util.List; import java.util.zip.ZipOutputStream; +import outils.commandes; + public class CreateUpdateZipArchive { diff --git a/src/base/Hash.java b/src/base/Hash.java new file mode 100644 index 0000000..0f098cf --- /dev/null +++ b/src/base/Hash.java @@ -0,0 +1,77 @@ +package base; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +import outils.commandes; +import outils.noeud; + +public class Hash { + + /** + * Retourne TRUE si doit réaliser une sauvegarde de la base. + * @return + */ + public static boolean faireLaSauvegarde() { + boolean result = false; + noeud nSauvgardeBase = recupeBases.recupereLaSauvegardeBase(); + String nSauvegardeBaseString = ""; + String nBaseString = ""; + + boolean sauvegareExiste = false; + String defaut_Year = ""; + if(nSauvgardeBase!=null) { + if(nSauvgardeBase.getAttributes("defaut_Year")!=null) { + defaut_Year = nSauvgardeBase.getAttributes("defaut_Year"); + if(nSauvgardeBase.getChild(defaut_Year)!=null) { + nSauvegardeBaseString = nSauvgardeBase.getChild(defaut_Year).toWrite(); + if(commandes.nBase.getChild(defaut_Year)!=null) { + nBaseString = commandes.nBase.getChild(defaut_Year).toWrite(); + sauvegareExiste = true; + } + + } + } + }else { + // Si le fichier de sauvegarde n'existe pas alors doit créer une sauvegarde. + result = true; + } + + if(!sauvegareExiste) return result; + + try { + // Calculer le hachage (hash) du contenu du fichier + String fileHashFileSave = calculateHash(nSauvegardeBaseString); + + // Hachage de référence à comparer + String fileHashBase = calculateHash(nBaseString); + + // Comparer les hachages + if (!fileHashFileSave.equals(fileHashBase)) { + System.out.println("Les hachages sont différents. Sauvegarde."); + result = true; + } else { + System.out.println("Les hachages sont identiques. Pas de sauvegarde."); + } + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + + return result; + } + + + + private static String calculateHash(String input) throws NoSuchAlgorithmException { + MessageDigest md = MessageDigest.getInstance("SHA-256"); + byte[] hashBytes = md.digest(input.getBytes()); + + StringBuilder hash = new StringBuilder(); + for (byte b : hashBytes) { + hash.append(String.format("%02x", b)); + } + + return hash.toString(); + } +} + diff --git a/src/baseUFRHG/base.java b/src/base/base.java similarity index 92% rename from src/baseUFRHG/base.java rename to src/base/base.java index 8b98a45..44b1375 100644 --- a/src/baseUFRHG/base.java +++ b/src/base/base.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package base; import java.io.IOException; import java.text.SimpleDateFormat; @@ -10,7 +10,10 @@ import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; -import baseUFRHG.sauvegardeXMLBase.saveType; +import base.sauvegardeXMLBase.saveType; +import outils.commandes; +import outils.noeud; +import outils.supprimeCaracatresSpeciaux; public class base { diff --git a/src/baseUFRHG/recupeBases.java b/src/base/recupeBases.java similarity index 66% rename from src/baseUFRHG/recupeBases.java rename to src/base/recupeBases.java index c5131a8..8290280 100644 --- a/src/baseUFRHG/recupeBases.java +++ b/src/base/recupeBases.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package base; import java.io.File; import java.nio.file.Paths; @@ -7,6 +7,10 @@ import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; +import outils.lectureFileToString; +import outils.lectureXML; +import outils.noeud; + public class recupeBases { /** @@ -16,8 +20,6 @@ public class recupeBases { String filePath = Paths.get("").toAbsolutePath().toString()+ "/base/base.xml"; File file = new File(filePath); noeud nBase = null; - - if (file.exists()) { @@ -45,4 +47,23 @@ public class recupeBases { } + public static noeud recupereLaSauvegardeBase() { + String filePath = Paths.get("").toAbsolutePath().toString()+ "/base/base_sauvegarde.xml"; + File file = new File(filePath); + noeud nSauvegardeBase = null; + + + + + if (file.exists()) { + //lecture du fichier base.xml + String directoryName = Paths.get("").toAbsolutePath().toString()+ "/base/base_sauvegarde.xml"; + String xmlString = lectureFileToString.lecture(directoryName); + nSauvegardeBase = lectureXML.lectureStringToNoeud(xmlString); + + } + + return nSauvegardeBase; + } + } diff --git a/src/baseUFRHG/sauvegardeXMLBase.java b/src/base/sauvegardeXMLBase.java similarity index 96% rename from src/baseUFRHG/sauvegardeXMLBase.java rename to src/base/sauvegardeXMLBase.java index 5644d50..4038f87 100644 --- a/src/baseUFRHG/sauvegardeXMLBase.java +++ b/src/base/sauvegardeXMLBase.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package base; import java.io.BufferedWriter; import java.io.File; @@ -11,6 +11,8 @@ import java.util.Date; import javax.swing.JOptionPane; +import outils.noeud; + public class sauvegardeXMLBase { public static enum saveType{ @@ -125,7 +127,7 @@ public class sauvegardeXMLBase { } catch (IOException e) { e.printStackTrace(); JOptionPane.showMessageDialog(null, e.toString(), "Erreur dans la méthode saveSauvegarde.", JOptionPane.ERROR_MESSAGE); - } + } } diff --git a/src/baseUFRHG/CreateCalcWorkbook.java b/src/exportations/CreateCalcWorkbook.java similarity index 96% rename from src/baseUFRHG/CreateCalcWorkbook.java rename to src/exportations/CreateCalcWorkbook.java index 3ec505c..88a0e67 100644 --- a/src/baseUFRHG/CreateCalcWorkbook.java +++ b/src/exportations/CreateCalcWorkbook.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package exportations; import java.awt.BorderLayout; import java.awt.Dimension; diff --git a/src/baseUFRHG/createEmargement.java b/src/exportations/createEmargement.java similarity index 97% rename from src/baseUFRHG/createEmargement.java rename to src/exportations/createEmargement.java index 8dc4931..62fd891 100644 --- a/src/baseUFRHG/createEmargement.java +++ b/src/exportations/createEmargement.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package exportations; import java.awt.BorderLayout; import java.awt.Dimension; diff --git a/src/baseUFRHG/exportBaseToExcel.java b/src/exportations/exportBaseToExcel.java similarity index 96% rename from src/baseUFRHG/exportBaseToExcel.java rename to src/exportations/exportBaseToExcel.java index d718ed8..f20fe52 100644 --- a/src/baseUFRHG/exportBaseToExcel.java +++ b/src/exportations/exportBaseToExcel.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package exportations; import java.util.Arrays; import java.util.Comparator; @@ -7,6 +7,10 @@ import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; +import outils.FileSaveXLSX; +import outils.commandes; +import outils.noeud; + public class exportBaseToExcel { public static enum exportType { diff --git a/src/baseUFRHG/VersionChecker.java b/src/gestion_version/VersionChecker.java similarity index 95% rename from src/baseUFRHG/VersionChecker.java rename to src/gestion_version/VersionChecker.java index 6b0c4b0..7bb2662 100644 --- a/src/baseUFRHG/VersionChecker.java +++ b/src/gestion_version/VersionChecker.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package gestion_version; import java.io.BufferedReader; import java.io.IOException; @@ -10,7 +10,12 @@ import java.util.regex.Pattern; import javax.swing.JOptionPane; -import baseUFRHG.sauvegardeXMLBase.saveType; +import base.recupeBases; +import base.sauvegardeXMLBase; +import base.sauvegardeXMLBase.saveType; +import outils.commandes; +import outils.lectureXML; +import outils.noeud; public class VersionChecker { diff --git a/src/baseUFRHG/importAllBaseToExcel.java b/src/importations/importAllBaseToExcel.java similarity index 96% rename from src/baseUFRHG/importAllBaseToExcel.java rename to src/importations/importAllBaseToExcel.java index c335068..f6cf7b9 100644 --- a/src/baseUFRHG/importAllBaseToExcel.java +++ b/src/importations/importAllBaseToExcel.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package importations; import java.io.File; import java.io.FileInputStream; @@ -13,6 +13,12 @@ import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import base.recupeBases; +import base.sauvegardeXMLBase; +import outils.commandes; +import outils.noeud; +import outils.supprimeCaracatresSpeciaux; + public class importAllBaseToExcel { public static void lecture(File file) { diff --git a/src/baseUFRHG/FileChooserCSV.java b/src/outils/FileChooserCSV.java similarity index 95% rename from src/baseUFRHG/FileChooserCSV.java rename to src/outils/FileChooserCSV.java index 65b0237..9811594 100644 --- a/src/baseUFRHG/FileChooserCSV.java +++ b/src/outils/FileChooserCSV.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package outils; import java.io.File; diff --git a/src/baseUFRHG/FileChooserXLSX.java b/src/outils/FileChooserXLSX.java similarity index 95% rename from src/baseUFRHG/FileChooserXLSX.java rename to src/outils/FileChooserXLSX.java index 3aa2766..bfbd276 100644 --- a/src/baseUFRHG/FileChooserXLSX.java +++ b/src/outils/FileChooserXLSX.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package outils; import java.io.File; diff --git a/src/baseUFRHG/FileChooserXML.java b/src/outils/FileChooserXML.java similarity index 95% rename from src/baseUFRHG/FileChooserXML.java rename to src/outils/FileChooserXML.java index 83477a2..8ad8a6e 100644 --- a/src/baseUFRHG/FileChooserXML.java +++ b/src/outils/FileChooserXML.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package outils; import java.io.File; diff --git a/src/baseUFRHG/FileSaveXLSX.java b/src/outils/FileSaveXLSX.java similarity index 91% rename from src/baseUFRHG/FileSaveXLSX.java rename to src/outils/FileSaveXLSX.java index f602aeb..8270706 100644 --- a/src/baseUFRHG/FileSaveXLSX.java +++ b/src/outils/FileSaveXLSX.java @@ -1,10 +1,14 @@ -package baseUFRHG; +package outils; import java.io.File; import javax.swing.JFileChooser; import javax.swing.JFrame; +import exportations.CreateCalcWorkbook; +import exportations.createEmargement; +import exportations.exportBaseToExcel; + public class FileSaveXLSX { Object[][] data = null; String Formation = ""; diff --git a/src/baseUFRHG/TextComparator.java b/src/outils/TextComparator.java similarity index 95% rename from src/baseUFRHG/TextComparator.java rename to src/outils/TextComparator.java index 8e6fa96..a11430f 100644 --- a/src/baseUFRHG/TextComparator.java +++ b/src/outils/TextComparator.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package outils; public class TextComparator { diff --git a/src/baseUFRHG/XMLParser.java b/src/outils/XMLParser.java similarity index 95% rename from src/baseUFRHG/XMLParser.java rename to src/outils/XMLParser.java index 8eb130b..da59eef 100644 --- a/src/baseUFRHG/XMLParser.java +++ b/src/outils/XMLParser.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package outils; import org.w3c.dom.Document; import org.w3c.dom.Node; diff --git a/src/baseUFRHG/XmlLoader.java b/src/outils/XmlLoader.java similarity index 96% rename from src/baseUFRHG/XmlLoader.java rename to src/outils/XmlLoader.java index 58f5108..9e740f2 100644 --- a/src/baseUFRHG/XmlLoader.java +++ b/src/outils/XmlLoader.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package outils; import java.io.File; diff --git a/src/baseUFRHG/XmlWriter.java b/src/outils/XmlWriter.java similarity index 95% rename from src/baseUFRHG/XmlWriter.java rename to src/outils/XmlWriter.java index 796ca7e..576cb3d 100644 --- a/src/baseUFRHG/XmlWriter.java +++ b/src/outils/XmlWriter.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package outils; import java.io.FileOutputStream; import java.io.IOException; diff --git a/src/baseUFRHG/ZipExtractorGraphic.java b/src/outils/ZipExtractorGraphic.java similarity index 96% rename from src/baseUFRHG/ZipExtractorGraphic.java rename to src/outils/ZipExtractorGraphic.java index 12d9f90..b7bd7bb 100644 --- a/src/baseUFRHG/ZipExtractorGraphic.java +++ b/src/outils/ZipExtractorGraphic.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package outils; import java.io.ByteArrayOutputStream; diff --git a/src/baseUFRHG/commandes.java b/src/outils/commandes.java similarity index 94% rename from src/baseUFRHG/commandes.java rename to src/outils/commandes.java index 433de8f..e1eb277 100644 --- a/src/baseUFRHG/commandes.java +++ b/src/outils/commandes.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package outils; public class commandes { diff --git a/src/baseUFRHG/lectureFileToString.java b/src/outils/lectureFileToString.java similarity index 93% rename from src/baseUFRHG/lectureFileToString.java rename to src/outils/lectureFileToString.java index ad11bfa..1eade6c 100644 --- a/src/baseUFRHG/lectureFileToString.java +++ b/src/outils/lectureFileToString.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package outils; import java.io.BufferedReader; import java.io.FileInputStream; diff --git a/src/baseUFRHG/lectureXML.java b/src/outils/lectureXML.java similarity index 95% rename from src/baseUFRHG/lectureXML.java rename to src/outils/lectureXML.java index 8aa1655..12260fd 100644 --- a/src/baseUFRHG/lectureXML.java +++ b/src/outils/lectureXML.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package outils; import java.io.BufferedReader; import java.io.File; diff --git a/src/baseUFRHG/noeud.java b/src/outils/noeud.java similarity index 96% rename from src/baseUFRHG/noeud.java rename to src/outils/noeud.java index 6c6cd84..acbcec2 100644 --- a/src/baseUFRHG/noeud.java +++ b/src/outils/noeud.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package outils; import java.util.ArrayList; diff --git a/src/baseUFRHG/supprimeCaracatresSpeciaux.java b/src/outils/supprimeCaracatresSpeciaux.java similarity index 94% rename from src/baseUFRHG/supprimeCaracatresSpeciaux.java rename to src/outils/supprimeCaracatresSpeciaux.java index 6bd44fa..9de115d 100644 --- a/src/baseUFRHG/supprimeCaracatresSpeciaux.java +++ b/src/outils/supprimeCaracatresSpeciaux.java @@ -1,4 +1,4 @@ -package baseUFRHG; +package outils; import java.text.Normalizer; diff --git a/src/resources/Sans titre.png b/src/resources/Sans titre.png deleted file mode 100644 index 7ef30f3..0000000 Binary files a/src/resources/Sans titre.png and /dev/null differ diff --git a/src/resources/Sans titre_1.jpg b/src/resources/Sans titre_1.jpg new file mode 100644 index 0000000..e160cd5 Binary files /dev/null and b/src/resources/Sans titre_1.jpg differ diff --git a/src/resources/Sans titre_10.jpg b/src/resources/Sans titre_10.jpg new file mode 100644 index 0000000..05f2475 Binary files /dev/null and b/src/resources/Sans titre_10.jpg differ diff --git a/src/resources/Sans titre_11.jpg b/src/resources/Sans titre_11.jpg new file mode 100644 index 0000000..9ee91c9 Binary files /dev/null and b/src/resources/Sans titre_11.jpg differ diff --git a/src/resources/Sans titre_12.jpg b/src/resources/Sans titre_12.jpg new file mode 100644 index 0000000..15e7409 Binary files /dev/null and b/src/resources/Sans titre_12.jpg differ diff --git a/src/resources/Sans titre_13.jpg b/src/resources/Sans titre_13.jpg new file mode 100644 index 0000000..8c1db05 Binary files /dev/null and b/src/resources/Sans titre_13.jpg differ diff --git a/src/resources/Sans titre_14.jpg b/src/resources/Sans titre_14.jpg new file mode 100644 index 0000000..18b81b1 Binary files /dev/null and b/src/resources/Sans titre_14.jpg differ diff --git a/src/resources/Sans titre_15.jpg b/src/resources/Sans titre_15.jpg new file mode 100644 index 0000000..44063d7 Binary files /dev/null and b/src/resources/Sans titre_15.jpg differ diff --git a/src/resources/Sans titre_16.jpg b/src/resources/Sans titre_16.jpg new file mode 100644 index 0000000..1215d52 Binary files /dev/null and b/src/resources/Sans titre_16.jpg differ diff --git a/src/resources/Sans titre_2.jpg b/src/resources/Sans titre_2.jpg new file mode 100644 index 0000000..fadb6de Binary files /dev/null and b/src/resources/Sans titre_2.jpg differ diff --git a/src/resources/Sans titre_3.jpg b/src/resources/Sans titre_3.jpg new file mode 100644 index 0000000..8f0ed57 Binary files /dev/null and b/src/resources/Sans titre_3.jpg differ diff --git a/src/resources/Sans titre_4.jpg b/src/resources/Sans titre_4.jpg new file mode 100644 index 0000000..a8e9ed4 Binary files /dev/null and b/src/resources/Sans titre_4.jpg differ diff --git a/src/resources/Sans titre_5.jpg b/src/resources/Sans titre_5.jpg new file mode 100644 index 0000000..0920294 Binary files /dev/null and b/src/resources/Sans titre_5.jpg differ diff --git a/src/resources/Sans titre_6.jpg b/src/resources/Sans titre_6.jpg new file mode 100644 index 0000000..a0c07a0 Binary files /dev/null and b/src/resources/Sans titre_6.jpg differ diff --git a/src/resources/Sans titre_7.jpg b/src/resources/Sans titre_7.jpg new file mode 100644 index 0000000..06c315e Binary files /dev/null and b/src/resources/Sans titre_7.jpg differ diff --git a/src/resources/Sans titre_8.jpg b/src/resources/Sans titre_8.jpg new file mode 100644 index 0000000..b3f8f37 Binary files /dev/null and b/src/resources/Sans titre_8.jpg differ diff --git a/src/resources/Sans titre_9.jpg b/src/resources/Sans titre_9.jpg new file mode 100644 index 0000000..95c2f21 Binary files /dev/null and b/src/resources/Sans titre_9.jpg differ