Subversion Repositories bacoAlunos

Rev

Rev 714 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.web;

import org.hibernate.exception.ConstraintViolationException;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author Jorge Machado
 * @date 29/Fev/2008
 * @time 1:07:55
 * @see pt.estgp.estgweb.web
 */

public class UserSessionProxy
{
//    private UserSession userSession = null;
//
//    private static UserSessionProxy instance;
//
//    private UserSessionProxy(){}
//
//    public static UserSessionProxy getInstance()
//    {
//        if(instance == null)
//            instance = new UserSessionProxy();
//        return instance;
//    }
//
//    public UserSession narrow(HttpServletRequest request) throws Throwable
//    {
//        if(userSession == null ||  userSession.getSaveDate().getTime() - new Date().getTime() < Session.TIMEOUT_SESSION)
//        {
//            try
//            {
//                userSession = loadUserSession(request);
//            }
//            catch (Throwable e)
//            {
//                throw e;
//            }
//
//        }
//        return userSession;
//    }

    public static UserSession loadUserSession(HttpServletRequest request, HttpServletResponse response) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
    {
        try
        {

            IServiceManager sm = ServiceManager.getInstance();
            5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{RequestUtils.getRequester(request, response)};
            UserSession userSession = (UserSession) sm.execute(RequestUtils.getRequester(request, response),"LoadUserSession",args);
            request.setAttribute(Globals.USER_SESSION_KEY,userSession);
            return userSession;
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            if(e instanceof ConstraintViolationException)
            {
//                if(e.getCause() != null && e.getCause().toString() != null && e.getCause().toString().indexOf("Duplicate Entry")>=0)
//                {
                    1.5.0/docs/api/java/lang/System.html">System.out.println(1.5.0/docs/api/java/lang/Thread.html">Thread.currentThread().getId() + " - Duplicada foi guardada noutra thread: " +RequestUtils.getRequester(request, response) );
                    IServiceManager sm = ServiceManager.getInstance();
                    5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{RequestUtils.getRequester(request, response)};
                    UserSession userSession = (UserSession) sm.execute(RequestUtils.getRequester(request, response),"LoadUserSession",args);
                    request.setAttribute(Globals.USER_SESSION_KEY,userSession);
                    return userSession;
//                }
            }
            else
                throw e;
        }
    }

    public static UserSession createUserSession(HttpServletRequest request, HttpServletResponse response,1.5.0/docs/api/java/lang/String.html">String requester) throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable
    {
        try
        {

            IServiceManager sm = ServiceManager.getInstance();
            5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{requester};
            UserSession userSession = (UserSession) sm.execute(requester,"LoadUserSession",args);
            request.setAttribute(Globals.USER_SESSION_KEY,userSession);
            return userSession;
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            throw e;
        }
    }

    public static UserSession loadUserSessionFromRequest(HttpServletRequest request)
    {
        return (UserSession) request.getAttribute(Globals.USER_SESSION_KEY);
    }

    public static boolean isAuthenticated(HttpServletRequest request)
    {
        return request.getAttribute(Globals.USER_SESSION_KEY) != null && ((UserSession)request.getAttribute(Globals.USER_SESSION_KEY)).getUser() != null;
    }


}