Créé dans le cadre du projet de fin d'année de la promo 2018 de CIR2 de l'ISEN Brest/Rennes, le Burger Quizz est une adaptation numérique du jeu télévisé éponyme, plus précisément d'une épreuve spécifique de ce jeu : le "Sel ou Poivre".

ConnexionBDD.java 9.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. package GestionBddDAO;
  2. import GestionBddDAO.GestionCategories;
  3. import GestionBddDAO.GestionQuestions;
  4. import GestionBddDAO.GestionReponses;
  5. import GestionErreurs.BDDException;
  6. import Modele.Categorie;
  7. import Modele.Question;
  8. import Modele.Reponses;
  9. import java.sql.Connection;
  10. import java.sql.DriverManager;
  11. import java.sql.SQLException;
  12. import java.util.ArrayList;
  13. /**
  14. * Classe DAO offrant une surcouche pour l'interaction avec la base de données.
  15. * @author joseph
  16. */
  17. public class ConnexionBDD
  18. {
  19. /**
  20. * Represente la connexion à la base de données.
  21. */
  22. private Connection connexionbdd;
  23. /**
  24. * Objet permettant la gestion des catégories dans la base de données.
  25. */
  26. private GestionCategories gestionCategories;
  27. /**
  28. * Objet permettant la gestion des réponses dans la base de données.
  29. */
  30. private GestionReponses gestionReponses;
  31. /**
  32. * Objet permettant la gestion des questions dans la base de données.
  33. */
  34. private GestionQuestions gestionQuestions;
  35. /**
  36. * Constructeur par defaut. Charge le driver mysql. Arret du programme si il n'est pas trouvé.
  37. */
  38. public ConnexionBDD()
  39. {
  40. try
  41. {
  42. Class.forName("com.mysql.jdbc.Driver");
  43. }
  44. catch(ClassNotFoundException e)
  45. {
  46. System.out.println(e.getMessage());
  47. System.exit(1);
  48. }
  49. }
  50. /**
  51. * Initie la connexion à la base de données, avec un time-out de 5 secondes.
  52. * @param nomBdd Le nom de la base.
  53. * @param port Le port du serveur.
  54. * @param ip L'adresse IP du serveur.
  55. * @param login Le login de l'utilisateur sur le serveur.
  56. * @param password Le mot de passe de l'utilisateur sur le serveur.
  57. * @return true si la connexion est effectué, false sinon.
  58. */
  59. public boolean connect(String nomBdd, long port, String ip, String login, String password)
  60. {
  61. try
  62. {
  63. String url = "jdbc:mysql://" + ip + ":" + port + "/" + nomBdd;
  64. DriverManager.setLoginTimeout(5);
  65. connexionbdd = DriverManager.getConnection(url, login, password);
  66. gestionCategories = new GestionCategories(connexionbdd);
  67. gestionReponses = new GestionReponses(connexionbdd);
  68. gestionQuestions = new GestionQuestions(connexionbdd);
  69. return true;
  70. }
  71. catch(SQLException e)
  72. {
  73. System.out.println("Erreur de conexion à la base de données: " + e.getMessage());
  74. return false;
  75. }
  76. }
  77. //Gestion catégorie
  78. /**
  79. * Récupére la liste des catégorie depuis la base de données.
  80. * @return Un tableau d'objet catégorie.
  81. * @throws BDDException Si une erreur SQL survient.
  82. */
  83. public ArrayList<Categorie> getListeCategorie() throws BDDException
  84. {
  85. try
  86. {
  87. gestionCategories.readCategorie();
  88. }
  89. catch(SQLException e)
  90. {
  91. throw new BDDException("Impossible de charger la liste des catégories. La bdd indique: " + e.getMessage());
  92. }
  93. return gestionCategories.getListCategories();
  94. }
  95. /**
  96. * Crée une nouvelle catégorie.
  97. * @param categorieName Le nom de la catégorie à créer.
  98. * @throws BDDException Si une erreur SQL survient.
  99. */
  100. public void createCategorie(String categorieName) throws BDDException
  101. {
  102. try
  103. {
  104. gestionCategories.createCategorie(categorieName);
  105. }
  106. catch(SQLException e)
  107. {
  108. throw new BDDException("Impossible de créer une nouvelle catégorie. La bdd indique: " + e.getMessage());
  109. }
  110. }
  111. /**
  112. * Supprime une catégorie.
  113. * @param categorieName Le nom de la catégorie à supprimer.
  114. * @throws BDDException Si une erreur SQL survient.
  115. */
  116. public void deleteCategorie(String categorieName) throws BDDException
  117. {
  118. try
  119. {
  120. gestionCategories.deleteCategorie(categorieName);
  121. }
  122. catch(SQLException e)
  123. {
  124. throw new BDDException("Impossible de suprimer la catégorie. La bdd indique: " + e.getMessage());
  125. }
  126. }
  127. /**
  128. * Rennome une catégorie.
  129. * @param oldCategorieName Le nom de la catégorie à rennomer.
  130. * @param newCategorieName Le nouveau nom de la catégorie.
  131. * @throws BDDException Si une erreur SQL survient.
  132. */
  133. public void renameCategorie(String oldCategorieName, String newCategorieName) throws BDDException
  134. {
  135. try
  136. {
  137. gestionCategories.updateCategorie(oldCategorieName, newCategorieName);
  138. }
  139. catch(SQLException e)
  140. {
  141. throw new BDDException("Impossible de renommer catégorie. La bdd indique: " + e.getMessage());
  142. }
  143. }
  144. //Gestion réponses
  145. /**
  146. * Permet d'obtenir la liste des jeux de réponses depuis la base de données.
  147. * @param catName La catégorie des jeux de réponses à récupérer.
  148. * @return Un tableau d'objet Réponses.
  149. * @throws BDDException Si une erreur SQL survient.
  150. */
  151. public ArrayList<Reponses> getListeReponses(String catName) throws BDDException
  152. {
  153. try
  154. {
  155. gestionReponses.readReponses(catName);
  156. }
  157. catch(SQLException e)
  158. {
  159. throw new BDDException("Impossible de charger la liste des réponses. La bdd indique: " + e.getMessage());
  160. }
  161. return gestionReponses.getListReponses();
  162. }
  163. /**
  164. * Crée un nouveau jeu de réponses.
  165. * @param nomCategorie La catégorie du jeu de réponses.
  166. * @param reponse1 La réponse une du jeu à créer.
  167. * @param reponse2 La réponse deux du jeu à créer.
  168. * @throws BDDException Si une erreur SQL survient.
  169. */
  170. public void createReponses(String nomCategorie, String reponse1, String reponse2) throws BDDException
  171. {
  172. try
  173. {
  174. gestionReponses.createReponses(nomCategorie, reponse1, reponse2);
  175. }
  176. catch(SQLException e)
  177. {
  178. throw new BDDException("Impossible de créer une nouvelle réponse. La bdd indique: " + e.getMessage());
  179. }
  180. }
  181. /**
  182. * Supprime un jeu de réponses.
  183. * @param reponse1 La réponse une du jeu à supprimer.
  184. * @param reponse2 La réponse deux du jeu à supprimer.
  185. * @throws BDDException Si une erreur SQL survient.
  186. */
  187. public void deleteReponses(String reponse1, String reponse2) throws BDDException
  188. {
  189. try
  190. {
  191. gestionReponses.deleteReponses(reponse1, reponse2);
  192. }
  193. catch(SQLException e)
  194. {
  195. throw new BDDException("Impossible de suprimmer la réponse. La bdd indique: " + e.getMessage());
  196. }
  197. }
  198. /**
  199. * Modifie un jeu de réponses.
  200. * @param categorie Nouvelle catégorie.
  201. * @param oldRep1 Ancienne réponse une.
  202. * @param oldRep2 Ancienne réponse deux.
  203. * @param newRep1 Nouvelle réponse une.
  204. * @param newRep2 Nouvelle réponse deux.
  205. * @throws BDDException Si une erreur SQL survient.
  206. */
  207. public void modifyReponses(String categorie, String oldRep1, String oldRep2, String newRep1, String newRep2) throws BDDException
  208. {
  209. try
  210. {
  211. gestionReponses.updateReponses(categorie, oldRep1, oldRep2, newRep1, newRep2);
  212. }
  213. catch(SQLException e)
  214. {
  215. throw new BDDException("Impossible de modifier la réponse. La bdd indique: " + e.getMessage());
  216. }
  217. }
  218. //Gestion questions
  219. /**
  220. * Récupére la liste des questions liées à un jeu de réponses depuis la base de données.
  221. * @param reponse1 La réponse une du jeu de réponses lié.
  222. * @param reponse2 la réponse deux du jeu de réponses lié.
  223. * @return Un tableau d'objet Question.
  224. * @throws BDDException Si une erreur SQL survient.
  225. */
  226. public ArrayList<Question> getListeQuestions(String reponse1, String reponse2) throws BDDException
  227. {
  228. try
  229. {
  230. gestionQuestions.readQuestions(reponse1, reponse2);
  231. }
  232. catch(SQLException e)
  233. {
  234. throw new BDDException("Impossible de charger la liste des questions. La bdd indique: " + e.getMessage());
  235. }
  236. return gestionQuestions.getListeQuestions();
  237. }
  238. /**
  239. * Crée une nouvelle question.
  240. * @param intitule Intitulé de la question.
  241. * @param reponse1 Réponse une du jeu de question lié.
  242. * @param reponse2 Réponse une du jeu de question lié.
  243. * @param num_reponse Numéro de la bonne réponses (1: reponse1, 2: réponse2, 0: les deux)
  244. * @throws BDDException Si une erreur mysql survient.
  245. */
  246. public void createQuestion(String intitule, String reponse1, String reponse2, int num_reponse) throws BDDException
  247. {
  248. try
  249. {
  250. gestionQuestions.createQuestion(intitule, reponse1, reponse2, num_reponse);
  251. }
  252. catch(SQLException e)
  253. {
  254. throw new BDDException("Impossible de créer une nouvelle question. La bdd indique: " + e.getMessage());
  255. }
  256. }
  257. /**
  258. * Supprime une question de la base de données.
  259. * @param intitule Intitulé de la question à supprimer.
  260. * @param reponse1 Réponse une du jeu de question lié à la question à supprimer.
  261. * @param reponse2 Réponse deux du jeu de question lié à la question à supprimer.
  262. * @throws BDDException Si une erreur SQL survient.
  263. */
  264. public void deleteQuestion(String intitule, String reponse1, String reponse2) throws BDDException
  265. {
  266. try
  267. {
  268. gestionQuestions.deleteQuestion(intitule, reponse1, reponse2);
  269. }
  270. catch(SQLException e)
  271. {
  272. throw new BDDException("Impossible de suprimer la question. La bdd indique: " + e.getMessage());
  273. }
  274. }
  275. /**
  276. * Modifie une question.
  277. * @param oldIntitule Ancien intitulé de la question à modifier.
  278. * @param newIntitule Nouvel intitulé de la question à modifier.
  279. * @param reponse1 Réponse une du jeu de question lié.
  280. * @param reponse2 Réponse deux du jeu de question lié.
  281. * @param newNum_reponse Nouveau numéro de la bonne réponse (1: reponse1, 2: réponse2, 0: les deux)
  282. * @throws BDDException
  283. */
  284. public void modifyQuestion(String oldIntitule, String newIntitule, String reponse1, String reponse2, int newNum_reponse) throws BDDException
  285. {
  286. try
  287. {
  288. gestionQuestions.updateQuestion(oldIntitule, newIntitule, reponse1, reponse2, newNum_reponse);
  289. }
  290. catch(SQLException e)
  291. {
  292. throw new BDDException("Impossible de modifier la question. La bdd indique: " + e.getMessage());
  293. }
  294. }
  295. }