Package dados

Source Code of dados.CadastroDAOJavaDb

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package dados;

import java.util.List;
import negocio.CadastroDAO;
import negocio.Pessoa;
import java.sql.*;
import java.util.ArrayList;

/**
*
* @author Júlio
*/
public class CadastroDAOJavaDb implements CadastroDAO{
    private static CadastroDAOJavaDb ref;
   
    public static CadastroDAOJavaDb getInstance() throws CadastroDAOException {
        if (ref == null)
            ref = new CadastroDAOJavaDb();
        return ref;
    }
   
    private CadastroDAOJavaDb() throws CadastroDAOException {
        try {
             Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
        } catch (ClassNotFoundException ex) {
            throw new CadastroDAOException("JdbcOdbDriver not found!!");
        }
        // Cria o banco de dados vazio
        // Retirar do comentário se necessário
        /*
        try {
            createDB();
        } catch (Exception ex) {
            System.out.println("Problemas para criar o banco: "+ex.getMessage());
            System.exit(0);
        }*/
       
        // dropa a tabela
        // Retirar do comentário se necessário
        /*
        try {
            dropDB();
        } catch (Exception ex) {
            System.out.println("Problemas para criar o banco: "+ex.getMessage());
            System.exit(0);
        }*/
       
    }
   
    private static void dropDB() throws CadastroDAOException {
        try {
            Connection con = DriverManager.getConnection("jdbc:derby:derbyDB;create=true");
            Statement sta = con.createStatement();
           
            String sql = "DROP TABLE TICKET"
                     +   "DROP TABLE FUNCIONARIO"
                     +   "DROP TABLE PAGAMENTO"
                     +   "DROP TABLE CARTAO_ESP"
                     +   "DROP TABLE CARTAO_USO";
                   
            sta.executeUpdate(sql);
            sta.close();
            con.close();
        } catch (SQLException ex) {
            throw new CadastroDAOException(ex.getMessage());
        }
    }
   
    private static void createDB() throws CadastroDAOException {
        try {
            Connection con = DriverManager.getConnection("jdbc:derby:derbyDB;create=true");
            Statement sta = con.createStatement();
           
            String sql = "CREATE TABLE Pessoas ("
                    + "ID INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),"
                    + "NOME VARCHAR(100) NOT NULL,"
                    + "TELEFONE CHAR(8) NOT NULL,"
                    + "SEXO CHAR(1) NOT NULL"
                    + ")";
            sta.executeUpdate(sql);
            sta.close();
            con.close();
        } catch (SQLException ex) {
            throw new CadastroDAOException(ex.getMessage());
        }
    }
   
    private static Connection getConnection() throws SQLException {
        //derbyDB sera o nome do diretorio criado localmente
        return DriverManager.getConnection("jdbc:derby:derbyDB");
    }
    @Override
    public boolean update(Pessoa p) throws UpdateDOAException{
       
        try{
            Connection con = getConnection();
            PreparedStatement stmt = con.prepareStatement(
                    "update PESSOAS p SET p.nome = ?, p.telefone = ?, p.sexo = ?  where p.id = ?"
                    );
           
            stmt.setString(1, p.getNome());
            stmt.setString(2, p.getTelefone());
            stmt.setString(3, Character.toString(p.getSexo()));
            stmt.setInt(4, p.getId());
            int ret = stmt.executeUpdate();
            con.close();
            return ret > 0;
        }
        catch (SQLException ex) {
            throw new UpdateDOAException("Falha ao editar.", ex);
           
        }
       
    }
   
    @Override
    public boolean adicionar(Pessoa p) throws CadastroDAOException {
        try {
            Connection con = getConnection();
            PreparedStatement stmt = con.prepareStatement(
                    "INSERT INTO PESSOAS (NOME, TELEFONE, SEXO) VALUES (?,?,?)" //                             1        2         3            4          5             6
                    );
            stmt.setString(1, p.getNome());
            stmt.setString(2, p.getTelefone());
            stmt.setString(3, Character.toString(p.getSexo()));
            int ret = stmt.executeUpdate();
            con.close();
            return (ret>0);
        } catch (SQLException ex) {
            throw new CadastroDAOException("Falha ao adicionar.", ex);
        }
    }

    @Override
    public Pessoa getPessoaPorNome(String n) throws CadastroDAOException {
        try {
            Connection con = getConnection();
            PreparedStatement stmt = con.prepareStatement(
                    "SELECT * FROM PESSOAS WHERE NOME=?"
                    );
            stmt.setString(1, n);
            ResultSet resultado = stmt.executeQuery();
            Pessoa p = null;
            if(resultado.next()) {
                int id = resultado.getInt("ID");
                String nome = resultado.getString("NOME");
                String telefone = resultado.getString("TELEFONE");
                String sexo = resultado.getString("SEXO");
                p = new Pessoa(id,nome, telefone, sexo.equals("M"));
            }
            return p;
        } catch (SQLException ex) {
            throw new CadastroDAOException("Falha ao buscar.", ex);
        }
    }

    @Override
    public List<Pessoa> getHomens() throws CadastroDAOException {
        try {
            Connection con = getConnection();
            Statement stmt = con.createStatement();
            ResultSet resultado = stmt.executeQuery("SELECT * FROM PESSOAS WHERE SEXO='M'");
            List<Pessoa> lista = new ArrayList<Pessoa>();
            while(resultado.next()) {
                int id = resultado.getInt("ID");
                String nome = resultado.getString("NOME");
                String telefone = resultado.getString("TELEFONE");
                String sexo = resultado.getString("SEXO");
                Pessoa p = new Pessoa(id,nome, telefone, sexo.equals("M"));
                lista.add(p);
            }
            return lista;
        } catch (SQLException ex) {
            throw new CadastroDAOException("Falha ao buscar.", ex);
        }
    }

    @Override
    public List<Pessoa> getMulheres() throws CadastroDAOException {
        try {
            Connection con = getConnection();
            Statement stmt = con.createStatement();
            ResultSet resultado = stmt.executeQuery("SELECT * FROM PESSOAS WHERE SEXO='F'");
            List<Pessoa> lista = new ArrayList<Pessoa>();
            while(resultado.next()) {
                int id = resultado.getInt("ID");
                String nome = resultado.getString("NOME");
                String telefone = resultado.getString("TELEFONE");
                String sexo = resultado.getString("SEXO");
                Pessoa p = new Pessoa(id,nome, telefone, sexo.equals("M"));
                lista.add(p);
            }
            return lista;
        } catch (SQLException ex) {
            throw new CadastroDAOException("Falha ao buscar.", ex);
        }    }

    @Override
    public List<Pessoa> getTodos() throws CadastroDAOException {
        try {
            Connection con = getConnection();
            Statement stmt = con.createStatement();
            ResultSet resultado = stmt.executeQuery("SELECT * FROM PESSOAS");
            List<Pessoa> lista = new ArrayList<Pessoa>();
            while(resultado.next()) {
                int id = resultado.getInt("ID");
                String nome = resultado.getString("NOME");
                String telefone = resultado.getString("TELEFONE");
                String sexo = resultado.getString("SEXO");
                Pessoa p = new Pessoa(id,nome, telefone, sexo.equals("M"));
                lista.add(p);
            }
            return lista;
        } catch (SQLException ex) {
            throw new CadastroDAOException("Falha ao buscar.", ex);
        }    }

   
}
TOP

Related Classes of dados.CadastroDAOJavaDb

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.