package com.transmem.action;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.ServletContext;
import java.io.IOException;
import java.sql.SQLException;
import com.transmem.data.db.Users;
/**
* Action class for logout operation.
*
* @version 0.1
* @author Ted Wen
* @date Jan. 2007
*/
public class LogoutAction extends BaseAction
{
private Logger log_ = Logger.getLogger(LogoutAction.class.getName());
public LogoutAction()
{
super();
}
public void execute(ServletParams request) throws ServletException, IOException
{
log_.entering("LogoutAction","execute");
Session session = request.getSession();
Users usr = session.getUser();
if (usr != null)
{
// decrement online user count
ServletContext ctx = session.getServletContext();
int usercount = ((Integer)ctx.getAttribute("UserCount")).intValue();
if (usercount > 0)
{
usercount --;
ctx.setAttribute("UserCount", usercount); //assume this is synchronized
log_.info("UserCount = "+usercount);
}
else
{
log_.severe("UserCount not synchronised: "+usercount);
}
//TODO: update user usage or online info
session.removeAttribute("user"); //necessary before invalidate?
session.invalidate();
setNextPage(PageLinks.HOME_PAGE);
}
//else
//{
// log_.warning("Trying logout without a user in session.");
// throw new IOException("LoginAction.execute(): Logout error.");
//}
}
}