Subversion Repositories bacoAlunos

Rev

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

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

import pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsController;
import pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsAdminController;
import pt.estgp.estgweb.web.form.courseunits.CourseUnitsForm;
import pt.estgp.estgweb.web.form.courses.CourseForm;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.web.exceptions.NoCookiesException;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.domain.views.CourseView;
import pt.estgp.estgweb.filters.exceptions.NotFoundException;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.services.common.ISearchResults;
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 pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.*;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;

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

public class CoursesController extends CourseUnitsController
{

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


    public ActionForward startNew(ActionMapping mapping,
                                  ActionForm form,
                                  HttpServletRequest request,
                                  HttpServletResponse response)
            throws ServletException
    {
        CourseForm cF = (CourseForm) form;
        CourseView cV = cF.getCourseView();
        request.setAttribute("CourseView",cV);
        cF.setCourseView(cV);
        return mapping.findForward("submit");
    }

    private void load(CourseForm cF, HttpServletRequest request, HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException, NoCookiesException
    {
        1.5.0/docs/api/java/lang/String.html">String code = cF.getCourseView().getCode();
        long id = cF.getCourseView().getId();
       
        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[]{"serializable"};
        5+0%2Fdocs%2Fapi+Object">Object[] args;
        1.5.0/docs/api/java/lang/String.html">String serviceName;
        if(code != null)
        {
            args = new 5+0%2Fdocs%2Fapi+Object">Object[]{code,true};
            serviceName = "LoadCourseByCode";
        }
        else
        {
            args = new 5+0%2Fdocs%2Fapi+Object">Object[]{id,true};
            serviceName = "LoadCourse";
        }
        CourseView cV = (CourseView) sm.execute(RequestUtils.getRequester(request, response), serviceName, args, names);
        request.setAttribute("CourseView",cV);
        cF.setCourseView(cV);
    }

    public ActionForward load(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws ServletException
    {
        try
        {
            load((CourseForm) form,request,response);
            return mapping.findForward("load");
        }
        catch (FilterChainFailedException e)
        {
            return mapping.findForward("error401");
        }
        catch (NotFoundException e)
        {
            return mapping.findForward("error404");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e, e);
            return mapping.findForward("error500");
        }
    }

    public ActionForward edit(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws ServletException
    {
        try
        {
            load((CourseForm) form,request,response);
            return mapping.findForward("submit");
        }
        catch (FilterChainFailedException e)
        {
            return mapping.findForward("error401");
        }
        catch (NotFoundException e)
        {
            return mapping.findForward("error404");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e, e);
            return mapping.findForward("error500");
        }
    }

    public ActionForward submit(ActionMapping mapping,
                                ActionForm form,
                                HttpServletRequest request,
                                HttpServletResponse response)
            throws ServletException
    {
        try
        {
            CourseForm cF = (CourseForm) 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[]{"object"};
            5+0%2Fdocs%2Fapi+Object">Object[] args;

            if(cF.getStudiesPlan() == null || cF.getStudiesPlan().getFileSize() <= 0)
                args = new 5+0%2Fdocs%2Fapi+Object">Object[]{cF.getCourseView(),null,null,0,null};
            else                              //ring name, int size, String contentType, String extensio
                args = new 5+0%2Fdocs%2Fapi+Object">Object[]{cF.getCourseView(),cF.getStudiesPlan().getInputStream(),cF.getStudiesPlan().getFileName(),cF.getStudiesPlan().getFileSize(),cF.getStudiesPlan().getContentType()};

            long id = cF.getCourseView().getId();
            CourseView cV = (CourseView) sm.execute(RequestUtils.getRequester(request, response), "SubmitCourse", args, names);
            request.setAttribute("CourseView",cV);
            if(cV.getHtmlResult() != null)
            {
                return mapping.findForward("submit");    
            }

            cF.setCourseView(cV);
            if(id > 0)
                addMessage(request,"course.updated.success","" + cV.getCode());
            else
                addMessage(request,"course.created.success","" + cV.getCode());
            return mapping.getInputForward();
        }
        catch (FilterChainFailedException e)
        {
            return mapping.findForward("error401");
        }
        catch (NotFoundException e)
        {
            return mapping.findForward("error404");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e, e);
            return mapping.findForward("error500");
        }
    }
}