diff --git a/src/Test/BDatabase.java b/src/Test/BDatabase.java index 254f427..3659a43 100644 --- a/src/Test/BDatabase.java +++ b/src/Test/BDatabase.java @@ -1,278 +1,278 @@ -package Test; - -/* [BPakage.BDatabase] - * Desc: To create Operationnal Database Link fast :) - * GitHub: https://github.com/lalBi94 - * Created by: Bilal Boudjemline - * 28/09/2022 at 20:35 - * */ - -import API.*; -import MNP.*; -import java.sql.*; -import java.sql.Connection; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import org.mariadb.jdbc.*; - -/** - *

- * Methodes pour les interaction avec une base de donnees - *

- * - * @author Bilal Boudjemline - */ - -public class BDatabase { - private final String db_host; - private final String db_name; - private final String db_user; - private final String db_password; - protected Connection sharedObject; - private boolean status; - - public BDatabase() { - this.db_host = "jdbc:mariadb://dwarves.iut-fbleau.fr/"; - this.db_name = "brinet"; - this.db_user = "brinet"; - this.db_password = "BIFERO77BuT+"; - - try { - Class.forName("org.mariadb.jdbc.Driver"); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } - - try { - this.sharedObject = DriverManager.getConnection(this.db_host + this.db_name, this.db_user, - this.db_password); - this.status = true; - } catch (SQLException e) { - System.out.println("Erreur de liaison avec la base de donnees."); - } - } - - /** - * Recuperer les informations d'un requete de type SELECT. - * - * @param request Le SELECT a faire (il y aura plus d'argument prochainement) - * @return Les resultats engendre par la requete - */ - public ArrayList fetchAll(String request) { - try { - ArrayList toReturn = new ArrayList(); - ResultSet rs = this.sharedObject.prepareStatement(request).executeQuery(); - - for (int i = 0; rs.next(); i++) { - toReturn.add(i, String.valueOf(rs.getString(1))); - } - - return toReturn; - } catch (SQLException e) { - System.out.println("Erreur de la requete : " + e); - return null; - } - } - - /** - * Insert une ligne dans une table. - * - * @param table La table - * @param col Tableau qui contient les colonnes d'affectation - * @param value Valeur des colonnes - * @return Retourne true si ca a reussit et false dans le cas inverse - */ - public boolean insertRow(String table, String[] col, String[] value) { - StringBuilder collumns = new StringBuilder(); - StringBuilder values = new StringBuilder(); - Iterator iteCol = Arrays.stream(col).iterator(); - Iterator iteVal = Arrays.stream(value).iterator(); - - collumns.append("("); - while (iteCol.hasNext()) { - collumns.append(iteCol.next()).append(", "); - } - collumns.setLength(collumns.length() - 2); - collumns.append(")"); - - values.append("("); - while (iteVal.hasNext()) { - values.append("\"").append(iteVal.next()).append("\"").append(", "); - } - values.setLength(values.length() - 2); - values.append(")"); - - String request = "INSERT INTO " + table + collumns + " VALUES" + values + ";"; - System.out.println(request); - - try { - this.sharedObject.prepareStatement(request).executeQuery(); - System.out.println("Succes: " + request); - return true; - } catch (SQLException e) { - return false; - } - } - - /** - * Faire des requetes de type UPDATE SET (il y aura plus d'argument - * prochainement). - * - * @param request La requete - * @return Si oui ou non ca a fonctionne - */ - public boolean updateRow(String request) { - try { - this.sharedObject.prepareStatement(request).executeQuery(); - System.out.println("Succes:" + request); - return true; - } catch (SQLException e) { - return false; - } - } - - /** - * Recuperer l'objet Connection pour pouvoir utiliser ses methodes. - * - * @return L 'objet Connection. - */ - public Connection getSharedObject() { - return this.sharedObject; - } - - /** - * Recuperer l'utilisateur courant. - * - * @return L 'utilisateur. - */ - public String getUser() { - return this.db_user; - } - - /** - * Recuperer la liste des etudiants (FIProjet Contexte) - * - * @return La liste des etudiants - */ - public ArrayList getEtuList() { - ArrayList listEtu = new ArrayList<>(); - ArrayList studPrenom = this.fetchAll("SELECT prenom FROM fi_eleves"); - ArrayList studNom = this.fetchAll("SELECT nom FROM fi_eleves"); - ArrayList studGroupe = this.fetchAll("SELECT groupe FROM fi_eleves"); - - for (int i = 0; i <= studPrenom.size() - 1; i++) { - if (studPrenom.get(i) != null && studNom.get(i) != null && studGroupe.get(i) != null) { - try { - listEtu.add( - new EtudiantNP( - studNom.get(i), - studPrenom.get(i), - Integer.parseInt(studGroupe.get(i), 10))); - } catch (NumberFormatException ignore) { - listEtu.add( - new EtudiantNP( - studNom.get(i), - studPrenom.get(i), - -1)); - } - } else { - System.out.println("[!] Erreur lors du chargement de la liste des etudiants."); - System.exit(-1); - } - } - - System.out.println("[+] Liste des etudiants chargee."); - - return listEtu; - } - - /** - * Recuperer la liste des groupes (FIProjet contexte) - * - * @return La liste des groupes - */ - public ArrayList getGroupeList() { - ArrayList listGroupe = new ArrayList<>(); - ArrayList groupeId = this.fetchAll("SELECT id FROM fi_groupe"); - ArrayList groupeNom = this.fetchAll("SELECT nom FROM fi_groupe"); - ArrayList groupeMin = this.fetchAll("SELECT min FROM fi_groupe"); - ArrayList groupeMax = this.fetchAll("SELECT max FROM fi_groupe"); - for (int i = 0; i <= groupeNom.size() - 1; i++) { - if (groupeId.get(i) != null && groupeNom.get(i) != null && groupeMin.get(i) != null - && groupeMax.get(i) != null) { - listGroupe.add( - new GroupeNP( - Integer.parseInt(groupeId.get(i), 10), - groupeNom.get(i), - Integer.parseInt(groupeMin.get(i), 10), - Integer.parseInt(groupeMax.get(i), 10))); - } else { - System.out.println("[!] Erreur lors du chargement de la liste des groupes."); - System.exit(-1); - } - } - System.out.println("[+] Liste des groupes chargees."); - return listGroupe; - } - - /** - * Recuperer les requetes - * - * @return la liste des requetes - */ - public ArrayList getRequestList() { - ArrayList toReturn = new ArrayList<>(); - ArrayList requestId = this.fetchAll("SELECT id FROM fi_demandes"); - ArrayList requestEtu = this.fetchAll("SELECT id_eleve FROM fi_demandes"); - ArrayList requestWitchGrup = this.fetchAll("SELECT id_groupe FROM fi_demandes"); - ArrayList requestMessage = this.fetchAll("SELECT message FROM fi_demandes"); - ArrayList requestType = this.fetchAll("SELECT type FROM fi_demandes"); - ArrayList requestStatut = this.fetchAll("SELECT statut FROM fi_demandes"); - - for (int i = 0; i <= requestId.size() - 1; i++) { - toReturn.add( - new RequeteNP( - Integer.parseInt(requestId.get(i)), - requestMessage.get(i), - Integer.parseInt(requestEtu.get(i)), - Integer.parseInt(requestType.get(i)), - Integer.parseInt(requestWitchGrup.get(i)), - requestStatut.get(i))); - } - - return toReturn; - } - - /** - * Recuperer l'hote courant. - * - * @return L 'hote. - */ - public String getHost() { - return this.db_host; - } - - /** - * Recuperer le nom de la base de donnees. - * - * @return Le nom de la base de donnees. - */ - public String getDatabaseName() { - return this.db_name; - } - - /** - * Recuperer le status de connection. - * - * @return Le status de connection. - */ - public boolean getStatus() { - return this.status; - } - - @Override - public String toString() { - return this.db_host + "\n" + this.db_name + "\n" + this.db_user + "\n"; - } +package Test; + +/* [BPakage.BDatabase] + * Desc: To create Operationnal Database Link fast :) + * GitHub: https://github.com/lalBi94 + * Created by: Bilal Boudjemline + * 28/09/2022 at 20:35 + * */ + +import API.*; +import MNP.*; +import java.sql.*; +import java.sql.Connection; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import org.mariadb.jdbc.*; + +/** + *

+ * Methodes pour les interaction avec une base de donnees + *

+ * + * @author Bilal Boudjemline + */ + +public class BDatabase { + private final String db_host; + private final String db_name; + private final String db_user; + private final String db_password; + protected Connection sharedObject; + private boolean status; + + public BDatabase() { + this.db_host = "jdbc:mariadb://dwarves.iut-fbleau.fr/"; + this.db_name = ""; + this.db_user = ""; + this.db_password = ""; + + try { + Class.forName("org.mariadb.jdbc.Driver"); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + + try { + this.sharedObject = DriverManager.getConnection(this.db_host + this.db_name, this.db_user, + this.db_password); + this.status = true; + } catch (SQLException e) { + System.out.println("Erreur de liaison avec la base de donnees."); + } + } + + /** + * Recuperer les informations d'un requete de type SELECT. + * + * @param request Le SELECT a faire (il y aura plus d'argument prochainement) + * @return Les resultats engendre par la requete + */ + public ArrayList fetchAll(String request) { + try { + ArrayList toReturn = new ArrayList(); + ResultSet rs = this.sharedObject.prepareStatement(request).executeQuery(); + + for (int i = 0; rs.next(); i++) { + toReturn.add(i, String.valueOf(rs.getString(1))); + } + + return toReturn; + } catch (SQLException e) { + System.out.println("Erreur de la requete : " + e); + return null; + } + } + + /** + * Insert une ligne dans une table. + * + * @param table La table + * @param col Tableau qui contient les colonnes d'affectation + * @param value Valeur des colonnes + * @return Retourne true si ca a reussit et false dans le cas inverse + */ + public boolean insertRow(String table, String[] col, String[] value) { + StringBuilder collumns = new StringBuilder(); + StringBuilder values = new StringBuilder(); + Iterator iteCol = Arrays.stream(col).iterator(); + Iterator iteVal = Arrays.stream(value).iterator(); + + collumns.append("("); + while (iteCol.hasNext()) { + collumns.append(iteCol.next()).append(", "); + } + collumns.setLength(collumns.length() - 2); + collumns.append(")"); + + values.append("("); + while (iteVal.hasNext()) { + values.append("\"").append(iteVal.next()).append("\"").append(", "); + } + values.setLength(values.length() - 2); + values.append(")"); + + String request = "INSERT INTO " + table + collumns + " VALUES" + values + ";"; + System.out.println(request); + + try { + this.sharedObject.prepareStatement(request).executeQuery(); + System.out.println("Succes: " + request); + return true; + } catch (SQLException e) { + return false; + } + } + + /** + * Faire des requetes de type UPDATE SET (il y aura plus d'argument + * prochainement). + * + * @param request La requete + * @return Si oui ou non ca a fonctionne + */ + public boolean updateRow(String request) { + try { + this.sharedObject.prepareStatement(request).executeQuery(); + System.out.println("Succes:" + request); + return true; + } catch (SQLException e) { + return false; + } + } + + /** + * Recuperer l'objet Connection pour pouvoir utiliser ses methodes. + * + * @return L 'objet Connection. + */ + public Connection getSharedObject() { + return this.sharedObject; + } + + /** + * Recuperer l'utilisateur courant. + * + * @return L 'utilisateur. + */ + public String getUser() { + return this.db_user; + } + + /** + * Recuperer la liste des etudiants (FIProjet Contexte) + * + * @return La liste des etudiants + */ + public ArrayList getEtuList() { + ArrayList listEtu = new ArrayList<>(); + ArrayList studPrenom = this.fetchAll("SELECT prenom FROM fi_eleves"); + ArrayList studNom = this.fetchAll("SELECT nom FROM fi_eleves"); + ArrayList studGroupe = this.fetchAll("SELECT groupe FROM fi_eleves"); + + for (int i = 0; i <= studPrenom.size() - 1; i++) { + if (studPrenom.get(i) != null && studNom.get(i) != null && studGroupe.get(i) != null) { + try { + listEtu.add( + new EtudiantNP( + studNom.get(i), + studPrenom.get(i), + Integer.parseInt(studGroupe.get(i), 10))); + } catch (NumberFormatException ignore) { + listEtu.add( + new EtudiantNP( + studNom.get(i), + studPrenom.get(i), + -1)); + } + } else { + System.out.println("[!] Erreur lors du chargement de la liste des etudiants."); + System.exit(-1); + } + } + + System.out.println("[+] Liste des etudiants chargee."); + + return listEtu; + } + + /** + * Recuperer la liste des groupes (FIProjet contexte) + * + * @return La liste des groupes + */ + public ArrayList getGroupeList() { + ArrayList listGroupe = new ArrayList<>(); + ArrayList groupeId = this.fetchAll("SELECT id FROM fi_groupe"); + ArrayList groupeNom = this.fetchAll("SELECT nom FROM fi_groupe"); + ArrayList groupeMin = this.fetchAll("SELECT min FROM fi_groupe"); + ArrayList groupeMax = this.fetchAll("SELECT max FROM fi_groupe"); + for (int i = 0; i <= groupeNom.size() - 1; i++) { + if (groupeId.get(i) != null && groupeNom.get(i) != null && groupeMin.get(i) != null + && groupeMax.get(i) != null) { + listGroupe.add( + new GroupeNP( + Integer.parseInt(groupeId.get(i), 10), + groupeNom.get(i), + Integer.parseInt(groupeMin.get(i), 10), + Integer.parseInt(groupeMax.get(i), 10))); + } else { + System.out.println("[!] Erreur lors du chargement de la liste des groupes."); + System.exit(-1); + } + } + System.out.println("[+] Liste des groupes chargees."); + return listGroupe; + } + + /** + * Recuperer les requetes + * + * @return la liste des requetes + */ + public ArrayList getRequestList() { + ArrayList toReturn = new ArrayList<>(); + ArrayList requestId = this.fetchAll("SELECT id FROM fi_demandes"); + ArrayList requestEtu = this.fetchAll("SELECT id_eleve FROM fi_demandes"); + ArrayList requestWitchGrup = this.fetchAll("SELECT id_groupe FROM fi_demandes"); + ArrayList requestMessage = this.fetchAll("SELECT message FROM fi_demandes"); + ArrayList requestType = this.fetchAll("SELECT type FROM fi_demandes"); + ArrayList requestStatut = this.fetchAll("SELECT statut FROM fi_demandes"); + + for (int i = 0; i <= requestId.size() - 1; i++) { + toReturn.add( + new RequeteNP( + Integer.parseInt(requestId.get(i)), + requestMessage.get(i), + Integer.parseInt(requestEtu.get(i)), + Integer.parseInt(requestType.get(i)), + Integer.parseInt(requestWitchGrup.get(i)), + requestStatut.get(i))); + } + + return toReturn; + } + + /** + * Recuperer l'hote courant. + * + * @return L 'hote. + */ + public String getHost() { + return this.db_host; + } + + /** + * Recuperer le nom de la base de donnees. + * + * @return Le nom de la base de donnees. + */ + public String getDatabaseName() { + return this.db_name; + } + + /** + * Recuperer le status de connection. + * + * @return Le status de connection. + */ + public boolean getStatus() { + return this.status; + } + + @Override + public String toString() { + return this.db_host + "\n" + this.db_name + "\n" + this.db_user + "\n"; + } } \ No newline at end of file