package pt.estgp.estgweb.filters.filters;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.SessionObject;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.filters.chains.FlowFilter;
import pt.utl.ist.berserk.ServiceRequest;
import pt.utl.ist.berserk.ServiceResponse;
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException;
import pt.utl.ist.berserk.logic.filterManager.FilterParameters;
import java.io.Serializable;
import java.util.Date;
import org.hibernate.ObjectNotFoundException;
import org.apache.log4j.Logger;
import jomm.dao.impl.AbstractDao;
/**
* @author Jorge Machado
* @date 28/Fev/2008
* @time 3:49:03
* @see pt.estgp.estgweb.filters
*/
public class Session
extends FlowFilter
{
private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger =
1.5.0/docs/api/java/util/logging/Logger.html">Logger.
getLogger(Session.
class);
public static final int TIMEOUT_SESSION = ConfigProperties.
getShortProperty("user.session.timeout.minutes") * 60
* 1000;
private void putSessionInArgs
(UserSession userSession, ServiceRequest request
)
{
request.
getServiceParameters().
addParameter(Globals.
USER_SESSION_KEY,userSession
);
}
public void execute
(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters
) throws FilterException,
1.5.0/docs/api/java/lang/Exception.html">Exception {
UserSessionImpl userSession =
null;
try
{
userSession =
(UserSessionImpl
) DaoFactory.
getUserSessionDaoImpl().
get((1.5.0/docs/api/java/io/Serializable.html">Serializable) request.
getRequester());
if(userSession
!=
null && userSession.
getObjects() !=
null)
for(SessionObject sessionObject: userSession.
getObjects())
{
sessionObject.
getXmlObject();
}
if(userSession
!=
null && new 5+0%2Fdocs%2Fapi+Date">Date().
getTime() - userSession.
getSaveDate().
getTime() < TIMEOUT_SESSION
)
{
putSessionInArgs
(userSession,request
);
return;
}
}
catch(ObjectNotFoundException e
)
{
logger.
debug("object not found for requester:" + request.
getRequester());
}
if(userSession ==
null)
{
userSession = DomainObjectFactory.
createUserSessionImpl();
userSession.
setCookie((1.5.0/docs/api/java/lang/String.html">String) request.
getRequester());
}
else
{
userSession.
reset();
}
userSession.
setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date());
DaoFactory.
getUserSessionDaoImpl().
saveOrUpdate(userSession
);
putSessionInArgs
(userSession,request
);
}
}