/*
* ContatoGeneric.java
* Criado em: 27/05/2006 - 19:37:21
* Copyright (c) 2006, Misael Silveira
* All rights reserved.
*/
/**
* @author Misael Silveira
* @version $Id: $
*/
package br.unisc.dao.generic;
import java.io.IOException;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.fileupload.FileItem;
import br.unisc.dao.ContatoDAO;
import br.unisc.db.DataBase;
import br.unisc.model.Contato;
public class ContatoGeneric implements ContatoDAO {
public static final int SELECT_BY_NOME = 0;
public static final int SELECT_BY_SOBRENOME = 1;
public static final int SELECT_BY_EMAIL = 2;
public static final int SELECT_BY_CIDADE = 3;
public static final int SELECT_BY_BAIRRO = 4;
public boolean hasImage = false;
public void save(Contato contato) {
try {
String sql = "INSERT INTO contato SET " +
"id_usuario = ?, " +
"nome = ?, " +
"sobrenome = ?, " +
"apelido = ?, " +
"email = ?, " +
"tel_residencial = ?, " +
"tel_trabalho = ?, " +
"celular = ?, " +
"endereco = ?, " +
"bairro = ?, " +
"cidade = ?, " +
"cep = ?";
DataBase db = new DataBase();
Connection conn = db.open();
PreparedStatement pstm = conn.prepareStatement( sql );
pstm.setInt( 1, contato.getId_usuario() );
pstm.setString( 2, contato.getNome() );
pstm.setString( 3, contato.getSobrenome() );
pstm.setString( 4, contato.getApelido() );
pstm.setString( 5, contato.getEmail() );
pstm.setString( 6, contato.getTel_residencial() );
pstm.setString( 7, contato.getTel_trabalho() );
pstm.setString( 8, contato.getCelular() );
pstm.setString( 9, contato.getEndereco() );
pstm.setString( 10, contato.getBairro() );
pstm.setString( 11, contato.getCidade() );
pstm.setString( 12, contato.getCep() );
//pstm.setBlob( 13, contato.getFoto() );
pstm.execute();
pstm.close();
conn.close();
db.close();
} catch( SQLException ex ) {
System.err.println( "Erro ao persistir contato na base de dados!" );
ex.printStackTrace();
}
}
public void update(Contato contato) {
try {
String sql = "UPDATE contato SET " +
"id_usuario = ?, " +
"nome = ?, " +
"sobrenome = ?, " +
"apelido = ?, " +
"email = ?, " +
"tel_residencial = ?, " +
"tel_trabalho = ?, " +
"celular = ?, " +
"endereco = ?, " +
"bairro = ?, " +
"cidade = ?, " +
"cep = ? " +
"WHERE id_contato = ? ";
DataBase db = new DataBase();
Connection conn = db.open();
PreparedStatement pstm = conn.prepareStatement( sql );
pstm.setInt( 1, contato.getId_usuario() );
pstm.setString( 2, contato.getNome() );
pstm.setString( 3, contato.getSobrenome() );
pstm.setString( 4, contato.getApelido() );
pstm.setString( 5, contato.getEmail() );
pstm.setString( 6, contato.getTel_residencial() );
pstm.setString( 7, contato.getTel_trabalho() );
pstm.setString( 8, contato.getCelular() );
pstm.setString( 9, contato.getEndereco() );
pstm.setString( 10, contato.getBairro() );
pstm.setString( 11, contato.getCidade() );
pstm.setString( 12, contato.getCep() );
//pstm.setBlob( 13, contato.getFoto() );
pstm.setInt( 13, contato.getId_contato() );
pstm.execute();
pstm.close();
conn.close();
db.close();
} catch( SQLException ex ) {
System.err.println( "Erro ao persistir contato na base de dados!\n" );
ex.printStackTrace();
}
}
public void delete(int idContato) {
try {
String sql = "DELETE FROM contato WHERE id_contato = ?";
DataBase db = new DataBase();
Connection conn = db.open();
PreparedStatement pstm = conn.prepareStatement( sql );
pstm.setInt(1, idContato );
pstm.execute();
pstm.close();
conn.close();
db.close();
} catch ( SQLException ex ) {
System.err.println("Erro ao remover contato da base de dados!\n");
ex.printStackTrace();
}
}
@SuppressWarnings("unchecked")
public List getContatos(boolean ordenados ) {
ArrayList contatos = new ArrayList();
try {
String sql = "SELECT " +
"id_contato, id_usuario, nome, " +
"sobrenome, apelido, email, tel_residencial, " +
"tel_trabalho, celular, endereco, bairro, cidade, " +
"cep from contato";
if(ordenados) {
sql += " ORDER BY nome";
} else {
sql += " ORDER BY id_contato";
}
DataBase db = new DataBase();
Connection conn = db.open();
PreparedStatement pstm = conn.prepareStatement( sql );
ResultSet rs = pstm.executeQuery();
while( rs.next() ) {
Contato contato = new Contato();
contato.setId_contato( rs.getInt( "id_contato") );
contato.setId_usuario( rs.getInt( "id_usuario") );
contato.setNome( rs.getString("nome") );
contato.setSobrenome( rs.getString( "sobrenome") );
contato.setApelido( rs.getString("apelido") );
contato.setEmail( rs.getString("email") );
contato.setTel_residencial( rs.getString( "tel_residencial" ) );
contato.setTel_trabalho( rs.getString("tel_trabalho") );
contato.setCelular( rs.getString( "celular") );
contato.setEndereco( rs.getString("endereco") );
contato.setBairro( rs.getString( "bairro") );
contato.setCidade( rs.getString( "cidade") );
contato.setCep( rs.getString("cep") );
//contato.setFoto( rs.getBlob("foto") );
contatos.add( contato );
}
rs.close();
pstm.close();
conn.close();
db.close();
} catch ( SQLException ex ) {
System.err.println("Erro ao listar contatos!! \n");
ex.printStackTrace();
}
return contatos;
}
public Contato selectById(int idContato) {
try {
String sql = "SELECT " +
"id_contato, id_usuario, nome, " +
"sobrenome, apelido, email, tel_residencial, " +
"tel_trabalho, celular, endereco, bairro, cidade, " +
"cep from contato WHERE id_contato = ?";
DataBase db = new DataBase();
Connection conn = db.open();
PreparedStatement pstm = conn.prepareStatement( sql );
pstm.setInt(1, idContato );
ResultSet rs = pstm.executeQuery();
if( rs.next() ) {
Contato contato = new Contato();
contato.setId_contato( rs.getInt( "id_contato") );
contato.setId_usuario( rs.getInt( "id_usuario") );
contato.setNome( rs.getString("nome") );
contato.setSobrenome( rs.getString( "sobrenome") );
contato.setApelido( rs.getString("apelido") );
contato.setEmail( rs.getString("email") );
contato.setTel_residencial( rs.getString( "tel_residencial" ) );
contato.setTel_trabalho( rs.getString("tel_trabalho") );
contato.setCelular( rs.getString( "celular") );
contato.setEndereco( rs.getString("endereco") );
contato.setBairro( rs.getString( "bairro") );
contato.setCidade( rs.getString( "cidade") );
contato.setCep( rs.getString("cep") );
//contato.setFoto( rs.getBlob("foto") );
rs.close();
pstm.close();
conn.close();
db.close();
return contato;
}
rs.close();
pstm.close();
conn.close();
db.close();
} catch ( SQLException ex ) {
System.err.println( "Erro ao executar query! \n" );
ex.printStackTrace();
}
return null;
}
@SuppressWarnings("unchecked")
public List selectContatosByOpcao(int opcao, boolean ordenados, String value) {
ArrayList contatos = new ArrayList();
try {
String sql = "SELECT " +
"id_contato, id_usuario, nome, " +
"sobrenome, apelido, email, tel_residencial, " +
"tel_trabalho, celular, endereco, bairro, cidade, " +
"cep from contato WHERE ";
switch( opcao ) {
case SELECT_BY_NOME:
sql += " nome like ?";
break;
case SELECT_BY_SOBRENOME:
sql += " sobrenome like ?";
break;
case SELECT_BY_EMAIL:
sql += " email like ?";
break;
case SELECT_BY_CIDADE:
sql += " cidade like ?";
break;
case SELECT_BY_BAIRRO:
sql += " bairro like ?";
break;
default:
sql += " nome like ?";
break;
}
if(ordenados) {
sql += " ORDER BY nome";
} else {
sql += " ORDER BY id_contato";
}
DataBase db = new DataBase();
Connection conn = db.open();
PreparedStatement pstm = conn.prepareStatement( sql );
pstm.setString(1, value + "%" );
ResultSet rs = pstm.executeQuery();
while( rs.next() ) {
Contato contato = new Contato();
contato.setId_contato( rs.getInt( "id_contato") );
contato.setId_usuario( rs.getInt( "id_usuario") );
contato.setNome( rs.getString("nome") );
contato.setSobrenome( rs.getString( "sobrenome") );
contato.setApelido( rs.getString("apelido") );
contato.setEmail( rs.getString("email") );
contato.setTel_residencial( rs.getString( "tel_residencial" ) );
contato.setTel_trabalho( rs.getString("tel_trabalho") );
contato.setCelular( rs.getString( "celular") );
contato.setEndereco( rs.getString("endereco") );
contato.setBairro( rs.getString( "bairro") );
contato.setCidade( rs.getString( "cidade") );
contato.setCep( rs.getString("cep") );
//contato.setFoto( rs.getBlob("foto") );
contatos.add( contato );
}
rs.close();
pstm.close();
conn.close();
db.close();
} catch ( SQLException ex ) {
System.err.println("Erro ao listar contatos!! \n");
ex.printStackTrace();
}
return contatos;
}
public void insereImagem( int idContato, FileItem item ) {
try {
String sql = "UPDATE contato SET foto = ? " +
"WHERE id_contato = ? ";
DataBase db = new DataBase();
Connection conn = db.open();
PreparedStatement pstm = conn.prepareStatement( sql );
/*
File imagem = new File( path );
FileInputStream imagemStream = new FileInputStream( imagem );*/
pstm.setBinaryStream(1, item.getInputStream(), (int) item.getSize() );
pstm.setInt( 2, idContato );
pstm.executeUpdate();
pstm.close();
conn.close();
db.close();
} catch( SQLException ex ) {
System.err.println("Erro ao tentar inserir imagem!!\n");
ex.printStackTrace();
} catch (IOException e) {
System.err.println("Erro ao inserir InputStream no banco!\n");
e.printStackTrace();
}
}
public byte[] selectImagem( int idContato ) {
byte[] imagemStream = null;
try {
String sql = "SELECT foto, LENGTH(foto) as 'tamanho' FROM contato WHERE id_contato = ?";
DataBase db = new DataBase();
Connection conn = db.open();
PreparedStatement pstm = conn.prepareStatement( sql );
pstm.setInt(1, idContato );
ResultSet rs = pstm.executeQuery();
while( rs.next() ) {
Blob imagem = rs.getBlob( "foto" );
if( imagem != null ) {
hasImage = true;
imagemStream = imagem.getBytes(1, (int) imagem.length() );
} else {
hasImage = false;
}
}
rs.close();
pstm.close();
conn.close();
db.close();
} catch( SQLException ex ) {
System.err.println("Erro ao selecionar imagem!! \n" );
ex.printStackTrace();
} catch (Exception ex) {
System.err.println("Erro geral!! \n");
ex.printStackTrace();
}
return imagemStream;
}
}
Readapta essa pra tuas nescessidades…
[code]
import java.awt.;
import java.awt.image.;
import com.sun.image.codec.jpeg.*;
import br.unisc.dao.generic.ContatoGeneric;
/**
- Servlet implementation class for Servlet: GeraImagem
-
*/
public class GeraImagem extends javax.servlet.http.HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ContatoGeneric gc = new ContatoGeneric();
byte[] imagemStream = gc.selectImagem( Integer.parseInt( request.getParameter("idContato") ) );
if( gc.hasImage ) {
response.setContentType( "image/jpeg" );
OutputStream out = response.getOutputStream();
out.write( imagemStream );
out.flush();
out.close();
} else {
String texto = "Contato sem foto!";
response.setContentType( "image/jpeg" );
int width = 157;
int height = 50;
BufferedImage image = new BufferedImage(
width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = (Graphics2D)image.getGraphics();
g.setColor(Color.black);
g.fillRect(0, 0, width, height);
g.setColor(Color.green);
g.setFont(new Font("Dialog", Font.BOLD, 16));
g.drawString(texto,10,height/2+4);
g.setColor(Color.black);
g.drawRect(0,0,width-1,height-1);
g.dispose();
ServletOutputStream sos = response.getOutputStream();
JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(sos);
encoder.encode(image);
}
}
}[/code]