Subversion Repositories bacoAlunos

Rev

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

package pt.estgp.estgweb.web.form.courseunits;

import org.apache.log4j.Logger;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.views.CourseUnitEvaluationView;
import pt.estgp.estgweb.domain.views.CourseUnitView;

import javax.servlet.http.HttpServletRequest;

/**
 * @author Jorge Machado
 * @date 2/Jun/2008
 * @time 14:28:59
 * @see pt.estgp.estgweb.web.form.blogs
 */

public class CourseUnitEvaluationForm extends CourseUnitsForm
{
    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(CourseUnitEvaluationForm.class);

    CourseUnitEvaluationView courseUnitEvaluationView = new CourseUnitEvaluationView();

    long courseUnitId;


    public CourseUnitEvaluationForm(CourseUnitEvaluationView courseUnitEvaluationView, CourseUnitView courseUnitView, long courseUnitId) {
        this.courseUnitEvaluationView = courseUnitEvaluationView;
        this.courseUnitView = courseUnitView;
        this.courseUnitId = courseUnitId;
    }

    public CourseUnitEvaluationForm()
    {
        courseUnitEvaluationView.setCourseUnitEvaluation(DomainObjectFactory.createCourseUnitEvaluationImpl());
    }

    public CourseUnitEvaluationView getCourseUnitEvaluationView() {
        return courseUnitEvaluationView;
    }

    public void setCourseUnitEvaluationView(CourseUnitEvaluationView courseUnitEvaluationView) {
        this.courseUnitEvaluationView = courseUnitEvaluationView;
    }

    public CourseUnitView getCourseUnitView() {
        return courseUnitView;
    }

    public void setCourseUnitView(CourseUnitView courseUnitView) {
        this.courseUnitView = courseUnitView;
    }



    public long getCourseUnitId() {
        return courseUnitId;
    }

    public void setCourseUnitId(long courseUnitId) {
        this.courseUnitId = courseUnitId;
    }


    public ActionErrors validateSave(ActionMapping mapping, HttpServletRequest request) {

        ActionErrors errors = new ActionErrors();
        //error.evaluation.report.total.aprovados.epocas.wrong=O somatório dos aprovados nas várias épocas não corresponde ao total de aprovados
        //error.evaluation.report.total.aprovados.grades
        boolean totalAprovadosCorrecto = courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosAprovTotal() ==
                courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosAprovNormal()
                +courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosAprovFrequencia()
                +courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosAprovRecurso()
                +courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosAprovEspecial();
        if(!totalAprovadosCorrecto)
            addMessage(errors,request,"error.evaluation.report.total.aprovados.epocas.wrong");
        if(courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosAprovTotal() != 0 &&
                courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosAprov1013()
                        + courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosAprov1416()
                        + courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosAprov1720() != courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosAprovTotal() )
        {
            addMessage(errors,request,"error.evaluation.report.total.aprovados.grades");
        }
        else
        {
            if(courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosAprovTotal() > 0)
            {
                courseUnitEvaluationView.getCourseUnitEvaluation().setNumAlunosAprov1013Percent(
                        (100.0f * courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosAprov1013()) / courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosAprovTotal()
                );
                courseUnitEvaluationView.getCourseUnitEvaluation().setNumAlunosAprov1416Percent(
                        (100.0f * courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosAprov1416()) / courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosAprovTotal()
                );
                courseUnitEvaluationView.getCourseUnitEvaluation().setNumAlunosAprov1720Percent(
                        (100.0f * courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosAprov1720()) / courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosAprovTotal()
                );
            }
            else
            {
                courseUnitEvaluationView.getCourseUnitEvaluation().setNumAlunosAprov1013Percent(0);
                courseUnitEvaluationView.getCourseUnitEvaluation().setNumAlunosAprov1416Percent(0);
                courseUnitEvaluationView.getCourseUnitEvaluation().setNumAlunosAprov1720Percent(0);
            }
        }

        try{
            int inscritos = 1.5.0/docs/api/java/lang/Integer.html">Integer.parseInt(courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosInscritos());
            boolean aprovadosSemElementos =
                    ((courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosAprovTotal()
                            + courseUnitEvaluationView.getCourseUnitEvaluation().getNumAlunosSemElementosAvaliacao())
                            <= inscritos);
            if(!aprovadosSemElementos)
                addMessage(errors,request,"error.evaluation.report.aprovados.sem.elementos.big.inscritos");

        }catch(1.5.0/docs/api/java/lang/NumberFormatException.html">NumberFormatException e)
        {
            addMessage(errors,request,"error.evaluation.report.is.not.a.number");
        }


        return errors;
    }
}