package pt.estgp.estgweb.filters.filters;
import pt.estgp.estgweb.filters.chains.OwnerControlFilter;
import pt.estgp.estgweb.filters.chains.ContextControlFilter;
import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException;
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.IOwned;
import pt.estgp.estgweb.domain.IContextTimerObject;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.services.expceptions.ServiceParameterException;
import pt.utl.ist.berserk.ServiceRequest;
import pt.utl.ist.berserk.ServiceResponse;
import pt.utl.ist.berserk.logic.filterManager.FilterParameters;
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException;
import org.apache.log4j.Logger;
import java.util.Date;
public abstract class ContextTimer
extends ContextControlFilter
{
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(ContextTimer.
class);
public static final 5+0%2Fdocs%2Fapi+Date">Date MIN_DATE =
new 5+0%2Fdocs%2Fapi+Date">Date(0
);
public static final 5+0%2Fdocs%2Fapi+Date">Date MAX_DATE =
new 5+0%2Fdocs%2Fapi+Date">Date(1.5.0/docs/api/java/lang/Integer.html">Integer.
MAX_VALUE);
public void execute
(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters
) throws FilterException,
1.5.0/docs/api/java/lang/Exception.html">Exception
{
UserSession userSession =
(UserSession
) request.
getServiceParameters().
getParameter(Globals.
USER_SESSION_KEY);
5+0%2Fdocs%2Fapi+Date">Date now =
new 5+0%2Fdocs%2Fapi+Date">Date();
5+0%2Fdocs%2Fapi+Date">Date startDate = getStartDate
(request, response,filterParameters
);
if(startDate ==
null)
startDate = MIN_DATE
;
5+0%2Fdocs%2Fapi+Date">Date endDate = getEndDate
(request, response,filterParameters
);
if(endDate ==
null)
endDate = MAX_DATE
;
if(now.
getTime() < startDate.
getTime() || now.
getTime() > endDate.
getTime())
{
if(userSession.
getUser() !=
null)
logger.
warn(userSession.
getUser().
getUsername() +
": try access out of context time in " + now +
" should access between [" + startDate +
" :: " + endDate +
"]");
else
logger.
warn("Mr:" + userSession.
getCookie() +
": try access out of context time in " + now +
" should access between [" + startDate +
" :: " + endDate +
"]");
throw new AccessDeniedOperationException
("fail.timer");
}
}
public abstract 5+0%2Fdocs%2Fapi+Date">Date getStartDate
(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters
) throws ServiceParameterException
;
public abstract 5+0%2Fdocs%2Fapi+Date">Date getEndDate
(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters
) throws ServiceParameterException
;
}