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:
GestionEntités:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
Settings:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
ReadXML:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } }
ConnectDB:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } } }
Partager