Advertisement
Guest User

Untitled

a guest
Apr 9th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.44 KB | None | 0 0
  1. package persistencia;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.sql.Statement;
  8. import java.text.ParseException;
  9. import java.util.ArrayList;
  10. import java.util.Iterator;
  11. import java.util.logging.Level;
  12. import java.util.logging.Logger;
  13. import javax.swing.JOptionPane;
  14. import model.Avio;
  15. import model.Classe;
  16. import model.Companyia;
  17. import principal.GestioVolsExcepcio;
  18.  
  19. /**
  20. *
  21. * @author root
  22. */
  23. public class GestorJDBC implements ProveedorPersistencia {
  24.  
  25. private Companyia companyia;
  26.  
  27. private Connection conn; //Connexió a la base de dades
  28.  
  29. public Companyia getCompanyia() {
  30. return companyia;
  31. }
  32.  
  33. public void setCompanyia(Companyia companyia) {
  34. this.companyia = companyia;
  35. }
  36.  
  37. /*
  38. *TODO
  39. *
  40. *Paràmetres: cap
  41. *
  42. *Acció:
  43. * - Heu d'establir la connexio JDBC amb la base de dades GestorVols
  44. * - Heu de fer el catch de les possibles excepcions SQL mostrant el missatge
  45. * de l'excepció capturada mitjançant getMessage().
  46. * - Si es produeix una excepció a l'establir la connexió, assignareu el
  47. * valor null a l'atribut conn.
  48. *
  49. *Retorn: cap
  50. *
  51. */
  52. public void estableixConnexio() throws SQLException {
  53. try {
  54. Class.forName("com.mysql.jdbc.Driver");
  55. conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/GestorVols", "root", "");
  56. } catch (ClassNotFoundException e1) {
  57. JOptionPane.showMessageDialog(null, e1.getMessage());
  58. } catch (SQLException e2) {
  59. conn = null;
  60. JOptionPane.showMessageDialog(null, e2.getMessage());
  61. }
  62. }
  63.  
  64. /*
  65. * Heu de tancar la connexió i assignar-li el valor null a l'atribut conn, es
  66. * produeixi o no una excepció.
  67. *
  68. */
  69. public void tancaConnexio() throws SQLException {
  70.  
  71. }
  72.  
  73. /*
  74. *TODO
  75. *
  76. *Paràmetres: el nom del fitxer i la companyia a desar
  77. *
  78. *Acció:
  79. * Heu de desar la companyia passada com a paràmetre en la base de dades:
  80. * - S'ha de desar en la taula companyes (nomFitxer és el codi de la companyia)
  81. * - Cada avió de la companyia, s'ha de desar com registre de la taula avions
  82. * - Heu de tenir en compte que si la companyia ja existeix a la base de
  83. * dades, aleshores heu de fer el següent:
  84. * - Actualitzar la companyia ja existent
  85. * - Eliminar totes els avions d'aquesta companyia de la taula avions i
  86. * després insertar els avions de la companyia.
  87. * - Si al fer qualsevol operació es produeix una excepció, llavors heu de
  88. * llançar l'excepció GestioVolsExcepcio amb codi "GestorJDBC.desar"
  89. *
  90. *Retorn: cap
  91. *
  92. */
  93. @Override
  94. public void desarDades(String nomFitxer, Companyia companyia) throws GestioVolsExcepcio {
  95. try {
  96. String consultaSQL;
  97. Statement statement = conn.createStatement();
  98. ResultSet update = statement.executeQuery("SELECT * from 'companyies' WHERE codi = " + companyia.getCodi());
  99. ArrayList<Avio> avions = new ArrayList();
  100.  
  101. for (int i = 0; i < companyia.getComponents().size(); i++) {
  102. if (companyia.getComponents().get(i) instanceof Avio) {
  103. avions.add((Avio) companyia.getComponents().get(i));
  104. }
  105. }
  106.  
  107. if (!update.next()) { //Si no hay ninguna
  108. consultaSQL = "INSERT INTO 'companyies' ('codi', 'nom') VALUES (" + companyia.getCodi() + ", '" + companyia.getNom() + "') ";
  109. for (Avio avio : avions) {
  110. ArrayList <String> nomClasses = new ArrayList();
  111. for(Classe clase : avio.getClasses()) {
  112. nomClasses.add(clase.getNom());
  113. }
  114. String classesString = String.join(",",nomClasses);
  115. statement.executeUpdate("INSERT INTO 'avions' ('codi', 'fabricant', 'model', 'capacitat', 'classes') VALUES ('" + avio.getCodi() + "', '"+avio.getFabricant()+"','"+avio.getModel()+"',"+avio.getCapacitat()+",)");
  116. statement.executeUpdate(consultaSQL);
  117. }
  118. } else {
  119.  
  120. }
  121. } catch (SQLException e) {
  122. throw new GestioVolsExcepcio("GestorJDBC.desar");
  123. }
  124. }
  125.  
  126. /*
  127. *TODO
  128. *
  129. *Paràmetres: el nom del fitxer de la companyia
  130. *
  131. *Acció:
  132. * Heu de carregar la companyia des de la base de dades (nomFitxer és el codi
  133. * de la companyia). Per fer això, heu de:
  134. * - Cercar el registre companyia de la taula companyies amb codi = nomFitxer.
  135. * - Heu d'afegir els avions al vector de components de la companyia a partir de
  136. * la taula avions.
  137. * - Si al fer qualsevol operació es produeix una excepció, llavors heu de
  138. * llançar l'excepció GestioVolsExcepcio amb codi "GestorJDBC.carrega"
  139. * - Si el nomFitxer donat no existeix a la taula companyies (és a dir, el
  140. * codi = nomFitxer no existeix), aleshores heu de llançar l'excepció
  141. * GestioVolsExcepcio amb codi "GestorJDBC.noexist"
  142. *
  143. *Retorn: cap
  144. *
  145. */
  146. @Override
  147. public Companyia carregarDades(String nomFitxer) throws ParseException, GestioVolsExcepcio {
  148.  
  149. }
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement