public class AgendaTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
// LISTA DE CONTATOS A SEREM EXIBIDOS NA TELA
private List<Contato> linhas = new ArrayList<Contato>();
// CRIA UMA AGENDATABLEMODEL SEM NENHUMA LINHA
public AgendaTableModel() {
// NO CONSTRUTOR, INSTANCIAMOS A LISTA
linhas = new ArrayList<Contato>();
}
// CRIA UMA AGENDATABLE MODEL CONTENDO A LISTA RECEBIDA POR PARAMETRO
public AgendaTableModel(List<Contato> listaDeContatos) {
linhas = new ArrayList<Contato>(listaDeContatos);
}
// ARRAY COM TODAS AS COLUNAS
private String[] colunas = new String[] {"Nome", "Email","Dt. Nasc", "Sexo","Estado Civil",
"Rua", "Número", "Cidade","Complemento" ,"Estado", "fone", "fone"," fone" };
private static final int NOME = 0;
private static final int EMAIL = 1;
private static final int DATANASCIMENTO = 2;
private static final int SEXO =3;
private static final int ESTADOCIVIL = 4;
private static final int RUA = 5 ;
private static final int NUMERO = 6;
private static final int CIDADE = 7;
private static final int COMPLEMENTO = 8;
private static final int ESTADO = 9;
private static final int TELEFONE = 10;
private static final int TELEFONE1 = 11;
private static final int TELEFONE2 = 12;
// RETORNA O NUMERO DE LINHAS
public int getRowCount() {
return linhas.size();
}
// RETORNA O NUMERO DE COLUNAS
public int getColumnCount() {
return colunas.length;
}
// ARRAY COM NOME DAS COLUNAS PARA RETORNAR O NOME REFERENTE AO INDICE PASSADO POR PARAMETRO
public String getColumnName(int columnIndex) {
return colunas[columnIndex];
};
// VERIFICA O TIPO DE CLASSE PASSADO POR PARAMETRO
public Class<?> getColumnClass(int columnIndex) {
switch (columnIndex) {
case NOME:
return String.class;
case EMAIL:
return String.class;
case DATANASCIMENTO:
return Date.class;
case SEXO:
return String.class;
case ESTADOCIVIL:
return String.class;
case RUA:
return String.class;
case CIDADE:
return String.class;
case COMPLEMENTO:
return String.class;
case ESTADO:
return String.class;
case NUMERO:
return int.class;
case TELEFONE:
return String.class;
case TELEFONE1:
return String.class;
case TELEFONE2:
return String.class;
default:
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
// RETORNA AS COLUNAS EDITAVÉIS, NESSE CASO TODAS
return true;
}
public Object getValueAt(int rowIndex, int columnIndex) {
// AKI VAMOS ATUALIZAR OS DADOS DO NOSSO CONTATO
// EM QUAL LINHA ESTÁ
Contato c = linhas.get(rowIndex);
// E VEMOS O QUE SERÁ ATUALIZADO
switch (columnIndex) {
// CASOS PARA EFETUAR AS MUDANÇAS
case NOME:
return c.getNome();
case EMAIL:
return c.getEmail();
case DATANASCIMENTO:
return c.getDtNas();
case SEXO:
return c.getSexo();
case ESTADOCIVIL:
return c.getEstadoCivil();
case RUA:
return c.getRua();
case CIDADE:
return c.getCidade();
case COMPLEMENTO:
return c.getComplemento();
case ESTADO:
return c.getEstado();
case NUMERO:
return c.getNumero();
case TELEFONE:
return c.getTelefone();
case TELEFONE1:
return c.getTelefone1();
case TELEFONE2:
return c.getTelefone2();
default:
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
}
// RETORNA O VALOR DA CELULA ESPECIFICADA
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
Contato c = linhas.get(rowIndex);
switch (columnIndex) {
case NOME:
c.setNome((String) aValue);
break;
case EMAIL:
c.setEmail((String) aValue);
break;
case SEXO:
c.setSexo((String) aValue);
break;
case ESTADOCIVIL:
c.setEstadoCivil((String) aValue);
break;
case CIDADE:
c.setCidade((String) aValue);
break;
case COMPLEMENTO:
c.setComplemento((String) aValue);
break;
case ESTADO:
c.setEstado((String) aValue);
break;
case RUA:
c.setRua((String) aValue);
break;
case NUMERO:
c.setNumero((String) aValue);
break;
case TELEFONE:
c.setTelefone((String) aValue);
break;
case TELEFONE1:
c.setTelefone1((String) aValue);
break;
case TELEFONE2:
c.setTelefone2((String) aValue);
break;
default:
throw new IndexOutOfBoundsException("columnIndex out of bounds");
}
// NOTIFICA O ATUAL
fireTableCellUpdated(rowIndex, columnIndex);
}
// RETORNA O CONTATO REFERENTE A LINHA ESPECIFICADA
public Contato getContato(int indiceLinha) {
return linhas.get(indiceLinha);
}
// ADICIONA CONTATO ESPECIFICADO AO MODELO
public void addContato(Contato c) {
// ADICIONA REGISTRO
linhas.add(c);
// PEGA A QUANTIDADE DE REGISTROS E SUBTRAI 1 PARA ACHAR O ÚLTIMO INDICE.
// A SUBTRAÇÃO E NECESSARIA PORQUE OS INDICES COMEÇAM DO ZERO
int ultimoIndice = getRowCount() - 1;
// NOTIFICA AS MUDANÇAS
fireTableRowsInserted(ultimoIndice, ultimoIndice);
}
// REMOVE O CONTATO NA LINHA ESPECIFICADA
public void removeContato(int indiceLinha) {
// REMOVE REGISTRO
linhas.remove(indiceLinha);
// NOTIFICA MUDANÇA
fireTableRowsDeleted(indiceLinha, indiceLinha);
}
// ADICIONA UMA LISTA DE CONTATOS NO FINAL DA LISTA
public void addListaDeContatos(List<Contato> c) {
// PEGA O TAMANHO ANTINGO DA TABELA, QUE SERVIRÁ COMO INDICE PARA OS PRIMEIROS NOVOS REGISTROS
int indice = linhas.size();
// ADICIONA OS REGISTROS
linhas.addAll(c);
// NOTIFICA AS MUDANÇAS
fireTableRowsInserted(indice, indice + c.size());
}
// REMOVE TODOS OS REGISTROS
public void limpar() {
//REMOVE TODOS OS ELEMENTOS DA LISTA DE CONTATOS
linhas.clear();
// NOTIFICA A MUDANÇA
fireTableDataChanged();
}
}
public class ContatoDao extends GenericDao {
@SuppressWarnings("unused")
private JTable tabela;
public void salvar(Contato c) throws SQLException{
String insertContato = " INSERT INTO CONTATO ( nome, data_nascimento, numero, rua, cidade, email, sexo, estado, estado_civil, complemento) VALUES (?,?,?,?,?,?,?,?,?,?)";
int id = save(insertContato, c.getNome(), c.getDtNas(), c.getNumero(), c.getRua(), c.getCidade(), c.getEmail(), c.getSexo(), c.getEstado(), c.getEstadoCivil(), c.getComplemento());
String insertTelefones = "INSERT INTO TELEFONE (id, Telefone) VALUES (?,?)";
if (id > -1){
save(insertTelefones, id, c.getTelefone());
save(insertTelefones, id, c.getTelefone1());
save(insertTelefones, id, c.getTelefone2());
}
}
public void alterar (Contato c) throws SQLException{
String update = "UPDATE CONTATOS" +
" SET nome = ?, data_nascimento =?, numero=?, rua=? , cidade=? , email =?, sexo=?, estado=?, estado_civil=?, complemento=?" +
" WHERE id =?";
update(update,c.getNome(), c.getDtNas(), c.getNumero(), c.getRua(), c.getCidade(), c.getEmail(), c.getSexo(), c.getEstado(), c.getEstadoCivil(), c.getComplemento());
String updates = "UPDATE TELEFONE SET Telefone =? ";
save(updates, c.getId(), c.getTelefone(), c.getTelefone1(), c.getTelefone2());
}
public void excluir (long id) throws SQLException{
String delete = "DELETE FROM CONTATO WHERE id = ?";
delete(delete, id);
}
public List<Contato> findContatos() throws SQLException{
List<Contato> contatos = new ArrayList<Contato>();
String select= "SELECT c.id, c.nome, c.data_nascimento, c.numero, c.rua, c.cidade, c.email ,c.sexo," +
"c.estado, c.estado_civil, c.complemento, t.telefone " +
"FROM CONTATO c " +
"LEFT OUTER JOIN TELEFONE t on c.id = t.id";
PreparedStatement stmt = getConnection().prepareStatement(select);
ResultSet rs = stmt.executeQuery();
Contato c = new Contato();
while (rs.next()){
c.setId(rs.getInt("id"));
c.setNome(rs.getString("nome"));
c.setDtNas(rs.getDate("data_nascimento"));
c.setNumero(rs.getString("numero"));
c.setRua(rs.getString("rua"));
c.setCidade(rs.getString("cidade"));
c.setEmail(rs.getString("email"));
c.setSexo(rs.getString("sexo"));
c.setEstado(rs.getString("estado"));
c.setEstadoCivil(rs.getString("estado_civil"));
c.setComplemento(rs.getString("complemento"));
c.setTelefone(rs.getString("telefone"));
c.setTelefone1(rs.getString("telefone"));
c.setTelefone2(rs.getString("telefone"));
contatos.add(c);
}
tabela = new JTable(new AgendaTableModel(contatos));
rs.close();
stmt.close();
return contatos;
}
public Contato finfByName(String nome) throws SQLException{
String select = "SELECT c.id, c.nome, c.data_nascimento, c.numero, c.rua, c.cidade, c.email ,c.sexo," +
"c.estado, c.estado_civil, c.complemento, t.telefone " +
"FROM CONTATO c " +
"LEFT OUTER JOIN TELEFONE t on c.id = t.id WHERE c.nome LIKE ?";
Contato c = new Contato();
PreparedStatement stmt = getConnection().prepareStatement(select);
stmt.setString(1, "%"+nome+"%");
ResultSet rs = stmt.executeQuery();
AgendaTableModel modelo = new AgendaTableModel();
JTable tabela = new JTable(modelo);
while (rs.next()){
String[] dados = new String[13];
//c.setId(rs.getInt("id"));
dados[0] = (rs.getString("nome"));
dados[1] = (rs.getString("email"));
// dados[2] = (rs.getDate("data_nascimento"));
dados[3] = (rs.getString("numero"));
dados[4] = (rs.getString("rua"));
dados[5] = (rs.getString("cidade"));
dados[6] = (rs.getString("sexo"));
dados[7] = (rs.getString("estado"));
dados[8] = (rs.getString("estado_civil"));
dados[9] = (rs.getString("complemento"));
dados[10] = (rs.getString("telefone"));
dados[11] = (rs.getString("telefone"));
dados[12] = (rs.getString("telefone"));
// modelo.addContato(dados);
}
rs.close();
stmt.close();
return c;
}
}
bom dia galera, tenho uma JTable mas não consigo mostrar os dados de uma consulta mySQL na tabela, tah dando erro nessas duas linhas…
// dados[2] = (rs.getDate(“data_nascimento”));
// modelo.addContato(dados);
alguem pode me ajuda… abraços