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.assessments;

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.Globals;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.views.*;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.controllers.AddRolesController;
import pt.estgp.estgweb.web.form.assessments.AssessmentsForm;
import pt.estgp.estgweb.web.utils.DatesUtils;
import pt.estgp.estgweb.web.utils.DomainUtils;
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.io.Serializable;
import java.sql.Time;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by IntelliJ IDEA.
 * User: Filipe Matos
 * Date: 21/Jul/2013
 * Time: 14:40:41
 * To change this template use File | Settings | File Templates.
 */

public class AssessmentController extends AddRolesController{

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

    public ActionForward nothing(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        //este metodo serve apenas para actualizar paginas

        return mapping.getInputForward();
    }

    public ActionForward changeAssessmentType(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        AssessmentsForm assessmentForm = (AssessmentsForm) form;
        assessmentForm.getAssessmentQuestionTypesSelfEvaluation().remove("text");
        assessmentForm.getAssessmentQuestionTypesSelfEvaluation().remove("practical");

        return mapping.getInputForward();
    }

    public ActionForward updateRadioBox(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        AssessmentsForm assessmentForm = (AssessmentsForm) form;
        AssessmentView assessmentView = assessmentForm.getAssessmentView();

        if(request.getParameter("questionId") != null && request.getParameter("candidateId") != null)
        {
            int questionIndex = 1.5.0/docs/api/java/lang/Integer.html">Integer.parseInt(request.getParameter("questionId"));
            int candidateIndex = 1.5.0/docs/api/java/lang/Integer.html">Integer.parseInt(request.getParameter("candidateId"));
            int itemIndex=0;

            AssessmentQuestionView qView = assessmentView.getQuestions().get(questionIndex);

            if(request.getParameter("itemId") != null && qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_MATRIX))
            {
                itemIndex = 1.5.0/docs/api/java/lang/Integer.html">Integer.parseInt(request.getParameter("itemId"));
            }

            int index=0;
            for(AssessmentQuestionItemView iView : qView.getQuestionItems())
            {
                List<AssessmentQuestionPossibleAnswerView> listaPAV = iView.getPossibleAnswers();
                if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_RADIO))
                {
                    for (int i=0;i<listaPAV.size();i++)
                    {
                        if(i!=candidateIndex){
                            listaPAV.get(i).setCorrect(false);
                        }
                    }
                }

                if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_MATRIX))
                {
                    for (int i=0;i<listaPAV.size();i++)
                    {
                        if(index==itemIndex)
                        {
                            if(i!=candidateIndex){
                            listaPAV.get(i).setCorrect(false);
                            }
                        }
                    }
                }
                index++;
            }

        }

        return mapping.getInputForward();
    }
   

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

        try
        {   ///PARA TESTAR SE APAGA TUDO
            UserSessionImpl sess = (UserSessionImpl) UserSessionProxy.loadUserSessionFromRequest(request);
            List<String> nomesSessao = (List<String>) sess.get("nomesSessao");
            if(nomesSessao!=null)
            {
                for(int i=0;i<nomesSessao.size();i++)
                {
                    sess.remove(nomesSessao.get(i));
                    sess.serialize(request,response);
                }
                sess.remove("nomesSessao");
                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 addQuestion(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        AssessmentsForm assessmentForm = (AssessmentsForm) form;
       
        AssessmentView assessmentView = assessmentForm.getAssessmentView();
        long id1 = assessmentForm.getCounterAndDec();

        AssessmentQuestionView qView = new AssessmentQuestionView();
        qView.setId(id1);
        qView.setType(assessmentForm.getQuestionType());
        ///meter os meus tipos no globals
        if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_TEXT) || qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_PRACTICAL))
        {
            AssessmentQuestionItemView iView = new AssessmentQuestionItemView();
            iView.setId(assessmentForm.getCounterAndDec());
            AssessmentQuestionPossibleAnswerView pView = new AssessmentQuestionPossibleAnswerView();
            pView.setId(assessmentForm.getCounterAndDec());
            //pView.setType(qView.getType());
            iView.getPossibleAnswers().add(pView);
            qView.getQuestionItems().add(iView);
        }
        else if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_CHECK) || qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_RADIO))
        {
            AssessmentQuestionItemView iView = new AssessmentQuestionItemView();
            iView.setId(assessmentForm.getCounterAndDec());
            qView.getQuestionItems().add(iView);
        }

        assessmentView.getQuestions().add(qView);
       

        return mapping.getInputForward();
    }

    public ActionForward removeQuestion(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        AssessmentsForm assessmentForm = (AssessmentsForm) form;
        AssessmentView assessmentView = assessmentForm.getAssessmentView();

        if(request.getParameter("questionId") != null)
        {
            int questionIndex = 1.5.0/docs/api/java/lang/Integer.html">Integer.parseInt(request.getParameter("questionId"));

            AssessmentQuestionView qView = assessmentView.getQuestions().get(questionIndex);

            1.5.0/docs/api/java/lang/String.html">String questionsToDelete = assessmentView.getDeletedQuestions()+qView.getId()+",";
            1.5.0/docs/api/java/lang/String.html">String itemsToDelete = assessmentView.getDeletedItems();
            1.5.0/docs/api/java/lang/String.html">String candidatesToDelete = assessmentView.getDeletedCandidates();

            for(AssessmentQuestionItemView iView : qView.getQuestionItems())
            {
                itemsToDelete = itemsToDelete+iView.getId()+",";
                for(AssessmentQuestionPossibleAnswerView pView : iView.getPossibleAnswers())
                {
                    candidatesToDelete = candidatesToDelete+pView.getId()+",";
                }
            }

            assessmentView.setDeletedQuestions(questionsToDelete);
            assessmentView.setDeletedItems(itemsToDelete);
            assessmentView.setDeletedCandidates(candidatesToDelete);

            assessmentView.getQuestions().remove(questionIndex);
        }

        return mapping.getInputForward();
    }

    public ActionForward addItemOption(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        AssessmentsForm assessmentForm = (AssessmentsForm) form;
        AssessmentView assessmentView = assessmentForm.getAssessmentView();
        long id = assessmentForm.getCounterAndDec();

        if(request.getParameter("questionId") != null)
        {
            int questionIndex = 1.5.0/docs/api/java/lang/Integer.html">Integer.parseInt(request.getParameter("questionId"));

            AssessmentQuestionView qView = assessmentView.getQuestions().get(questionIndex);
            AssessmentQuestionItemView iView = new AssessmentQuestionItemView();
            iView.setId(id);

            if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_MATRIX))
            {
                for(AssessmentQuestionPossibleAnswerView candidateLabel : qView.getPossibleLabels())
                {
                    AssessmentQuestionPossibleAnswerView pView = new AssessmentQuestionPossibleAnswerView();
                    pView.setId(assessmentForm.getCounterAndDec());
                    iView.getPossibleAnswers().add(pView);
                }
            }

            qView.getQuestionItems().add(iView);
        }

        return mapping.getInputForward();
    }

    public ActionForward removeItemOption(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        AssessmentsForm assessmentForm = (AssessmentsForm) form;
        AssessmentView assessmentView = assessmentForm.getAssessmentView();

        if(request.getParameter("questionId") != null && request.getParameter("itemId") != null)
        {
            int questionIndex = 1.5.0/docs/api/java/lang/Integer.html">Integer.parseInt(request.getParameter("questionId"));
            int itemIndex = 1.5.0/docs/api/java/lang/Integer.html">Integer.parseInt(request.getParameter("itemId"));

            AssessmentQuestionView qView = assessmentView.getQuestions().get(questionIndex);
            AssessmentQuestionItemView iView = qView.getQuestionItems().get(itemIndex);

            1.5.0/docs/api/java/lang/String.html">String itemsToDelete = ""+iView.getId()+",";
            1.5.0/docs/api/java/lang/String.html">String candidatesToDelete = "";
            for(AssessmentQuestionPossibleAnswerView cView : iView.getPossibleAnswers())
            {
                candidatesToDelete = candidatesToDelete+cView.getId()+",";
            }

            assessmentView.setDeletedItems(assessmentView.getDeletedItems().concat(itemsToDelete));
            assessmentView.setDeletedCandidates(assessmentView.getDeletedCandidates().concat(candidatesToDelete));

            qView.getQuestionItems().remove(itemIndex);
        }
        return mapping.getInputForward();
    }

    public ActionForward addCandidateOption(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        AssessmentsForm assessmentForm = (AssessmentsForm) form;
        AssessmentView assessmentView = assessmentForm.getAssessmentView();

        if(request.getParameter("questionId") != null)
        {
            int questionIndex = 1.5.0/docs/api/java/lang/Integer.html">Integer.parseInt(request.getParameter("questionId"));

            AssessmentQuestionView qView = assessmentView.getQuestions().get(questionIndex);

            if(!qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_TEXT) && qView.getQuestionItems().size() == 0)
            {
                addError(request,"assessment.submit.form.error.question.need.hoption.first");
                return mapping.getInputForward();
            }

            if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_MATRIX))
                qView.getPossibleLabels().add(new AssessmentQuestionPossibleAnswerView());

            for(AssessmentQuestionItemView iView : qView.getQuestionItems())
            {
                long id = assessmentForm.getCounterAndDec();
                AssessmentQuestionPossibleAnswerView pView = new AssessmentQuestionPossibleAnswerView();
                pView.setId(id);
                //pView.setType(qView.getType());
                iView.getPossibleAnswers().add(pView);
            }
        }

        return mapping.getInputForward();
    }

    public ActionForward removeCandidateOption(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        AssessmentsForm assessmentForm = (AssessmentsForm) form;
        AssessmentView assessmentView = assessmentForm.getAssessmentView();

        if(request.getParameter("questionId") != null && request.getParameter("candidateId") != null)
        {
            int questionIndex = 1.5.0/docs/api/java/lang/Integer.html">Integer.parseInt(request.getParameter("questionId"));
            int candidateIndex = 1.5.0/docs/api/java/lang/Integer.html">Integer.parseInt(request.getParameter("candidateId"));

            AssessmentQuestionView qView = assessmentView.getQuestions().get(questionIndex);

            if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_MATRIX))
                qView.getPossibleLabels().remove(candidateIndex);

            1.5.0/docs/api/java/lang/String.html">String candidatesToDelete = "";
            for(AssessmentQuestionItemView iView : qView.getQuestionItems())
            {
                AssessmentQuestionPossibleAnswerView pView = iView.getPossibleAnswers().get(candidateIndex);
                iView.getPossibleAnswers().remove(candidateIndex);
                candidatesToDelete = candidatesToDelete+pView.getId()+",";
            }

            assessmentView.setDeletedCandidates(assessmentView.getDeletedCandidates().concat(candidatesToDelete));
        }

        return mapping.getInputForward();
    }


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

            AssessmentView view = assessmentsForm.getAssessmentView();
            view.getCourseUnit().setId(assessmentsForm.getCourseUnitId());

            for(AssessmentQuestionView qView : view.getQuestions())
            {
                if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_MATRIX))
                {  //tratar das questoes de matriz
                    for(AssessmentQuestionItemView iView : qView.getQuestionItems())
                    {
                        int index = 0;
                        for(AssessmentQuestionPossibleAnswerView pView : iView.getPossibleAnswers())
                        {
                            pView.setTextpt(qView.getPossibleLabels().get(index).getTextpt());
                            index++;
                        }
                    }
                }
                //tratar das imagens
                if(qView.getBigImage() != null && qView.getBigImage().getFileSize() !=0)
                {
                    1.5.0/docs/api/java/lang/String.html">String description = view.getTitle()+qView.getTextpt();
                    qView.setImage(DomainUtils.getNewImage(qView.getBigImage(),description));
                }
                //tratar das cota��es das possiveis respostas
                if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_RADIO))
                {
                    for(AssessmentQuestionPossibleAnswerView pView : qView.getQuestionItems().get(0).getPossibleAnswers())
                    {
                        if(pView.isCorrect())
                            pView.setQuotation(qView.getQuotation());
                    }
                }
                if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_CHECK))
                {   double quotationSplit=0;
                    int questionsCorrected=0;
                    for(AssessmentQuestionPossibleAnswerView pView : qView.getQuestionItems().get(0).getPossibleAnswers())
                    {
                        if(pView.isCorrect())
                            questionsCorrected++;
                    }
                    //teste
                    double cotacao = qView.getQuotation();
                    double questionCorrectedD = questionsCorrected;
                    quotationSplit = cotacao / questionCorrectedD;
                    //quotationSplit = qView.getQuotation() / questionsCorrected;
                    //valor a atribuir as respostas possiveis obtido
                    //falta atribuir
                    for(AssessmentQuestionPossibleAnswerView pView : qView.getQuestionItems().get(0).getPossibleAnswers())
                    {
                        if(pView.isCorrect())
                            pView.setQuotation(quotationSplit);
                    }
                }
                if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_MATRIX))
                {
                    double quotationSplit=0;
                    int questionsCorrected=0;
                    //correr items e respostas possiveis
                    for(AssessmentQuestionItemView iView : qView.getQuestionItems())
                    {
                        for(AssessmentQuestionPossibleAnswerView pView : iView.getPossibleAnswers())
                        {
                            if(pView.isCorrect())
                                questionsCorrected++;
                        }
                    }
                    double cotacao = qView.getQuotation();
                    double questionCorrectedD = questionsCorrected;
                    quotationSplit = cotacao / questionCorrectedD;
                    //quotationSplit = qView.getQuotation() / questionsCorrected;
                    //valor a atribuir as respostas possiveis obtido
                    //falta atribuir
                    for(AssessmentQuestionItemView iView : qView.getQuestionItems())
                    {
                        for(AssessmentQuestionPossibleAnswerView pView : iView.getPossibleAnswers())
                        {
                            if(pView.isCorrect())
                                pView.setQuotation(quotationSplit);
                        }
                    }
                }


            }

            IServiceManager sm = ServiceManager.getInstance();
            1.5.0/docs/api/java/lang/String.html">String[] names = {"serializable"};
            5+0%2Fdocs%2Fapi+Object">Object[] args = {view};
            boolean newAssessment = true;
            if(view.getId() > 0)
                newAssessment = false;

            AssessmentView assessmentView;
            assessmentView = (AssessmentView) sm.execute(RequestUtils.getRequester(request,response),"CreateEditAssessment",args,names);

            if(assessmentView != null)
            {
                if(newAssessment)
                    addMessage(request, "assessment.message.created.success");
                else
                    addMessage(request, "assessment.message.edited.success");
            }

            return mapping.findForward("serviceZone");
        }
        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 edit(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        try {
            IServiceManager sm = ServiceManager.getInstance();
            1.5.0/docs/api/java/lang/String.html">String[] names = {"serializable"};
            5+0%2Fdocs%2Fapi+Object">Object[] args = {new 1.5.0/docs/api/java/lang/Long.html">Long(request.getParameter("id"))};

            AssessmentView view;
            view = (AssessmentView) sm.execute(RequestUtils.getRequester(request,response),"LoadEditAssessment",args,names);

            if(view != null)
            {
                AssessmentsForm assessmentForm = (AssessmentsForm) form;
                assessmentForm.setCourseUnitId(view.getCourseUnit().getId());


                for(AssessmentQuestionView qView : view.getQuestions())
                {
                    if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_MATRIX))
                    {
                        AssessmentQuestionItemView iView = qView.getQuestionItems().get(0);
                        for(AssessmentQuestionPossibleAnswerView pView : iView.getPossibleAnswers())
                        {
                            AssessmentQuestionPossibleAnswerView pViewAux = new AssessmentQuestionPossibleAnswerView();
                            pViewAux.setTextpt(pView.getTextpt());
                            qView.getPossibleLabels().add(pViewAux);
                        }
                    }
                }

                assessmentForm.setAssessmentView(view);

                return mapping.getInputForward();
            }
            return mapping.findForward("serviceZone");
        }
        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 clone(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        try {
            IServiceManager sm = ServiceManager.getInstance();
            1.5.0/docs/api/java/lang/String.html">String[] names = {"serializable"};
            5+0%2Fdocs%2Fapi+Object">Object[] args = {new 1.5.0/docs/api/java/lang/Long.html">Long(request.getParameter("id"))};

            AssessmentView assessmentView;
            assessmentView = (AssessmentView) sm.execute(RequestUtils.getRequester(request,response),"LoadCloneAssessment",args,names);

            if(assessmentView != null)
            {
                AssessmentsForm assessmentForm = (AssessmentsForm) form;
                assessmentForm.setCourseUnitId(assessmentView.getCourseUnit().getId());

                assessmentView.setId(assessmentForm.getCounterAndDec());
                assessmentView.setTitle(null);

                for(AssessmentQuestionView qView : assessmentView.getQuestions())
                {
                    qView.setId(assessmentForm.getCounterAndDec());
                    for(AssessmentQuestionItemView iView : qView.getQuestionItems())
                    {
                        iView.setId(assessmentForm.getCounterAndDec());
                        for(AssessmentQuestionPossibleAnswerView pView : iView.getPossibleAnswers())
                        {
                            pView.setId(assessmentForm.getCounterAndDec());
                        }
                    }
                }

                for(AssessmentQuestionView qView : assessmentView.getQuestions())
                {
                    if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_MATRIX))
                    {
                        AssessmentQuestionItemView iView = qView.getQuestionItems().get(0);
                        for(AssessmentQuestionPossibleAnswerView pAView : iView.getPossibleAnswers())
                        {
                            AssessmentQuestionPossibleAnswerView pAViewAux = new AssessmentQuestionPossibleAnswerView();
                            pAViewAux.setTextpt(pAView.getTextpt());
                            qView.getPossibleLabels().add(pAViewAux);
                        }
                    }
                }

                assessmentForm.setAssessmentView(assessmentView);

                return mapping.getInputForward();
            }
            return mapping.findForward("serviceZone");
        }
        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 schedule(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        try {
            IServiceManager sm = ServiceManager.getInstance();
            1.5.0/docs/api/java/lang/String.html">String[] names = {"serializable"};
            5+0%2Fdocs%2Fapi+Object">Object[] args = {new 1.5.0/docs/api/java/lang/Long.html">Long(request.getParameter("id"))};

            AssessmentView assessmentView;
            assessmentView = (AssessmentView) sm.execute(RequestUtils.getRequester(request,response),"LoadScheduleAssessment",args,names);

            if(assessmentView != null)
            {
                AssessmentsForm assessmentForm = (AssessmentsForm) form;
                assessmentForm.setAssessmentView(assessmentView);
                assessmentForm.setPossibleUsersResponse(assessmentView.getCourseUnit().getStudentsOrderedByName());

                assessmentForm.setSelectedUsers(new 1.5.0/docs/api/java/lang/String.html">String[assessmentView.getResponses().size()]);
                for(int i=0;i<assessmentView.getResponses().size();i++)
                {
                    assessmentForm.getSelectedUsers()[i] = 1.5.0/docs/api/java/lang/String.html">String.valueOf(assessmentView.getResponses().get(i).getOwner().getId());
                }

                return mapping.findForward("schedule");
            }
            return mapping.findForward("serviceZone");
        }
        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 saveSchedule(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        try
        {
            AssessmentsForm assessmentsForm = (AssessmentsForm) form;

            AssessmentView view = assessmentsForm.getAssessmentView();
            //tratar as datas
            if(view.getType().equals(Globals.ASSESSMENT_TYPE_EVALUATION))
            {
                view.setStartDate(DatesUtils.getDateFromString(assessmentsForm.getStartDate()));
                view.setEndDate(DatesUtils.getDateFromString(assessmentsForm.getStartDate())); //a data de fim fica a mesma que a data de inicio
                view.getEndDate().setHours(23);
                view.getEndDate().setMinutes(59);
                view.getEndDate().setSeconds(59);
            }
            if(view.getType().equals(Globals.ASSESSMENT_TYPE_SELFEVALUATION))
            {
                view.setStartDate(DatesUtils.getDateFromString(assessmentsForm.getStartDate()));
                view.setEndDate(DatesUtils.getDateFromString(assessmentsForm.getEndDate()));
                view.getEndDate().setHours(23);
                view.getEndDate().setMinutes(59);
                view.getEndDate().setSeconds(59);
            }
            //tratar dos tempos
            1.5.0/docs/api/java/lang/String.html">String[] times = assessmentsForm.getTime().split("\\:");
            int hours = 1.5.0/docs/api/java/lang/Integer.html">Integer.parseInt(times[0]);
            int minutes = 1.5.0/docs/api/java/lang/Integer.html">Integer.parseInt(times[1]);
            view.setTime(new 1.5.0/docs/api/java/sql/Time.html">Time(hours,minutes,0));
            //tratar os alunos selecionados
            List<Long> selectedUsersId = new ArrayList<Long>();
            for(int i=0;i<assessmentsForm.getSelectedUsers().length;i++)
            {
                selectedUsersId.add(1.5.0/docs/api/java/lang/Long.html">Long.parseLong(assessmentsForm.getSelectedUsers()[i]));
            }

            //chamada ao servi�o
            IServiceManager sm = ServiceManager.getInstance();
            1.5.0/docs/api/java/lang/String.html">String[] names = {"serializable"};
            5+0%2Fdocs%2Fapi+Object">Object[] args = {view,selectedUsersId,request};

            AssessmentView assessmentView;
            assessmentView = (AssessmentView) sm.execute(RequestUtils.getRequester(request,response),"ScheduleAssessment",args,names);

            if(assessmentView != null)
            {
                    addMessage(request, "assessment.message.scheduled.success");
            }

            return mapping.findForward("serviceZone");
        }
        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 editSchedule(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        try {
            IServiceManager sm = ServiceManager.getInstance();
            1.5.0/docs/api/java/lang/String.html">String[] names = {"serializable"};
            5+0%2Fdocs%2Fapi+Object">Object[] args = {new 1.5.0/docs/api/java/lang/Long.html">Long(request.getParameter("id"))};

            AssessmentView assessmentView;
            assessmentView = (AssessmentView) sm.execute(RequestUtils.getRequester(request,response),"LoadScheduleAssessment",args,names);

            if(assessmentView != null)
            {
                AssessmentsForm assessmentForm = (AssessmentsForm) form;
                assessmentForm.setAssessmentView(assessmentView);
                assessmentForm.setPossibleUsersResponse(assessmentView.getCourseUnit().getStudentsOrderedByName());

                assessmentForm.setSelectedUsers(new 1.5.0/docs/api/java/lang/String.html">String[assessmentView.getResponses().size()]);
                for(int i=0;i<assessmentView.getResponses().size();i++)
                {
                    assessmentForm.getSelectedUsers()[i] = 1.5.0/docs/api/java/lang/String.html">String.valueOf(assessmentView.getResponses().get(i).getOwner().getId());
                }

                return mapping.findForward("editSchedule");
            }
            return mapping.findForward("serviceZone");
        }
        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 saveEditSchedule(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        try
        {
            AssessmentsForm assessmentsForm = (AssessmentsForm) form;

            AssessmentView view = assessmentsForm.getAssessmentView();

            //tratar os alunos selecionados
            List<Long> selectedUsersId = new ArrayList<Long>();
            for(int i=0;i<assessmentsForm.getSelectedUsers().length;i++)
            {
                selectedUsersId.add(1.5.0/docs/api/java/lang/Long.html">Long.parseLong(assessmentsForm.getSelectedUsers()[i]));
            }

            //chamada ao serviço
            IServiceManager sm = ServiceManager.getInstance();
            1.5.0/docs/api/java/lang/String.html">String[] names = {"serializable"};
            5+0%2Fdocs%2Fapi+Object">Object[] args = {view,selectedUsersId,request};

            AssessmentView assessmentView;
            assessmentView = (AssessmentView) sm.execute(RequestUtils.getRequester(request,response),"ScheduleAssessment",args,names);

            if(assessmentView != null)
            {
                    addMessage(request, "assessment.message.scheduled.success");
            }

            return mapping.findForward("serviceZone");
        }
        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 loadResponse(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        AssessmentsForm assessmentsForm = (AssessmentsForm) form;
        create(mapping,form,request,response);

        try
        {
            long resp = 1.5.0/docs/api/java/lang/Long.html">Long.parseLong(request.getParameter("resp"));

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

            AssessmentResponseView assessmentResponseView;
            assessmentResponseView = (AssessmentResponseView) sm.execute(RequestUtils.getRequester(request,response),"LoadAssessmentResponse",args,names);

            if(assessmentResponseView != null)
            {
                assessmentsForm.setAssessmentResponseView(assessmentResponseView);
                AssessmentView assessmentView = assessmentResponseView.getAssessment();
                for(AssessmentQuestionView qView : assessmentView.getQuestions())
                {
                    if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_MATRIX))
                    {
                        AssessmentQuestionItemView iView = qView.getQuestionItems().get(0);
                        for(AssessmentQuestionPossibleAnswerView pView : iView.getPossibleAnswers())
                        {
                            AssessmentQuestionPossibleAnswerView pViewAux = new AssessmentQuestionPossibleAnswerView();
                            pViewAux.setTextpt(pView.getTextpt());
                            qView.getPossibleLabels().add(pViewAux);
                        }
                    }
                }
                assessmentsForm.setAssessmentView(assessmentView);

                return mapping.findForward("response");

            }
            return mapping.findForward("serviceZone");
        }
        catch (FilterChainFailedException e)
        {
            return mapping.findForward("error401");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e, e);
            return mapping.findForward("error500");
        }
    }


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

        AssessmentView assessmentView = assessmentsForm.getAssessmentView();
        AssessmentResponseView rView = assessmentsForm.getAssessmentResponseView();

        for(AssessmentQuestionView qView : assessmentView.getQuestions())
        {
            for(AssessmentQuestionItemView iView : qView.getQuestionItems())
            {
                AssessmentQuestionAnswerView aView = new AssessmentQuestionAnswerView();
                aView.setId(-1);

                for(AssessmentQuestionPossibleAnswerView pView : iView.getPossibleAnswers())
                {
                    if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_TEXT))
                    {
                        1.5.0/docs/api/java/lang/String.html">String textValue = iView.getTextareaValue();
                        if(textValue != null && textValue.length() > 0)
                        {
                            aView.setTextAnswer(textValue);
                            aView.setPossibleAnswer(pView);
                            pView.getAnswers().add(aView);
                        }
                    }
                    else if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_PRACTICAL))
                    {
                        if(iView.getUploadFile() != null && iView.getUploadFile().getFileSize()>0)
                        {
                            aView.setPossibleAnswer(pView);
                            pView.getAnswers().add(aView);
                        }
                    }
                    else if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_RADIO) || qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_MATRIX))
                    {
                        1.5.0/docs/api/java/lang/String.html">String radioValue = iView.getRadioValue();
                        if(radioValue != null)
                        {
                            long pId = 1.5.0/docs/api/java/lang/Long.html">Long.parseLong(iView.getRadioValue());
                            if(pView.getId() == pId)
                            {
                                aView.setPossibleAnswer(pView);
                                pView.getAnswers().add(aView);
                            }
                        }
                    }
                    else if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_CHECK))
                    {
                        if(pView.isCheckbox())
                        {
                            AssessmentQuestionAnswerView aView2 = new AssessmentQuestionAnswerView();
                            aView2.setId(-1);
                            aView2.setPossibleAnswer(pView);
                            pView.getAnswers().add(aView2);
                        }
                    }
                }
            }
        }

          try
        {
            IServiceManager sm = ServiceManager.getInstance();
            1.5.0/docs/api/java/lang/String.html">String[] names = {"serializable"};
            5+0%2Fdocs%2Fapi+Object">Object[] args = {rView.getId(),assessmentView};

            AssessmentView aView;
            aView = (AssessmentView) sm.execute(RequestUtils.getRequester(request,response),"InsertAssessmentAnswers",args,names);

            if(aView != null)
            {
                addMessage(request, "assessment.message.answered.success");
            }

            return mapping.findForward("home");
        }
        catch (FilterChainFailedException e)
        {
            return mapping.findForward("error401");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e, e);
            return mapping.findForward("error500");
        }
    }


    public ActionForward startCorrect(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        try {
            IServiceManager sm = ServiceManager.getInstance();
            1.5.0/docs/api/java/lang/String.html">String[] names = {"serializable"};
            5+0%2Fdocs%2Fapi+Object">Object[] args = {new 1.5.0/docs/api/java/lang/Long.html">Long(request.getParameter("id"))};

            AssessmentView assessmentView;
            assessmentView = (AssessmentView) sm.execute(RequestUtils.getRequester(request,response),"LoadAssessment",args,names);

            if(assessmentView != null)
            {
                AssessmentsForm assessmentForm = (AssessmentsForm) form;
                assessmentForm.setAssessmentView(assessmentView);

                return mapping.findForward("startCorrect");
            }
            return mapping.findForward("serviceZone");
        }
        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 confirmChoicesCorrect(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        AssessmentsForm assessmentsForm = (AssessmentsForm) form;
        AssessmentView assessmentView = assessmentsForm.getAssessmentView();
        //atirar configurações da correcção para a sessão, primeiro remover o que lá estiver depois adicionar
        try
        {
            UserSessionImpl sess = (UserSessionImpl) UserSessionProxy.loadUserSession(request,response);
            sess.remove("correctionConf");
            sess.serialize(request,response);
            List<String> correctionConf = new ArrayList<String>();
            correctionConf.add(assessmentsForm.getCorrectionSelection());
            correctionConf.add(assessmentsForm.getCorrectionAnonymous());
            sess.put("correctionConf", (1.5.0/docs/api/java/io/Serializable.html">Serializable) correctionConf);
            sess.serialize(request,response);
        }
        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;
        }
        /////////////////////////////////////////////////////////////////////////////

        //se a correcção for prova a prova
        try{
            if(assessmentsForm.getCorrectionSelection().equals("assessment"))
            {

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

               List<AssessmentResponseView> responsesViews = null;
               responsesViews = (List<AssessmentResponseView>) sm.execute(RequestUtils.getRequester(request,response),"LoadAssessmentResponses",args,names);
               assessmentsForm.setAssessmentResponsesView(responsesViews);

            }
            //se a correcção for questão a questão
            else if(assessmentsForm.getCorrectionSelection().equals("question"))
            {

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

               List<AssessmentQuestionView> questionViews = null;
               questionViews = (List<AssessmentQuestionView>) sm.execute(RequestUtils.getRequester(request,response),"LoadQuestionsResponses",args,names);
               assessmentsForm.setAssessmentQuestionsRView(questionViews);
            }

        }
        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("listQuestionsOrResponsesToCorrect");
    }

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

        try
        {   //buscar configurações da correcção à sessão
            UserSessionImpl sess = (UserSessionImpl) UserSessionProxy.loadUserSession(request,response);
            List<String> l = (List<String>) sess.get("correctionConf");
            assessmentsForm.setCorrectionSelection(l.get(0));
            assessmentsForm.setCorrectionAnonymous(l.get(1));
            /////////////////////////////////////////////////////////
            long resp = 1.5.0/docs/api/java/lang/Long.html">Long.parseLong(request.getParameter("respId"));

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

            AssessmentResponseView assessmentResponseView;
            assessmentResponseView = (AssessmentResponseView) sm.execute(RequestUtils.getRequester(request,response),"LoadAssessmentResponse",args,names);

            if(assessmentResponseView != null)
            {
                AssessmentView assessmentView = assessmentResponseView.getAssessment();
                List<AssessmentQuestionView> questionList = new ArrayList<AssessmentQuestionView>(assessmentView.getQuestions());
                //so interessam as questoes de texto e praticas
                for(AssessmentQuestionView qView : questionList)
                {
                    if(qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_MATRIX)
                            || qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_CHECK)
                            || qView.getType().equals(Globals.ASSESSMENT_QUESTION_TYPE_RADIO))
                    {
                        assessmentView.getQuestions().remove(qView);
                    }
                    //verificar se existe resposta a esta questão
                    else{
                        boolean exist = false;
                        for(AssessmentQuestionItemView iView : qView.getQuestionItems())
                        {
                            for(AssessmentQuestionPossibleAnswerView pView : iView.getPossibleAnswers())
                            {
                                for(AssessmentQuestionAnswerView aView : assessmentResponseView.getAnswers())
                                {
                                    if(aView.getPossibleAnswer().getId() == pView.getId())
                                    {
                                        exist = true;
                                    }
                                }
                            }
                        }
                        if(!exist)
                        {
                            assessmentView.getQuestions().remove(qView);    
                        }
                    }
                }
                ///////////////////////////////////////////////////
                //apagar as answers que ja estao corrigidas (corrigidas automaticamente) ou corrigidas questao a questao
                List<AssessmentQuestionAnswerView> answerList = new ArrayList<AssessmentQuestionAnswerView>(assessmentResponseView.getAnswers());
                for(AssessmentQuestionAnswerView aView : answerList)
                {
                    if(aView.isEvaluated())
                    {
                        assessmentResponseView.getAnswers().remove(aView);
                    }
                }

                assessmentsForm.setAssessmentResponseView(assessmentResponseView);
                assessmentsForm.setAssessmentView(assessmentView);

                return mapping.findForward("loadCorrectResponse");

            }
            return mapping.findForward("serviceZone");
        }
        catch (FilterChainFailedException e)
        {
            return mapping.findForward("error401");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e, e);
            return mapping.findForward("error500");
        }
    }

    public ActionForward submitCorrectResponse(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        AssessmentsForm assessmentsForm = (AssessmentsForm) form;
        AssessmentResponseView assessmentResponseView = assessmentsForm.getAssessmentResponseView();
       
        try
        {
            IServiceManager sm = ServiceManager.getInstance();
            1.5.0/docs/api/java/lang/String.html">String[] names = {"serializable"};
            5+0%2Fdocs%2Fapi+Object">Object[] args = {assessmentResponseView};

            AssessmentResponseView aRView;
            aRView = (AssessmentResponseView) sm.execute(RequestUtils.getRequester(request,response),"EvaluateAssessmentResponse",args,names);

            if(aRView != null)
            {
                addMessage(request, "assessment.message.corrected.sucess");
                confirmChoicesCorrect(mapping,form,request,response);
                return mapping.findForward("listQuestionsOrResponsesToCorrect");
            }
            return mapping.findForward("serviceZone");
        }
        catch (FilterChainFailedException e)
        {
            return mapping.findForward("error401");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e, e);
            return mapping.findForward("error500");
        }
    }

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

        try
        {   //buscar configuracoes da correccao a sessao
            UserSessionImpl sess = (UserSessionImpl) UserSessionProxy.loadUserSession(request,response);
            List<String> l = (List<String>) sess.get("correctionConf");
            assessmentsForm.setCorrectionSelection(l.get(0));
            assessmentsForm.setCorrectionAnonymous(l.get(1));
            /////////////////////////////////////////////////////////
            long question = 1.5.0/docs/api/java/lang/Long.html">Long.parseLong(request.getParameter("questId"));

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

            List<AssessmentQuestionAnswerView> assessmentQuestionAnswersView;
            assessmentQuestionAnswersView = (List<AssessmentQuestionAnswerView>) sm.execute(RequestUtils.getRequester(request,response),"LoadQuestionResponses",args,names);

            if(assessmentQuestionAnswersView != null)
            {
                assessmentsForm.setAssessmentQuestionAnswers(assessmentQuestionAnswersView);
                assessmentsForm.setAssessmentQuestionsRView(new ArrayList<AssessmentQuestionView>());
                //achar a quest�o
                for(AssessmentQuestionView qView : assessmentQuestionAnswersView.get(0).getResponse().getAssessment().getQuestions())
                {
                    if(qView.getId()==question)
                    {
                        assessmentsForm.getAssessmentQuestionsRView().add(qView);
                        break;
                    }
                }
                return mapping.findForward("loadQuestionResponses");

            }
            return mapping.findForward("serviceZone");
        }
        catch (FilterChainFailedException e)
        {
            return mapping.findForward("error401");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e, e);
            return mapping.findForward("error500");
        }
    }

public ActionForward submitCorrectQuestionResponses(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        AssessmentsForm assessmentsForm = (AssessmentsForm) form;
        List<AssessmentQuestionAnswerView> questionAnswersView = assessmentsForm.getAssessmentQuestionAnswers();

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

           AssessmentView aView;
            aView = (AssessmentView) sm.execute(RequestUtils.getRequester(request,response),"EvaluateQuestionResponses",args,names);

            if(aView != null)
            {
                addMessage(request, "assessment.message.question.corrected.sucess");
                assessmentsForm.setAssessmentView(aView);//para o m�todo seguinte funcionar
                confirmChoicesCorrect(mapping,form,request,response);
                return mapping.findForward("listQuestionsOrResponsesToCorrect");
            }
            return mapping.findForward("serviceZone");
        }
        catch (FilterChainFailedException e)
        {
            return mapping.findForward("error401");
        }
        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
        {
            logger.error(e, e);
            return mapping.findForward("error500");
        }
    }


    public ActionForward generateEvaluationsPdf(ActionMapping mapping,
                              ActionForm form,
                              HttpServletRequest request,
                              HttpServletResponse response)
            throws 1.5.0/docs/api/java/lang/Throwable.html">Throwable, ServletException
    {
        try {
            IServiceManager sm = ServiceManager.getInstance();
            1.5.0/docs/api/java/lang/String.html">String[] names = {"serializable"};
            5+0%2Fdocs%2Fapi+Object">Object[] args = {new 1.5.0/docs/api/java/lang/Long.html">Long(request.getParameter("id"))};

            AssessmentView view;
            view = (AssessmentView) sm.execute(RequestUtils.getRequester(request,response),"GenerateEvaluationsPdf",args,names);

            if(view != null)
            {
                addMessage(request, "assessment.message.evaluations.pdf.generated.sucess");
                return mapping.findForward("listAssessments");
            }
            return mapping.findForward("listAssessments");
        }
        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;
        }
    }
}