package http;
import java.util.Date;
import java.util.List;
import polly.logging.MSG;
import core.PollyLoggingManager;
import core.filters.SecurityLogFilter;
import de.skuzzle.polly.http.api.HttpEvent;
import de.skuzzle.polly.sdk.MyPolly;
import de.skuzzle.polly.sdk.User;
import de.skuzzle.polly.sdk.httpv2.WebinterfaceManager;
import de.skuzzle.polly.sdk.httpv2.html.AbstractHTMLTableModel;
import de.skuzzle.polly.sdk.roles.RoleManager;
import de.skuzzle.polly.sdk.util.DirectedComparator.SortOrder;
import entities.LogEntry;
public class LogEntryTableModel extends AbstractHTMLTableModel<LogEntry> {
private final static String[] COLUMNS = {
MSG.logTableDateCol,
MSG.logTableChannelCol,
MSG.logTableUserCol,
MSG.logTableTypeCol,
MSG.logTableMessageCol
};
public final static String RESULT_KEY = "logSearchResults"; //$NON-NLS-1$
protected final PollyLoggingManager lm;
protected final MyPolly myPolly;
public LogEntryTableModel(PollyLoggingManager lm, MyPolly myPolly) {
this.lm = lm;
this.myPolly = myPolly;
}
@Override
public boolean isFilterable(int column) {
return true;
}
@Override
public boolean isSortable(int column) {
return true;
}
@Override
public String getHeader(int column) {
return COLUMNS[column];
}
@Override
public int getColumnCount() {
return COLUMNS.length;
}
@Override
public boolean isFilterOnly() {
return true;
}
@Override
public Object getCellValue(int column, LogEntry element) {
switch (column) {
case 0: return element.getDate();
case 1: return element.getChannel();
case 2: return element.getNickname();
case 3:
switch (element.getType()) {
default:
case LogEntry.TYPE_JOIN: return MSG.logEntryTypeJoin;
case LogEntry.TYPE_NICKCHANGE: return MSG.logEntryTypeNickchange;
case LogEntry.TYPE_MESSAGE: return MSG.logEntryTypeMessage;
case LogEntry.TYPE_PART: return MSG.logEntryTypePart;
case LogEntry.TYPE_QUIT: return MSG.logEntryTypeQuit;
}
case 4: return element.getMessage();
default:
return ""; //$NON-NLS-1$
}
}
@Override
public Class<?> getColumnClass(int column) {
switch (column) {
case 0:
return Date.class;
default:
return String.class;
}
}
@Override
public List<LogEntry> getData(HttpEvent e) {
final User executor = (User) e.getSession().get(WebinterfaceManager.USER);
List<LogEntry> logs = this.lm.getAllEntries();
if (!this.myPolly.roles().hasPermission(executor, RoleManager.ADMIN_PERMISSION)) {
logs = this.lm.postFilter(logs, new SecurityLogFilter(this.myPolly, executor));
}
return logs;
}
@Override
public int getDefaultSortColumn() {
return 0;
}
@Override
public SortOrder getDefaultSortOrder() {
return SortOrder.DESCENDING;
}
}