package husacct.validate.presentation.tableModels;
import husacct.ServiceProvider;
import husacct.common.locale.ILocaleService;
import husacct.validate.domain.validation.Violation;
import java.util.HashMap;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class ViolationDataModel extends AbstractTableModel {
private static final long serialVersionUID = 7993526243751581611L;
private ILocaleService localeService;
private Violation[] data;
private HashMap<String, String> columnNames;
private String[] columnKeys;
public ViolationDataModel() {
data = new Violation[0];
localeService = ServiceProvider.getInstance().getLocaleService();
columnKeys = new String[] { "Source", "Target", "RuleType", "DependencyKind", "Direct", "Linenumber" };
columnNames = new HashMap<String, String>();
for (String key : columnKeys){
columnNames.put(key, localeService.getTranslatedString(key));
}
}
public void setData(List<Violation> violations) {
data = violations.toArray(new Violation[violations.size()]);
}
@Override
public int getColumnCount() {
return columnNames.size();
}
@Override
public String getColumnName(int columnIndex) {
return columnNames.get(columnKeys[columnIndex]);
}
@Override
public int getRowCount() {
return data.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
String columnKey = columnKeys[columnIndex];
Violation row = data[rowIndex];
if (columnKey.equals(columnKeys[0]))
return row.getClassPathFrom();
else if (columnKey.equals(columnKeys[1]))
return row.getClassPathTo();
else if (columnKey.equals(columnKeys[2])) {
return localeService.getTranslatedString(row.getRuletypeKey());
} else if (columnKey.equals(columnKeys[3])) {
return localeService.getTranslatedString(row.getViolationTypeKey());
} else if (columnKey.equals(columnKeys[4])) {
return localeService.getTranslatedString(row.getIsIndirect() ? localeService.getTranslatedString("Indirect") : localeService.getTranslatedString("Direct"));
} else if (columnKey.equals(columnKeys[5]))
return row.getLinenumber();
else
return null;
}
//JTable uses this method to determine the default renderer/editor for each cell.
@Override
public Class getColumnClass(int c) {
if (c == 5) {
return new Integer(5).getClass();
} else {
String s = "";
return s.getClass();
}
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
}