Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package persistencia;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.text.ParseException;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import javax.swing.JOptionPane;
- import model.Avio;
- import model.Classe;
- import model.Companyia;
- import principal.GestioVolsExcepcio;
- /**
- *
- * @author root
- */
- public class GestorJDBC implements ProveedorPersistencia {
- private Companyia companyia;
- private Connection conn; //Connexió a la base de dades
- public Companyia getCompanyia() {
- return companyia;
- }
- public void setCompanyia(Companyia companyia) {
- this.companyia = companyia;
- }
- /*
- *TODO
- *
- *Paràmetres: cap
- *
- *Acció:
- * - Heu d'establir la connexio JDBC amb la base de dades GestorVols
- * - Heu de fer el catch de les possibles excepcions SQL mostrant el missatge
- * de l'excepció capturada mitjançant getMessage().
- * - Si es produeix una excepció a l'establir la connexió, assignareu el
- * valor null a l'atribut conn.
- *
- *Retorn: cap
- *
- */
- public void estableixConnexio() throws SQLException {
- try {
- Class.forName("com.mysql.jdbc.Driver");
- conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/GestorVols", "root", "");
- } catch (ClassNotFoundException e1) {
- JOptionPane.showMessageDialog(null, e1.getMessage());
- } catch (SQLException e2) {
- conn = null;
- JOptionPane.showMessageDialog(null, e2.getMessage());
- }
- }
- /*
- * Heu de tancar la connexió i assignar-li el valor null a l'atribut conn, es
- * produeixi o no una excepció.
- *
- */
- public void tancaConnexio() throws SQLException {
- }
- /*
- *TODO
- *
- *Paràmetres: el nom del fitxer i la companyia a desar
- *
- *Acció:
- * Heu de desar la companyia passada com a paràmetre en la base de dades:
- * - S'ha de desar en la taula companyes (nomFitxer és el codi de la companyia)
- * - Cada avió de la companyia, s'ha de desar com registre de la taula avions
- * - Heu de tenir en compte que si la companyia ja existeix a la base de
- * dades, aleshores heu de fer el següent:
- * - Actualitzar la companyia ja existent
- * - Eliminar totes els avions d'aquesta companyia de la taula avions i
- * després insertar els avions de la companyia.
- * - Si al fer qualsevol operació es produeix una excepció, llavors heu de
- * llançar l'excepció GestioVolsExcepcio amb codi "GestorJDBC.desar"
- *
- *Retorn: cap
- *
- */
- @Override
- public void desarDades(String nomFitxer, Companyia companyia) throws GestioVolsExcepcio {
- try {
- String consultaSQL;
- Statement statement = conn.createStatement();
- ResultSet update = statement.executeQuery("SELECT * from 'companyies' WHERE codi = " + companyia.getCodi());
- ArrayList<Avio> avions = new ArrayList();
- for (int i = 0; i < companyia.getComponents().size(); i++) {
- if (companyia.getComponents().get(i) instanceof Avio) {
- avions.add((Avio) companyia.getComponents().get(i));
- }
- }
- if (!update.next()) { //Si no hay ninguna
- consultaSQL = "INSERT INTO 'companyies' ('codi', 'nom') VALUES (" + companyia.getCodi() + ", '" + companyia.getNom() + "') ";
- for (Avio avio : avions) {
- ArrayList <String> nomClasses = new ArrayList();
- for(Classe clase : avio.getClasses()) {
- nomClasses.add(clase.getNom());
- }
- String classesString = String.join(",",nomClasses);
- statement.executeUpdate("INSERT INTO 'avions' ('codi', 'fabricant', 'model', 'capacitat', 'classes') VALUES ('" + avio.getCodi() + "', '"+avio.getFabricant()+"','"+avio.getModel()+"',"+avio.getCapacitat()+",)");
- statement.executeUpdate(consultaSQL);
- }
- } else {
- }
- } catch (SQLException e) {
- throw new GestioVolsExcepcio("GestorJDBC.desar");
- }
- }
- /*
- *TODO
- *
- *Paràmetres: el nom del fitxer de la companyia
- *
- *Acció:
- * Heu de carregar la companyia des de la base de dades (nomFitxer és el codi
- * de la companyia). Per fer això, heu de:
- * - Cercar el registre companyia de la taula companyies amb codi = nomFitxer.
- * - Heu d'afegir els avions al vector de components de la companyia a partir de
- * la taula avions.
- * - Si al fer qualsevol operació es produeix una excepció, llavors heu de
- * llançar l'excepció GestioVolsExcepcio amb codi "GestorJDBC.carrega"
- * - Si el nomFitxer donat no existeix a la taula companyies (és a dir, el
- * codi = nomFitxer no existeix), aleshores heu de llançar l'excepció
- * GestioVolsExcepcio amb codi "GestorJDBC.noexist"
- *
- *Retorn: cap
- *
- */
- @Override
- public Companyia carregarDades(String nomFitxer) throws ParseException, GestioVolsExcepcio {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement