Subversion Repositories bacoAlunos

Rev

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

package pt.estgp.estgweb.web.controllers;

import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import pt.estgp.estgweb.web.form.AddRolesForm;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.utils.Globals;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.Serializable;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;

/**
 * @author Jorge Machado
 * @date 26/Fev/2008
 * @time 18:01:54
 * @see pt.estgp.estgweb.web
 */

public class AddRolesController extends ApplicationDispatchController
{

    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(AddRolesController.class);

    protected static final 1.5.0/docs/api/java/lang/String.html">String TARGET_ROLES_KEY = AddRolesForm.TARGET_ROLES_KEY;

    public ActionForward start(ActionMapping mapping,
                               ActionForm form ,
                               HttpServletRequest request,
                               HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        try
        {
            UserSessionImpl sess = (UserSessionImpl) UserSessionProxy.loadUserSession(request,response);
            sess.remove(TARGET_ROLES_KEY);
            sess.serialize(request,response);
            return mapping.findForward("from.add.role");
        }
        catch(FilterChainFailedException e)
        {
            return mapping.findForward("error401");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e,e);
            throw e;
        }
    }

    public ActionForward addRole(ActionMapping mapping,
                                 ActionForm form ,
                                 HttpServletRequest request,
                                 HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        try
        {
            AddRolesForm addRolesForm = (AddRolesForm) form;
            UserSessionImpl sess = (UserSessionImpl) UserSessionProxy.loadUserSession(request,response);
            List<String> l = (List<String>) sess.get(TARGET_ROLES_KEY);
            if(l == null)
                l = new ArrayList<String>();

            if(!isInTargetRoles(addRolesForm.getTargetRolesStr(),l))
            {
                l.add(addRolesForm.getTargetRolesStr());
                sess.put(TARGET_ROLES_KEY, (1.5.0/docs/api/java/io/Serializable.html">Serializable) l);
                sess.serialize(request,response);
            }
            else
            {
                addErrorWithKeys(request,"forms.object.already.in.list","user.role." + addRolesForm.getTargetRolesStr());
            }
            addRolesForm.setSelectedRoles(l);
        }
        catch(FilterChainFailedException e)
        {
            return mapping.findForward("error401");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e,e);
            throw e;
        }
        return mapping.findForward("from.add.role");
    }

    public ActionForward removeRole(ActionMapping mapping,
                                    ActionForm form ,
                                    HttpServletRequest request,
                                    HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {

        AddRolesForm addRolessForm = (AddRolesForm) form;
        UserSessionImpl sess = (UserSessionImpl) request.getAttribute(Globals.USER_SESSION_KEY);
        List<String> roles = (List<String>) sess.get(TARGET_ROLES_KEY);

        if(roles != null || roles.size() != 0)
        {
            1.5.0/docs/api/java/util/Iterator.html">Iterator iterator = roles.iterator();
            while (iterator.hasNext())
            {
                1.5.0/docs/api/java/lang/String.html">String role = (1.5.0/docs/api/java/lang/String.html">String) iterator.next();
                if(role.equals(addRolessForm.getRole()))
                {
                    iterator.remove();
                }
            }
        }
        addRolessForm.setTargetRoles(roles);
        addRolessForm.setSelectedRoles(roles);
        sess.put(TARGET_ROLES_KEY, (1.5.0/docs/api/java/io/Serializable.html">Serializable) roles);
                sess.serialize(request,response);
        return mapping.findForward("from.add.role");
    }

    private boolean isInTargetRoles(1.5.0/docs/api/java/lang/String.html">String role, 5+0%2Fdocs%2Fapi+List">List l)
    {
        return l.contains(role);
    }
}