package com.kapti.administration.tablemodels;
import com.kapti.client.user.User;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.ResourceBundle;
import javax.swing.table.AbstractTableModel;
/**
*
* @author Dieter
*/
public class UsersTableModel extends AbstractTableModel {
private static final ResourceBundle translations = ResourceBundle.getBundle("com/kapti/administration/translations");
private final static String[] columnTitles = {translations.getString("ID_COLUMN"), translations.getString("NICKNAME_COLUMN"), translations.getString("EMAIL_COLUMN"), translations.getString("LASTNAME_COLUMN"), translations.getString("FIRSTNAME_COLUMN"), translations.getString("ROLE_COLUMN"), translations.getString("REGDATE_COLUMN"), translations.getString("POINTS_COLUMN"), translations.getString("CASH_COLUMN"), translations.getString("STARTAMOUNT_COLUMN"), translations.getString("SSN_COLUMN")};
private final static Class[] columnTypes = {Integer.class, String.class, String.class, String.class, String.class, String.class, Date.class, Integer.class, Double.class, Double.class, Long.class};
private final static boolean[] editableColumns = new boolean[]{false, true, true, true, true, true, false, false, false, false, true};
Map<Integer,User> users = new HashMap<Integer,User>();
public UsersTableModel() {
}
public void setUsers(Collection<User> users) {
this.users.clear();
int rownr = 0;
for(User u : users){
this.users.put(rownr++, u);
}
}
public User[] getUsers() {
return (User[]) users.values().toArray();
}
public int getRowCount() {
return users.size();
}
public int getColumnCount() {
return columnTitles.length;
}
public User getUserAt(int rowIndex) {
return users.get(rowIndex);
}
public void setUserAt(int rowIndex, User user) {
users.put(rowIndex, user);
this.fireTableRowsUpdated(rowIndex, rowIndex);
}
public void removeUserAt(int rowIndex) {
users.remove(rowIndex);
fireTableRowsDeleted(rowIndex, rowIndex);
}
public void removeUser(User user) {
for(Entry<Integer, User> entry : users.entrySet())
if(entry.getValue().equals(user))
removeUserAt(entry.getKey());
}
public void addUser(User user) {
int rownr = users.size();
users.put(rownr, user);
this.fireTableRowsInserted(rownr, rownr);
}
public Object getValueAt(int rowIndex, int columnIndex) {
User user = users.get(rowIndex);
switch (columnIndex) {
case 0:
return user.getId();
case 1:
return user.getNickname();
case 2:
return user.getEmail();
case 3:
return user.getLastname();
case 4:
return user.getFirstname();
case 5:
return user.getRole().toString();
case 6:
return user.getRegdate();
case 7:
return user.getPoints();
case 8:
return user.getCash();
case 9:
return user.getStartamount();
case 10:
return user.getRijksregisternummer();
default:
return null;
}
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
User user = users.get(rowIndex);
switch (columnIndex) {
case 1:
user.setNickname((String) aValue);
break;
case 2:
user.setEmail((String) aValue);
break;
case 3:
user.setLastname((String) aValue);
break;
case 4:
user.setFirstname((String) aValue);
break;
case 5:
user.setRole((User.Role) aValue);
break;
case 7:
user.setPoints((Integer) aValue);
break;
case 8:
user.setCash((Double) aValue);
break;
case 10:
user.setRijksregisternummer((Long) aValue);
break;
}
}
@Override
public String getColumnName(int col) {
return columnTitles[col];
}
@Override
public Class getColumnClass(int col) {
return columnTypes[col];
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
//return editableColumns[columnIndex];
}
}