package dao;
import domain.Cidade;
import domain.UF;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import util.Conexao;
import util.ConexaoException;
import util.MinhaException;
public class CidadeJDBCDao implements CidadeDao {
private Conexao connection;
private String sql;
public Conexao getConnection () {
return connection;
}
public void setConnection (Conexao val) {
this.connection = val;
}
public Vector<Cidade> selecionarTodasCidades() throws SQLException, MinhaException,ConexaoException {
sql = "Select * from cidade";
this.connection = FabricaConexao.obterConexao();
PreparedStatement pstmt = this.connection.prepareStatement(sql);
ResultSet res = pstmt.executeQuery();
Vector cidades = new Vector();
while (res.next()) {
Cidade cidad = new Cidade();
UF uf = new UF();
uf.setNomeUF(res.getString("sigla_uf"));
cidad.setCodCidade(res.getInt("cod_cidade"));
cidad.setUF(uf);
cidad.setNomeCidade(res.getString("nome_cidade"));
cidades.addElement(cidad);
}
this.connection.close();
return cidades;
}
public Cidade selecionarCidade(Cidade cidade) throws MinhaException, ConexaoException, SQLException {
Cidade cidadeBuscada = new Cidade();
this.connection = FabricaConexao.obterConexao();
try
{
this.connection.setAutoCommit(false);
this.sql = "SELECT * FROM cidade WHERE nome_cidade = ?;";
PreparedStatement pStmt = this.connection.prepareStatement(sql);
pStmt.setString(1, cidade.getNomeCidade());
ResultSet result = pStmt.executeQuery();
result.next();
do
{
cidadeBuscada.setCodCidade(result.getInt("cod_cidade"));
cidadeBuscada.setNomeCidade(result.getString("nome_cidade"));
}while(result.next());
}
catch(SQLException erro)
{
this.connection.rollback();
throw erro;
}
finally
{
this.connection.close();
return cidadeBuscada;
}
}
public void removerCidade(Cidade cidade) throws SQLException, MinhaException, ConexaoException
{
this.connection = FabricaConexao.obterConexao();
try
{
this.connection.setAutoCommit(false);
sql = "DELETE FROM cidade " +
"WHERE cod_cidade = ? ;";
PreparedStatement prepSt = this.connection.prepareStatement(sql);
prepSt.setInt(1, cidade.getCodCidade());
prepSt.executeUpdate();
this.connection.commit();
}
catch(SQLException erro)
{
this.connection.rollback();
throw erro;
}
finally
{
this.connection.close();
}
}
public void alterarCidade(Cidade cidade) throws SQLException, MinhaException, ConexaoException {
this.connection = FabricaConexao.obterConexao();
try
{
this.connection.setAutoCommit(false);
sql = "UPDATE cidade SET " +
"sigla_uf = ? ," +
"nome_cidade = ? "+
"WHERE cod_cidade = ? ;";
PreparedStatement prepSt = this.connection.prepareStatement(sql);
prepSt.setString(1, cidade.getUF().getNomeUF());
prepSt.setString(2, cidade.getNomeCidade());
prepSt.setInt(3, cidade.getCodCidade());
prepSt.executeUpdate();
this.connection.commit();
}
catch(SQLException erro)
{
this.connection.rollback();
throw erro;
}
finally
{
this.connection.close();
}
}
public void inserirCidade(Cidade cidade) throws SQLException, MinhaException, ConexaoException {
this.connection = FabricaConexao.obterConexao();
try {
this.connection.setAutoCommit(false);
sql = "INSERT INTO cidade (sigla_uf,nome_cidade) values (?,?);";
PreparedStatement pstmt = this.connection.prepareStatement(sql);
pstmt.setString(1, cidade.getUF().getNomeUF());
pstmt.setString(2, cidade.getNomeCidade());
pstmt.executeUpdate();
this.connection.commit();
} catch (SQLException erro) {
this.connection.rollback();
throw erro;
} finally {
this.connection.close();
}
}
public Vector<Cidade> obterCidade(String estado) throws MinhaException, SQLException, ConexaoException {
sql = "Select nome_cidade from cidade where sigla_uf = '"+ estado +"'";
this.connection = FabricaConexao.obterConexao();
PreparedStatement pstmt = this.connection.prepareStatement(sql);
ResultSet res = pstmt.executeQuery();
Vector cidades = new Vector();
while (res.next()) {
Cidade cidade = new Cidade();
cidade.setNomeCidade(res.getString("nome_cidade"));
cidades.addElement(cidade);
}
this.connection.close();
return cidades;
}
public int obterCodCidade(String cidade) throws MinhaException, SQLException, ConexaoException {
sql = "Select cod_cidade from cidade where nome_cidade = '"+ cidade +"'";
this.connection = FabricaConexao.obterConexao();
PreparedStatement pstmt = this.connection.prepareStatement(sql);
ResultSet res = pstmt.executeQuery();
int codCidade = 0;
if(res.next()){
codCidade = res.getInt(1);
}
this.connection.close();
return codCidade;
}
public Cidade selecionarCidadePorCodigo(int codigo) throws MinhaException, SQLException, ConexaoException
{
Cidade cidadeBuscada = new Cidade();
UF uf = new UF();
this.connection = FabricaConexao.obterConexao();
try
{
this.connection.setAutoCommit(false);
this.sql = "SELECT * FROM cidade WHERE cod_cidade = ?;";
PreparedStatement pStmt = this.connection.prepareStatement(sql);
pStmt.setInt(1, codigo);
ResultSet result = pStmt.executeQuery();
result.next();
cidadeBuscada.setCodCidade(result.getInt("cod_cidade"));
cidadeBuscada.setNomeCidade(result.getString("nome_cidade"));
uf.setUF(result.getString("sigla_uf"));
cidadeBuscada.setUF(uf);
}
catch(SQLException erro)
{
this.connection.rollback();
throw erro;
}
finally
{
this.connection.close();
return cidadeBuscada;
}
}
public Vector<Cidade> selecionarTodasCidadesPorEstado(UF uf) throws MinhaException, ConexaoException, SQLException {
this.connection = FabricaConexao.obterConexao();
this.connection.setAutoCommit(true);
this.sql = "SELECT * " +
"FROM cidade " +
"WHERE sigla_uf = ? ;";
PreparedStatement psStm = this.connection.prepareStatement(this.sql);
psStm.setString(1, uf.getUF());
ResultSet result = psStm.executeQuery();
//result.next();
Vector<Cidade> vetCidade = new Vector<Cidade>();
if(result == null || !result.next())
{
this.connection.close();
return vetCidade;
}
else
{
do
{
Cidade novaCidade = new Cidade();
novaCidade.setCodCidade(result.getInt("cod_cidade"));
novaCidade.setNomeCidade(result.getString("nome_cidade"));
novaCidade.setUF(uf);
vetCidade.addElement(novaCidade);
}while(result.next());
}
this.connection.close();
return vetCidade;
}
@SuppressWarnings("unchecked")
public Vector<Cidade> obterUFCidade(int cod) throws MinhaException, SQLException, ConexaoException {
sql = "select ci.nome_cidade, "+
"ci.sigla_uf "+
"from cidade ci "+
"where ci.cod_cidade = "+ cod +";";
this.connection = FabricaConexao.obterConexao();
PreparedStatement pstmt = this.connection.prepareStatement(sql);
ResultSet res = pstmt.executeQuery();
Vector ufCidade = new Vector();
while (res.next()) {
Cidade cid = new Cidade();
UF uf = new UF();
uf.setNomeUF(res.getString("sigla_uf"));
cid.setNomeCidade(res.getString("nome_cidade"));
cid.setUF(uf);
ufCidade.addElement(cid);
}
this.connection.close();
return ufCidade;
}
}