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
)
{
// System.out.println("AQUI");
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;
}
}