Subversion Repositories bacoAlunos

Rev

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

package pt.estgp.estgweb.web.controllers.configuration;

import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.services.directories.xsd.*;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.form.configuration.DirectoriesForm;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Iterator;

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

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


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

        if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
        {
            return mapping.findForward("error401");
        }
        DirectoriesForm df = (DirectoriesForm) form;
        IServiceManager sm = ServiceManager.getInstance();
        1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{};
        5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{df.getId()};

        try
        {
            Directory d = (Directory) sm.execute(RequestUtils.getRequester(request, response), "LoadDirectoryService", args, names);
            df.setDirectory(d);
        }
        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("directory");
    }
    public ActionForward addLeaf(ActionMapping mapping,
                                               ActionForm form,
                                               HttpServletRequest request,
                                               HttpServletResponse response)
            throws ServletException
    {

        if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
        {
            return mapping.findForward("error401");
        }
        DirectoriesForm df = (DirectoriesForm) form;
        1.5.0/docs/api/java/lang/String.html">String idParent = df.getId();

        LeafT leaf = LeafTImpl.findLeaf(df.getDirectory(), idParent);
        if(leaf == null)
        {
            addError(request,"directories.leaf.not.found",idParent);
            return mapping.findForward("directories");
        }
        addMessage(request,"directories.add.leaf",idParent);
        leaf.getLeaf().add(new LeafTImpl());
        return mapping.findForward("directory");
    }


    public ActionForward refresh(ActionMapping mapping,
                                    ActionForm form,
                                    HttpServletRequest request,
                                    HttpServletResponse response)
            throws ServletException
    {

        if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
        {
            return mapping.findForward("error401");
        }


        addMessage(request, "directories.refresh");

        return mapping.findForward("directory");
    }

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

        if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
        {
            return mapping.findForward("error401");
        }

        DirectoriesForm df = (DirectoriesForm) form;

        IServiceManager sm = ServiceManager.getInstance();
        1.5.0/docs/api/java/lang/String.html">String[] names = new 1.5.0/docs/api/java/lang/String.html">String[]{};
        5+0%2Fdocs%2Fapi+Object">Object[] args = new 5+0%2Fdocs%2Fapi+Object">Object[]{df.getDirectory()};

        try {
            sm.execute(RequestUtils.getRequester(request, response), "SaveDirectoryService", args, names);
        }
        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;
        }

        addMessage(request, "directories.saved");

        return mapping.findForward("directories");
    }

    public ActionForward cancel(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws ServletException
    {

        if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
        {
            return mapping.findForward("error401");
        }
        addMessage(request, "directories.canceled");
        return mapping.findForward("directories");
    }


    public ActionForward removeLeaf(ActionMapping mapping,
                                 ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response)
            throws ServletException
    {

        if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
        {
            return mapping.findForward("error401");
        }
        DirectoriesForm df = (DirectoriesForm) form;
        1.5.0/docs/api/java/lang/String.html">String idParent = df.getId();

        LeafT leaf = LeafTImpl.removeLeaf(df.getDirectory(), idParent);
        if(leaf == null)
        {
            addError(request,"directories.leaf.not.found",idParent);
            return mapping.findForward("directories");
        }
        addMessage(request, "directories.removed.leaf", idParent);
        leaf.getLeaf().add(new LeafTImpl());
        return mapping.findForward("directory");
    }


    public ActionForward addRight(ActionMapping mapping,
                                 ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response)
            throws ServletException
    {

        if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
        {
            return mapping.findForward("error401");
        }
        DirectoriesForm df = (DirectoriesForm) form;
        1.5.0/docs/api/java/lang/String.html">String idParent = df.getId();

        LeafT leaf = LeafTImpl.findLeaf(df.getDirectory(), idParent);
        if(leaf == null)
        {
            addError(request,"directories.leaf.not.found",idParent);
            return mapping.findForward("directories");
        }

        leaf.getRights().getRight().add(new RightImpl());
        addMessage(request, "directories.add.right", idParent);
        return mapping.findForward("directory");
    }

    public ActionForward removeRight(ActionMapping mapping,
                                   ActionForm form,
                                   HttpServletRequest request,
                                   HttpServletResponse response)
            throws ServletException
    {

        if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
        {
            return mapping.findForward("error401");
        }
        DirectoriesForm df = (DirectoriesForm) form;
        1.5.0/docs/api/java/lang/String.html">String idParent = df.getId();

        LeafT leaf = LeafTImpl.findLeaf(df.getDirectory(), idParent);
        if(leaf == null)
        {
            addError(request,"directories.leaf.not.found",idParent);
            return mapping.findForward("directories");
        }


        Iterator<RightsT.Right> iter = leaf.getRights().getRight().iterator();
        while(iter.hasNext())
        {
            RightsT.Right r =iter.next();
            if(r.getName().equals(df.getRname()) && r.getTarget().equals(df.getRtarget()) && df.getRtype().equals(r.getType()))
            {
                iter.remove();
            }
        }
        addMessage(request, "directories.remove.right", df.getRname(),df.getRtarget(),df.getRtype());
        return mapping.findForward("directory");
    }

    public ActionForward addDirRight(ActionMapping mapping,
                                  ActionForm form,
                                  HttpServletRequest request,
                                  HttpServletResponse response)
            throws ServletException
    {

        if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
        {
            return mapping.findForward("error401");
        }
        DirectoriesForm df = (DirectoriesForm) form;
        1.5.0/docs/api/java/lang/String.html">String idParent = df.getId();

        df.getDirectory().getRights().getRight().add(new RightImpl());
        addMessage(request, "directories.add.right");
        return mapping.findForward("directory");
    }

    public ActionForward removeDirRight(ActionMapping mapping,
                                     ActionForm form,
                                     HttpServletRequest request,
                                     HttpServletResponse response)
            throws ServletException
    {

        if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
        {
            return mapping.findForward("error401");
        }
        DirectoriesForm df = (DirectoriesForm) form;

        Iterator<RightsT.Right> iter = df.getDirectory().getRights().getRight().iterator();
        while(iter.hasNext())
        {
            RightsT.Right r =iter.next();
            if(r.getName().equals(df.getRname()) && r.getTarget().equals(df.getRtarget()) && df.getRtype().equals(r.getType()))
            {
                iter.remove();
            }
        }
        addMessage(request, "directories.remove.right", df.getRname(),df.getRtarget(),df.getRtype());
        return mapping.findForward("directory");
    }

    public ActionForward addDirGroup(ActionMapping mapping,
                                     ActionForm form,
                                     HttpServletRequest request,
                                     HttpServletResponse response)
            throws ServletException
    {

        if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
        {
            return mapping.findForward("error401");
        }
        DirectoriesForm df = (DirectoriesForm) form;
        1.5.0/docs/api/java/lang/String.html">String idParent = df.getId();

        df.getDirectory().getGroupsDeclaration().getGroup().add(new GroupImpl());
        addMessage(request, "directories.add.group");
        return mapping.findForward("directory");
    }

    public ActionForward removeDirGroup(ActionMapping mapping,
                                        ActionForm form,
                                        HttpServletRequest request,
                                        HttpServletResponse response)
            throws ServletException
    {

        if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
        {
            return mapping.findForward("error401");
        }
        DirectoriesForm df = (DirectoriesForm) form;

        Iterator<GroupDeclarationT.Group> iter = df.getDirectory().getGroupsDeclaration().getGroup().iterator();
        while(iter.hasNext())
        {
            GroupDeclarationT.1.5.0/docs/api/java/security/acl/Group.html">Group g =iter.next();
            if(g.getName().equals(df.getRname()))
            {
                iter.remove();
            }
        }
        addMessage(request, "directories.remove.group");
        return mapping.findForward("directory");
    }



}