package org.magmax.masterjava.tema10.jdbc_example; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import javax.swing.JOptionPane; import javax.swing.table.AbstractTableModel; import org.magmax.masterjava.tema10.jdbc_example.persistencia.Cuenta; import org.magmax.masterjava.tema10.jdbc_example.persistencia.CuentaDao; public class ModelCuentas extends AbstractTableModel { private static final long serialVersionUID = -8518507207353115885L; private String[] headers = new String[] {"Codigo", "Cliente", "Email", "Saldo"}; private CuentaDao dao = new CuentaDao(); public int getColumnCount() { return headers.length; } public int getRowCount() { try { return dao.findAll().size(); } catch (SQLException e) { e.printStackTrace(); } return 0; } public Object getValueAt(int row, int col) { // Sí, es altamente ineficiente, pero lo estoy haciendo para practicar... List<Cuenta> list; try { list = dao.findAll(); } catch (SQLException e) { e.printStackTrace(); list = new ArrayList<Cuenta>(); } if (row >= list.size() || col >= headers.length) return null; Cuenta cuenta = list.get(row); switch(col) { case 0: return cuenta.getCodigo(); case 1: return cuenta.getCliente(); case 2: return cuenta.getEmail(); case 3: return cuenta.getSaldo(); } return null; } @Override public Class<?> getColumnClass(int columnIndex) { if (columnIndex == 3) return Float.class; return String.class; } @Override public String getColumnName(int column) { return headers[column]; } public void addRow(Cuenta cuenta) { try { dao.create(cuenta); fireTableDataChanged(); } catch (SQLException e) { e.printStackTrace(); JOptionPane.showMessageDialog(null, e.getMessage(), "Error insertando objeto", JOptionPane.ERROR_MESSAGE); } } public Cuenta getRow(int row) throws SQLException { return dao.read((String)this.getValueAt(row, 0)); } public void deleteRow(int row) throws SQLException { dao.delete(dao.read((String)this.getValueAt(row, 0))); this.fireTableRowsDeleted(row, row); } public void update(Cuenta cuenta) throws SQLException { dao.update(cuenta); this.fireTableDataChanged(); } }