Subversion Repositories bacoAlunos

Rev

Rev 1310 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

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

import jomm.dao.utils.HibernateUtils;
import jomm.utils.FilesUtils;
import org.apache.log4j.Logger;
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.MetaProcess;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
import pt.estgp.estgweb.services.data.RepositoryService;
import pt.estgp.estgweb.utils.StringsUtils;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.form.processes.NewMetaProcessForm;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

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

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


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

            if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isSuperuser() && UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole(Globals.ROLE_PROCESSES_ADMIN))
                return mapping.findForward("error401");
            NewMetaProcessForm f = (NewMetaProcessForm)form;

            FormFile file = f.getFile();
            RepositoryService repositoryService = new RepositoryService();

            if(file != null && file.getFileSize()>0)
            {
                1.5.0/docs/api/java/lang/System.html">System.out.println("FileName:"+file.getFileName());

                try {
                    HibernateUtils.getCurrentSession().beginTransaction();
                    if(f.getMetaProcess().getRepositoryStream() == null || f.getMetaProcess().getRepositoryStream().length() == 0)
                    {
                        1.5.0/docs/api/java/lang/System.html">System.out.println("AQUI");
                        1.5.0/docs/api/java/lang/String.html">String repositoryId = repositoryService.storeRepositoryFile(file.getInputStream(),file.getContentType(), FilesUtils.getExtension(file.getFileName()),file.getFileSize(),file.getFileName(),"MetaProcess Template file", ResourceAccessControlEnum.authenticatedDomain, null, UserSessionProxy.loadUserSessionFromRequest(request));
                        1.5.0/docs/api/java/lang/System.html">System.out.println(repositoryId);
                        f.getMetaProcess().setRepositoryStream(repositoryId);
                        f.setFileName(file.getFileName());
                    }
                    else
                    {
                        repositoryService.updateRepositoryFile(f.getMetaProcess().getRepositoryStream(),file.getInputStream(),file.getContentType(),FilesUtils.getExtension(file.getFileName()),file.getFileSize(),file.getFileName(),"MetaProcess Template file",ResourceAccessControlEnum.authenticatedDomain);
                        f.setFileName(file.getFileName());
                    }
                    HibernateUtils.getCurrentSession().getTransaction().commit();

                }catch(1.5.0/docs/api/java/lang/Exception.html">Exception e)
                {
                    logger.error(e,e);
                }
            }
            1.5.0/docs/api/java/lang/String.html">String personToAdd = f.getPersonToAdd();

            if(personToAdd.trim().length() > 0)
            {
                if(f.getMetaProcess().getPossiblePersons() == null)
                    f.getMetaProcess().setPossiblePersons("");
                List<String> persons = StringsUtils.getStringsFromSerial(f.getMetaProcess().getPossiblePersons(), ";");
                if(persons == null)
                    persons = new ArrayList<String>();
                if(!persons.contains(personToAdd))
                {
                    f.getMetaProcess().setPossiblePersons(f.getMetaProcess().getPossiblePersons() + personToAdd + ";");
                }

            }

            1.5.0/docs/api/java/lang/String.html">String roleToAdd = f.getRoleToAdd();

            if(roleToAdd.trim().length() > 0)
            {
                if(f.getMetaProcess().getPossibleTargets() == null)
                    f.getMetaProcess().setPossibleTargets("");
                List<String> roles = StringsUtils.getStringsFromSerial(f.getMetaProcess().getPossibleTargets(), ";");
                if(roles == null)
                    roles = new ArrayList<String>();
                if(!roles.contains(roleToAdd))
                {
                    f.getMetaProcess().setPossibleTargets(f.getMetaProcess().getPossibleTargets() + roleToAdd + ";");
                }
            }
            f.setRoleToRemove("");
            f.setRoleToAdd("");
            f.setPersonToRemove("");
            f.setPersonToAdd("");

            return mapping.getInputForward();

        }
        //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 create(ActionMapping mapping,
                                ActionForm form,
                                HttpServletRequest request,
                                HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isSuperuser() && UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole(Globals.ROLE_PROCESSES_ADMIN))
            return mapping.findForward("error401");
        try
        {
            NewMetaProcessForm f = (NewMetaProcessForm)form;
            HibernateUtils.getCurrentSession().beginTransaction();

            ActionMessages errors = f.validate(mapping,request);
            if(!errors.isEmpty())
            {
                saveErrors(request, errors);
                return mapping.getInputForward();
            }

            MetaProcess metaProcess = f.getMetaProcess();
            if(metaProcess.getId() == 0)
            {
                metaProcess.setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date());
                DaoFactory.getMetaProcessDaoImpl().save(metaProcess);
            }
            else
            {
                MetaProcess db = DaoFactory.getMetaProcessDaoImpl().load(metaProcess.getId());
                db.setCategory(metaProcess.getCategory());
                db.setSubCategory(metaProcess.getSubCategory());
                db.setRepositoryStream(f.getMetaProcess().getRepositoryStream());
                db.setDescription(metaProcess.getDescription());
                db.setPossiblePersons(metaProcess.getPossiblePersons());
                db.setPossibleTargets(metaProcess.getPossibleTargets());
                db.setName(metaProcess.getName());
                db.setSrcRole(metaProcess.getSrcRole());
                db.setTargetRole(metaProcess.getTargetRole());
            }


            HibernateUtils.getCurrentSession().getTransaction().commit();
            addMessage(request,"metaprocess.created",metaProcess.getName());
            return mapping.findForward("process.submited");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e, e);
            throw e;
        }
    }

    public ActionForward delete(ActionMapping mapping,
                                ActionForm form,
                                HttpServletRequest request,
                                HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isSuperuser() && UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole(Globals.ROLE_PROCESSES_ADMIN))
            return mapping.findForward("error401");
        try
        {

            NewMetaProcessForm f = (NewMetaProcessForm)form;

            1.5.0/docs/api/java/lang/String.html">String personToRemove = f.getPersonToRemove();


            if(personToRemove.trim().length() > 0)
            {
                if(f.getMetaProcess().getPossiblePersons() == null)
                    f.getMetaProcess().setPossiblePersons("");
                List<String> persons = StringsUtils.getStringsFromSerial(f.getMetaProcess().getPossiblePersons(), ";");
                if(persons == null)
                    persons = new ArrayList<String>();
                if(persons.contains(personToRemove))
                {
                    persons.remove(personToRemove);
                    f.getMetaProcess().setPossiblePersons("");
                    for(1.5.0/docs/api/java/lang/String.html">String p: persons)
                        f.getMetaProcess().setPossiblePersons(f.getMetaProcess().getPossiblePersons() + p + ";");
                }

            }

            1.5.0/docs/api/java/lang/String.html">String roleToRemove = f.getRoleToRemove();

            if(roleToRemove.trim().length() > 0)
            {
                if(f.getMetaProcess().getPossibleTargets() == null)
                    f.getMetaProcess().setPossibleTargets("");
                List<String> roles = StringsUtils.getStringsFromSerial(f.getMetaProcess().getPossibleTargets(), ";");
                if(roles == null)
                    roles = new ArrayList<String>();
                if(roles.contains(roleToRemove))
                {
                    roles.remove(roleToRemove);
                    f.getMetaProcess().setPossibleTargets("");
                    for(1.5.0/docs/api/java/lang/String.html">String r: roles)
                        f.getMetaProcess().setPossibleTargets(f.getMetaProcess().getPossibleTargets() + r + ";");
                }
            }

            f.setRoleToRemove("");
            f.setRoleToAdd("");
            f.setPersonToRemove("");
            f.setPersonToAdd("");
            return mapping.getInputForward();

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



}