Lecture fichier XML Settings JDBC
Bonjour,
J'essaie de lire ce que j'ai récupéré d'un fichier XML via la méthode affiche(), mais ça me renvoi l'adresse de mon instance ConnectDB.
Le fichier XML contient les user, psw, url de ma DB, que je récupère dans un objet Settings instancié dans ReadXML et renvoyé dans ConnectDB pour initialiser les attributs de ConnectDB.
Je suis bien coincé, et je ne trouve plus de solutions.
Voici mes différentes Class:
Starter:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
package be.poo.controleur;
import be.poo.ConnectDB;
/**
* Class qui contient la méthode main et qui lance le programme
*
* @author Fred
*/
public class Starter {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
GestionEntités gest = GestionEntités.getInstance();
ConnectDB con = ConnectDB.getInstance();
gest.affiche(con);
}
} |
GestionEntités:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
package be.poo.controleur;
import be.poo.ConnectDB;
/**
* Gestion d'entité, qui me sert de controleur, on y retrouvera tous le corp
* métier et différentes méthode.
*
* @author Fred
*/
public class GestionEntités {
private static final GestionEntités INSTANCE = new GestionEntités();
//*************Constructeur par défaut*************************************
GestionEntités() {
}
/**
* getInstance, retourne une instance unique de mon controleur
*
* @return
*/
public static GestionEntités getInstance() {
return INSTANCE;
}
//ConnectDB con = ConnectDB.getInstance();
/**
* Méthode de TEST pour voir ce que je récupère du fichier XML
*
* @param con
*/
public void affiche(ConnectDB con) {
System.out.println(con);
}
} |
Settings:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
package be.poo.persistence;
/**
* Class Settings qui me sert à récupérer les settings de connexion à la DB
*
* @author Fred
*/
public class Settings {
//Attributs
String user, psw, url;
//Constructeur
public Settings(String user, String psw, String url) {
this.user = user;
this.psw = psw;
this.url = url;
}
//Accesseurs
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPsw() {
return psw;
}
public void setPsw(String psw) {
this.psw = psw;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
} |
ReadXML:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
package be.poo.persistence;
import java.io.File;
import org.jdom2.Document;
import org.jdom2.Element;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import javax.swing.JOptionPane;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
/**
* Classe qui va ouvrir un flux et lire un fichier XML pour récupérer les
* settings nécessaire pour la connexion à la DB
*
* @author Fred
*/
public class ReadXML {
//Attributs
public String user, url, psw;
public Document document;
public Element racine;
private static final String FICHIERARTICLE = "settingDB.xml";
//Constructeur
public ReadXML() {
//Création une instance de SAXBuilder
SAXBuilder sxb = new SAXBuilder();
try {
//Création d'un document JDOM avec en argument le fichier XML
document = sxb.build(new File(FICHIERARTICLE));
} catch (JDOMException | IOException ex) {//Gestion d'erreur de lecture XML
JOptionPane.showMessageDialog(null, "Fichier XML non trouvé" + ex);
//System.out.println("Erreur : " + ex);
}
//Création de l'élément racine à partir du document.
racine = document.getRootElement();
}
/**
* Méthode qui lis le contenu du fichier XML, rempli les attributs d'un
* Setting tant qu'il y en a et renvoi ce Settings.
*
* @return
*/
public Settings settingDB() {
Settings settings = new Settings(user, psw, url);
//Création d'une liste contenant tous les noeuds "setting" de l'Element racine
List listSettings = racine.getChildren("setting");
Iterator iter = listSettings.iterator();
while (iter.hasNext()) {
Element courant = (Element) iter.next();
settings.setUser(courant.getChild("user").getText());
settings.setUrl(courant.getChild("url").getText());
settings.setPsw(courant.getChild("password").getText());
}
return settings;
}
} |
ConnectDB:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
package be.poo.persistence;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;
/**
* Class ConnectDB pour me connecter à la DB.
*
* @author Fred
*/
public class ConnectDB {
private static String urlDB;
private static String passwordDB;
private static String userDB;
private static Object INSTANCE;
public static ReadXML read = new ReadXML();
//Constructeur
public ConnectDB(String url, String psw, String user) {
ConnectDB.urlDB = read.settingDB().url;
ConnectDB.passwordDB = read.settingDB().psw;
ConnectDB.userDB = read.settingDB().user;
}
/**
* Méthode getInstance, crée une instance unique de ConnectDAO et renvoie
* cet instance.
*
* @return
*/
public static ConnectDB getInstance() {
if (ConnectDB.INSTANCE == null) {
INSTANCE = new ConnectDB(urlDB, passwordDB, userDB);
}
return (ConnectDB) INSTANCE;
}
/**
* Méthode pour la connexion à la DB
*
* @return
* @throws SQLException
*/
public Connection connection() throws SQLException {
Connection con;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
con = DriverManager.getConnection(("jdbc:mysql://") + ConnectDB.urlDB, ConnectDB.userDB, ConnectDB.passwordDB);
return con;
} catch (ClassNotFoundException ex) {//Gestion d'erreur en cas de Driver
JOptionPane.showMessageDialog(null, "Erreur driver mysql: " + ex);
return null;
} catch (SQLException ex) {//Gestion d'erreur si problème connexion à la DB
JOptionPane.showMessageDialog(null, "Problème de connexion à la DB!" + ex);
return null;
}
}
} |