import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableModel; import java.util.*; /** * */ /** * @author admin * */ public class CrackerTableModel extends DefaultTableModel { public static int[] columnWidths = {120, 120, 300, 110}; private static String[] columnNames = {"Username", "Password", "Hash", "Time"}; public static int defaultNumRows = 20; private ArrayList<User> users; private boolean editable; /** * */ public CrackerTableModel() { super(); users = new ArrayList<User>(); editable = true; } public void setEditable(boolean val) { editable = val; } public void setPassword(String password, String hash, long time) { for(User user : users) { if(user.getHash().equals(hash)) { user.setPassword(password); user.setTimeForCrack(time); this.fireTableDataChanged(); break; } } } public void addRow(User user) { users.add(user); this.fireTableDataChanged(); } /* (non-Javadoc) * @see javax.swing.table.TableModel#getColumnCount() */ public int getColumnCount() { return columnNames.length; } public String getColumnName(int col) { return columnNames[col]; } /* (non-Javadoc) * @see javax.swing.table.TableModel#getRowCount() */ public int getRowCount() { if(users == null) return 0; return users.size(); } /* (non-Javadoc) * @see javax.swing.table.TableModel#getValueAt(int, int) */ public Object getValueAt(int rowIndex, int columnIndex) { User user = users.get(rowIndex); if(user == null) return null; switch(columnIndex) { case 0: return user.getUsername(); case 1: return user.getPassword(); case 2: return user.getHash(); case 3: return (user.isCracked() ? user.getTimeForCrack() : ""); } return null; } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { // TODO Auto-generated method stub return editable; } @Override public void setValueAt(Object value, int rowIndex, int columnIndex) { if(rowIndex >= users.size()) { users.add(new User()); } User user = users.get(rowIndex); switch(columnIndex) { case 0: user.setUsername((String) value); break; case 1: user.setPassword((String) value); break; case 2: user.setHash((String) value); break; case 3: user.setTimeForCrack((Long) value); break; } } }