Subversion Repositories bacoAlunos

Rev

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

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;
}