Package org.fenixedu.academic.ui.struts.action.utils

Source Code of org.fenixedu.academic.ui.struts.action.utils.ContextUtils

/**
* Copyright © 2002 Instituto Superior Técnico
*
* This file is part of FenixEdu Academic.
*
* FenixEdu Academic is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* FenixEdu Academic is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with FenixEdu Academic.  If not, see <http://www.gnu.org/licenses/>.
*/
/*
* Created on 2003/07/28
*
*/
package org.fenixedu.academic.ui.struts.action.utils;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.util.LabelValueBean;
import org.fenixedu.academic.domain.CurricularYear;
import org.fenixedu.academic.domain.Degree;
import org.fenixedu.academic.domain.DegreeCurricularPlan;
import org.fenixedu.academic.domain.ExecutionDegree;
import org.fenixedu.academic.domain.ExecutionSemester;
import org.fenixedu.academic.domain.ExecutionYear;
import org.fenixedu.academic.domain.time.calendarStructure.AcademicInterval;
import org.fenixedu.academic.domain.time.calendarStructure.AcademicPeriod;
import org.fenixedu.academic.dto.InfoClass;
import org.fenixedu.academic.dto.InfoCurricularYear;
import org.fenixedu.academic.dto.InfoExecutionCourse;
import org.fenixedu.academic.dto.InfoExecutionDegree;
import org.fenixedu.academic.dto.InfoExecutionPeriod;
import org.fenixedu.academic.dto.InfoLesson;
import org.fenixedu.academic.dto.InfoShift;
import org.fenixedu.academic.dto.resourceAllocationManager.ContextSelectionBean;
import org.fenixedu.academic.service.services.commons.ReadCurrentExecutionPeriod;
import org.fenixedu.academic.service.services.commons.ReadCurricularYearByOID;
import org.fenixedu.academic.service.services.commons.ReadExecutionCourseByOID;
import org.fenixedu.academic.service.services.commons.ReadExecutionDegreeByOID;
import org.fenixedu.academic.service.services.commons.ReadExecutionPeriodByOID;
import org.fenixedu.academic.service.services.exceptions.FenixServiceException;
import org.fenixedu.academic.service.services.resourceAllocationManager.ReadClassByOID;
import org.fenixedu.academic.service.services.resourceAllocationManager.ReadLessonByOID;
import org.fenixedu.academic.service.services.resourceAllocationManager.ReadShiftByOID;
import org.fenixedu.academic.ui.struts.action.resourceAllocationManager.utils.PresentationConstants;
import org.fenixedu.academic.util.Bundle;
import org.fenixedu.bennu.core.i18n.BundleUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import pt.ist.fenixWebFramework.renderers.utils.RenderUtils;
import pt.ist.fenixframework.FenixFramework;

/**
* @author Luis Cruz & Sara Ribeiro
*
*/
public class ContextUtils {

    private static final Logger logger = LoggerFactory.getLogger(ContextUtils.class);

    @Deprecated
    public static final void setExecutionPeriodContext(HttpServletRequest request) throws FenixServiceException {
        String executionPeriodOIDString = (String) request.getAttribute(PresentationConstants.EXECUTION_PERIOD_OID);
        if (executionPeriodOIDString == null) {
            executionPeriodOIDString = request.getParameter(PresentationConstants.EXECUTION_PERIOD_OID);
        }

        String executionPeriodOID = null;
        if (executionPeriodOIDString != null && !executionPeriodOIDString.equals("") && !executionPeriodOIDString.equals("null")) {
            executionPeriodOID = executionPeriodOIDString;
        }

        InfoExecutionPeriod infoExecutionPeriod = null;
        if (executionPeriodOID != null) {
            infoExecutionPeriod = ReadExecutionPeriodByOID.run(executionPeriodOID);
        } else {
            infoExecutionPeriod = ReadCurrentExecutionPeriod.run();
        }
        if (infoExecutionPeriod != null) {
            // Place it in request
            request.setAttribute(PresentationConstants.EXECUTION_PERIOD, infoExecutionPeriod);
            request.setAttribute(PresentationConstants.EXECUTION_PERIOD_OID, infoExecutionPeriod.getExternalId().toString());
            if (infoExecutionPeriod.getInfoExecutionYear() != null) {
                request.setAttribute("schoolYear", infoExecutionPeriod.getInfoExecutionYear().getYear());
            }
        }
    }

    /**
     * @param request
     */
    public static void setExecutionDegreeContext(HttpServletRequest request) throws FenixServiceException {

        String executionDegreeOIDString = (String) request.getAttribute(PresentationConstants.EXECUTION_DEGREE_OID);

        if ((executionDegreeOIDString == null) || (executionDegreeOIDString.length() == 0)) {
            executionDegreeOIDString = request.getParameter(PresentationConstants.EXECUTION_DEGREE_OID);

            // No degree was chosen
            if ((executionDegreeOIDString == null) || (executionDegreeOIDString.length() == 0)) {
                request.setAttribute(PresentationConstants.EXECUTION_DEGREE, null);
            }
        }

        InfoExecutionDegree infoExecutionDegree = null;

        if (executionDegreeOIDString != null) {
            infoExecutionDegree = ReadExecutionDegreeByOID.run(executionDegreeOIDString);

            if (infoExecutionDegree != null) {
                // Place it in request
                request.setAttribute(PresentationConstants.EXECUTION_DEGREE, infoExecutionDegree);
                request.setAttribute(PresentationConstants.EXECUTION_DEGREE_OID, infoExecutionDegree.getExternalId().toString());
            }
        }
    }

    /**
     * @param request
     */
    public static void setCurricularYearContext(HttpServletRequest request) {
        String curricularYearOIDString = (String) request.getAttribute(PresentationConstants.CURRICULAR_YEAR_OID);
        if (curricularYearOIDString == null) {
            curricularYearOIDString = request.getParameter(PresentationConstants.CURRICULAR_YEAR_OID);
        }

        String curricularYearOID = null;
        if (curricularYearOIDString != null && !curricularYearOIDString.equals("null")) {
            curricularYearOID = curricularYearOIDString;
        }

        InfoCurricularYear infoCurricularYear = null;

        if (curricularYearOID != null) {
            // Read from database
            try {

                infoCurricularYear = ReadCurricularYearByOID.run(curricularYearOID);
            } catch (FenixServiceException e) {
                logger.error(e.getMessage(), e);
            }

            if (infoCurricularYear != null) {
                // Place it in request
                request.setAttribute(PresentationConstants.CURRICULAR_YEAR, infoCurricularYear);
                request.setAttribute(PresentationConstants.CURRICULAR_YEAR_OID, infoCurricularYear.getExternalId().toString());
            }

        }
    }

    /**
     * @param request
     */
    public static void setExecutionCourseContext(HttpServletRequest request) {
        String executionCourseOIDString = (String) request.getAttribute(PresentationConstants.EXECUTION_COURSE_OID);
        if (executionCourseOIDString == null) {
            executionCourseOIDString = request.getParameter(PresentationConstants.EXECUTION_COURSE_OID);
        }

        String executionCourseOID = null;
        if (executionCourseOIDString != null && !executionCourseOIDString.equals("") && !executionCourseOIDString.equals("null")) {
            executionCourseOID = executionCourseOIDString;
        }

        InfoExecutionCourse infoExecutionCourse = null;

        if (executionCourseOID != null) {
            infoExecutionCourse = ReadExecutionCourseByOID.run(executionCourseOID);

            if (infoExecutionCourse != null) {
                // Place it in request
                request.setAttribute(PresentationConstants.EXECUTION_COURSE, infoExecutionCourse);
            }
        }
    }

    /**
     * @param request
     */
    public static void setShiftContext(HttpServletRequest request) {
        String shiftOIDString = (String) request.getAttribute(PresentationConstants.SHIFT_OID);
        if (shiftOIDString == null) {
            shiftOIDString = request.getParameter(PresentationConstants.SHIFT_OID);
        }

        InfoShift infoShift = null;

        if (shiftOIDString != null) {
            infoShift = ReadShiftByOID.run(shiftOIDString);

            if (infoShift != null) {
                // Place it in request
                request.setAttribute(PresentationConstants.SHIFT, infoShift);
            }
        }
    }

    /**
     * @param request
     */
    public static void setClassContext(HttpServletRequest request) {
        String classOIDString = (String) request.getAttribute(PresentationConstants.CLASS_VIEW_OID);
        if (classOIDString == null) {
            classOIDString = request.getParameter(PresentationConstants.CLASS_VIEW_OID);
        }

        InfoClass infoClass = null;

        if (classOIDString != null) {
            // Read from database
            try {

                infoClass = ReadClassByOID.run(classOIDString);
            } catch (FenixServiceException e) {
                logger.error(e.getMessage(), e);
            }

            // Place it in request
            request.setAttribute(PresentationConstants.CLASS_VIEW, infoClass);
        }
    }

    /**
     * @param request
     */
    public static void setLessonContext(HttpServletRequest request) {
        String lessonOIDString = (String) request.getAttribute(PresentationConstants.LESSON_OID);
        if (lessonOIDString == null) {
            lessonOIDString = request.getParameter(PresentationConstants.LESSON_OID);
        }

        InfoLesson infoLesson = null;

        if (lessonOIDString != null) {
            infoLesson = ReadLessonByOID.run(lessonOIDString);

            // Place it in request
            request.setAttribute(PresentationConstants.LESSON, infoLesson);
        }
    }

    @Deprecated
    public static void prepareChangeExecutionDegreeAndCurricularYear(HttpServletRequest request) {

        InfoExecutionPeriod infoExecutionPeriod =
                (InfoExecutionPeriod) request.getAttribute(PresentationConstants.EXECUTION_PERIOD);

        /* Obtain a list of curricular years */
        List labelListOfCurricularYears = getLabelListOfCurricularYears();
        request.setAttribute(PresentationConstants.LABELLIST_CURRICULAR_YEARS, labelListOfCurricularYears);

        /* Obtain a list of degrees for the specified execution year */
        final ExecutionYear executionYear = infoExecutionPeriod.getExecutionPeriod().getExecutionYear();
        final Set<ExecutionDegree> executionDegrees = executionYear.getExecutionDegreesSet();

        final List<LabelValueBean> labelListOfExecutionDegrees = new ArrayList<LabelValueBean>();
        final List<InfoExecutionDegree> infoExecutionDegrees = new ArrayList<InfoExecutionDegree>();
        for (final ExecutionDegree executionDegree : executionDegrees) {
            infoExecutionDegrees.add(InfoExecutionDegree.newInfoFromDomain(executionDegree));

            final DegreeCurricularPlan degreeCurricularPlan = executionDegree.getDegreeCurricularPlan();
            final Degree degree = degreeCurricularPlan.getDegree();
            final String degreeTypeString = BundleUtil.getString(Bundle.ENUMERATION, degree.getDegreeType().toString());
            final StringBuilder name = new StringBuilder();
            name.append(degreeTypeString);
            name.append(" ").append(BundleUtil.getString(Bundle.APPLICATION, "label.in")).append(" ");
            name.append(degree.getNameFor(executionDegree.getExecutionYear()).getContent());
            if (duplicateDegreeInList(degree, executionYear)) {
                name.append(" - ");
                name.append(degreeCurricularPlan.getName());
            }
            final LabelValueBean labelValueBean = new LabelValueBean(name.toString(), executionDegree.getExternalId().toString());
            labelListOfExecutionDegrees.add(labelValueBean);
        }
        Collections.sort(labelListOfExecutionDegrees);
        request.setAttribute("licenciaturas", labelListOfExecutionDegrees);
        Collections.sort(infoExecutionDegrees, InfoExecutionDegree.COMPARATOR_BY_DEGREE_TYPE_AND_NAME);
        request.setAttribute("executionDegrees", infoExecutionDegrees);

        final List<ExecutionSemester> executionSemesters = ExecutionSemester.readNotClosedExecutionPeriods();
        Collections.sort(executionSemesters);
        final List<InfoExecutionPeriod> infoExecutionPeriods = new ArrayList<InfoExecutionPeriod>();
        final List<LabelValueBean> executionPeriodLabelValueBeans = new ArrayList<LabelValueBean>();
        for (final ExecutionSemester executionSemester : executionSemesters) {
            infoExecutionPeriods.add(InfoExecutionPeriod.newInfoFromDomain(executionSemester));
            final String name = executionSemester.getName() + " - " + executionSemester.getExecutionYear().getYear();
            final LabelValueBean labelValueBean = new LabelValueBean(name, executionSemester.getExternalId().toString());
            executionPeriodLabelValueBeans.add(labelValueBean);
        }
        request.setAttribute(PresentationConstants.LIST_INFOEXECUTIONPERIOD, infoExecutionPeriods);
        request.setAttribute(PresentationConstants.LABELLIST_EXECUTIONPERIOD, executionPeriodLabelValueBeans);
    }

    private static boolean duplicateDegreeInList(final Degree degree, final ExecutionYear executionYear) {
        boolean foundOne = false;
        for (final DegreeCurricularPlan degreeCurricularPlan : degree.getDegreeCurricularPlansSet()) {
            for (final ExecutionDegree executionDegree : degreeCurricularPlan.getExecutionDegreesSet()) {
                if (executionYear == executionDegree.getExecutionYear()) {
                    if (foundOne) {
                        return true;
                    } else {
                        foundOne = true;
                    }
                }
            }
        }
        return false;
    }

    public static List getLabelListOfCurricularYears() {
        List labelListOfCurricularYears = new ArrayList();
        labelListOfCurricularYears.add(new LabelValueBean("escolher", ""));
        labelListOfCurricularYears.add(new LabelValueBean("1 º", "1"));
        labelListOfCurricularYears.add(new LabelValueBean("2 º", "2"));
        labelListOfCurricularYears.add(new LabelValueBean("3 º", "3"));
        labelListOfCurricularYears.add(new LabelValueBean("4 º", "4"));
        labelListOfCurricularYears.add(new LabelValueBean("5 º", "5"));
        return labelListOfCurricularYears;
    }

    public static List getLabelListOfOptionalCurricularYears() {
        List labelListOfCurricularYears = new ArrayList();
        labelListOfCurricularYears.add(new LabelValueBean("todos", ""));
        labelListOfCurricularYears.add(new LabelValueBean("1 º", "1"));
        labelListOfCurricularYears.add(new LabelValueBean("2 º", "2"));
        labelListOfCurricularYears.add(new LabelValueBean("3 º", "3"));
        labelListOfCurricularYears.add(new LabelValueBean("4 º", "4"));
        labelListOfCurricularYears.add(new LabelValueBean("5 º", "5"));
        return labelListOfCurricularYears;
    }

    public static void setContextSelectionBean(HttpServletRequest request, Object renderedObject) {
        ContextSelectionBean context = null;
        if (renderedObject != null && renderedObject instanceof ContextSelectionBean) {
            RenderUtils.invalidateViewState();
            context = (ContextSelectionBean) renderedObject;
        } else if (request.getAttribute(PresentationConstants.CONTEXT_SELECTION_BEAN) != null) {
            context = (ContextSelectionBean) request.getAttribute(PresentationConstants.CONTEXT_SELECTION_BEAN);
        } else {
            AcademicInterval academicInterval = null;
            ExecutionDegree executionDegree = null;
            CurricularYear curricularYear = null;
            String courseName = null;
            if (request.getAttribute(PresentationConstants.ACADEMIC_INTERVAL) != null) {
                String academicIntervalStr = (String) request.getAttribute(PresentationConstants.ACADEMIC_INTERVAL);
                academicInterval = AcademicInterval.getAcademicIntervalFromResumedString(academicIntervalStr);
            } else if (request.getParameter(PresentationConstants.ACADEMIC_INTERVAL) != null) {
                String academicIntervalStr = request.getParameter(PresentationConstants.ACADEMIC_INTERVAL);
                if (academicIntervalStr != null && !academicIntervalStr.equals("null")) {
                    academicInterval = AcademicInterval.getAcademicIntervalFromResumedString(academicIntervalStr);
                }
            }
            if (academicInterval == null) {
                academicInterval = AcademicInterval.readDefaultAcademicInterval(AcademicPeriod.SEMESTER);
            }
            if (request.getAttribute(PresentationConstants.EXECUTION_DEGREE_OID) != null) {
                executionDegree =
                        FenixFramework.getDomainObject((String) request.getAttribute(PresentationConstants.EXECUTION_DEGREE_OID));
            } else if (request.getParameter(PresentationConstants.EXECUTION_DEGREE_OID) != null) {
                executionDegree =
                        FenixFramework.getDomainObject(request.getParameter(PresentationConstants.EXECUTION_DEGREE_OID));
            }
            if (request.getAttribute(PresentationConstants.CURRICULAR_YEAR_OID) != null
                    && !request.getParameter(PresentationConstants.CURRICULAR_YEAR_OID).equals("null")) {
                curricularYear =
                        FenixFramework.getDomainObject((String) request.getAttribute(PresentationConstants.CURRICULAR_YEAR_OID));
            } else if (request.getParameter(PresentationConstants.CURRICULAR_YEAR_OID) != null
                    && !request.getParameter(PresentationConstants.CURRICULAR_YEAR_OID).equals("null")) {
                curricularYear = FenixFramework.getDomainObject(request.getParameter(PresentationConstants.CURRICULAR_YEAR_OID));
            }
            if (request.getAttribute("execution_course_name") != null) {
                courseName = (String) request.getAttribute("execution_course_name");
            } else if (request.getParameter("execution_course_name") != null) {
                courseName = request.getParameter("execution_course_name");
            }

            context = new ContextSelectionBean(academicInterval, executionDegree, curricularYear);
            context.setCourseName(courseName);
        }
        request.setAttribute(PresentationConstants.CONTEXT_SELECTION_BEAN, context);
        request.setAttribute(PresentationConstants.ACADEMIC_INTERVAL, context.getAcademicInterval()
                .getResumedRepresentationInStringFormat());

        if (context.getExecutionDegree() != null) {
            request.setAttribute(PresentationConstants.EXECUTION_DEGREE, new InfoExecutionDegree(context.getExecutionDegree()));
        }

        request.setAttribute(PresentationConstants.CURRICULAR_YEAR, new InfoCurricularYear(context.getCurricularYear()));
    }

}
TOP

Related Classes of org.fenixedu.academic.ui.struts.action.utils.ContextUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.