Boa noite pessoal, ta começando aqui mais um "corujão da programação" e pior que a coruja já começou com a asa quebrada, chega de trova e let's code. ;)
No meu sistema pego todos dados de um DB mysql, tranquilo, mas sempre que inicializo a minha janela com a visualização de todos os registros do DB, todas a linhas da tabela na coluna de Date ficam com a mesma data do último registro, verifiquei o DB e lá as datas estão corretas, o meu método de pegar os dados também, aparentemente tá OK, então acho que a bomba pode ser com o tableModel. Vem o código relevante abaixo:
Metodo que puxa os dados do DB:public List<Cliente> getClientes(){
Connection connection = new ConnectionFactory().getConnection();
try {
Calendar cal = Calendar.getInstance();
List<Cliente> clientes = new ArrayList<Cliente>();
PreparedStatement prepStm = connection.prepareStatement(SELECTALL);
ResultSet rs = prepStm.executeQuery(SELECTALL);
rs.first();
do{
cal.setTimeInMillis(rs.getDate("data_nasc").getTime());
clientes.add(new Cliente(rs.getString("nome"), rs.getString("endereco"), rs.getString("telefone"), cal));
clientes.get(clientes.size()-1).setId(rs.getInt("idCliente"));
}while(rs.next());
return clientes;
}
catch (SQLException ex) {
ex.printStackTrace();
return null;
}
finally{
try {
connection.close();
}
catch (SQLException ex) {
throw new RuntimeException("Quebra na conexão com o database");
}
}
O TableModel aqui em baixo:
public class ClienteTableModel extends AbstractTableModel{
private ClienteDAO cdao = new ClienteDAO();
public static final String[] COLUNAS = {"Nome","Endereco","Telefone","Data de nascimento"};
private List<Cliente> dados;
public ClienteTableModel(){
dados = cdao.getClientes();
}
public ClienteTableModel(List<Cliente> clientes){
dados = clientes;
}
public Object getValueAt(int rowIndex, int columnIndex) {
Cliente cliente = dados.get(rowIndex);
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
switch(columnIndex){
case 0: return cliente.getNome();
case 1: return cliente.getEndereco();
case 2: return cliente.getTelefone();
case 3: return sdf.format(new Date (cliente.getData().getTimeInMillis()));
case 4: return cliente.getId();
default: throw new IndexOutOfBoundsException("Opção não encontrada");
}
}
public Cliente getPessoa(int row){
if(row < dados.size()){
return dados.get(row);
}
else{
throw new IndexOutOfBoundsException("Numero maior que o tamanho da lista");
}
}
}
Acho que isso é o mais importante, desculpa voltar com mais um abacaxi para vcs. :D
