package org.jboss.portlet.forums.ui.event;
import java.util.Date;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;
import org.jboss.portal.identity.User;
import org.jboss.portlet.forums.ui.BaseController;
import org.jboss.portlet.forums.ui.PortalUtil;
public class FloodControlListener implements ActionListener {
private long floodInterval;
public FloodControlListener() {
super();
try
{
floodInterval = BaseController.getForumsModule().getFloodInterval();
} catch (Exception e) {
e.printStackTrace();
}
}
public void processAction(ActionEvent event) throws AbortProcessingException {
long lastPostTime = 0;
try
{
User user = PortalUtil.getUser();
if (user != null) {
Date lastPost = BaseController.getForumsModule().findLastPostDateForUser(user);
if (lastPost != null)
{
lastPostTime = lastPost.getTime();
}
}
} catch (Exception e) {
e.printStackTrace();
}
if (lastPostTime > 0)
{
long now = new Date().getTime();
long interval = (now - lastPostTime) / 1000;
if (interval < floodInterval)
{
throw new AbortProcessingException("interval < floodInterval");
}
}
}
}
|