package http;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import core.PollyLoggingManager;
import core.filters.DateLogFilter;
import core.filters.LogFilter;
import de.skuzzle.polly.http.api.HttpEvent;
import de.skuzzle.polly.sdk.MyPolly;
import de.skuzzle.polly.sdk.User;
import de.skuzzle.polly.sdk.exceptions.DatabaseException;
import de.skuzzle.polly.sdk.httpv2.WebinterfaceManager;
import de.skuzzle.polly.sdk.roles.RoleManager;
import entities.LogEntry;
public class ReplayTableModel extends LogEntryTableModel {
public ReplayTableModel(PollyLoggingManager lm, MyPolly myPolly) {
super(lm, myPolly);
}
@Override
public boolean isFilterOnly() {
return false;
}
@Override
public List<LogEntry> getData(HttpEvent e) {
final User u = (User) e.getSession().get(WebinterfaceManager.USER);
if (!this.myPolly.users().isSignedOn(u)) {
return Collections.emptyList();
}
final LogFilter dateFilter = new DateLogFilter(new Date(u.getLastIdleTime()));
final List<LogEntry> all = new ArrayList<>();
for (final String channel : this.myPolly.irc().getChannels()) {
if (this.myPolly.irc().isOnChannel(channel, u.getCurrentNickName())
|| this.myPolly.roles()
.hasPermission(u, RoleManager.ADMIN_PERMISSION)) {
try {
List<LogEntry> logs = this.lm.preFilterChannel(channel);
logs = this.lm.postFilter(logs, dateFilter);
all.addAll(logs);
} catch (DatabaseException e1) {
e1.printStackTrace();
}
}
}
return all;
}
}