Package org.fenixedu.academic.dto.administrativeOffice.externalUnits

Source Code of org.fenixedu.academic.dto.administrativeOffice.externalUnits.ExternalCurricularCourseResultBean

/**
* 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/>.
*/
package org.fenixedu.academic.dto.administrativeOffice.externalUnits;

import java.util.ArrayList;
import java.util.List;

import org.fenixedu.academic.domain.ExternalCurricularCourse;
import org.fenixedu.academic.domain.organizationalStructure.PartyTypeEnum;
import org.fenixedu.academic.domain.organizationalStructure.Unit;
import org.fenixedu.academic.dto.LinkObject;

public class ExternalCurricularCourseResultBean extends AbstractExternalUnitResultBean {

    private ExternalCurricularCourse externalCurricularCourse;

    public ExternalCurricularCourseResultBean(final ExternalCurricularCourse externalCurricularCourse,
            PartyTypeEnum parentUnitType) {
        super();
        setExternalCurricularCourse(externalCurricularCourse);
        setParentUnitType(parentUnitType);
    }

    public ExternalCurricularCourseResultBean(final ExternalCurricularCourse externalCurricularCourse) {
        this(externalCurricularCourse, null);
    }

    public ExternalCurricularCourse getExternalCurricularCourse() {
        return this.externalCurricularCourse;
    }

    public void setExternalCurricularCourse(ExternalCurricularCourse externalCurricularCourse) {
        this.externalCurricularCourse = externalCurricularCourse;
    }

    @Override
    public Unit getUnit() {
        return getExternalCurricularCourse().getUnit();
    }

    @Override
    public ExternalDegreeModuleType getType() {
        return ExternalDegreeModuleType.CURRICULAR_COURSE;
    }

    public int getNumberOfExternalEnrolments() {
        return getExternalCurricularCourse().getExternalEnrolmentsSet().size();
    }

    @Override
    public List<LinkObject> getFullPath() {
        final List<LinkObject> result = new ArrayList<LinkObject>();
        for (final Unit unit : searchFullPath()) {
            final LinkObject linkObject = new LinkObject();
            linkObject.setId(unit.getExternalId());
            linkObject.setLabel(unit.getName());
            linkObject.setMethod("viewUnit");
            result.add(linkObject);
        }

        final LinkObject linkObject = new LinkObject();
        linkObject.setId(getExternalCurricularCourse().getExternalId());
        linkObject.setLabel(getExternalCurricularCourse().getName());
        linkObject.setMethod("viewExternalCurricularCourse");
        result.add(linkObject);

        return result;
    }

    @Override
    public String getName() {
        return getExternalCurricularCourse().getName();
    }

    private static enum ExternalDegreeModuleType {
        CURRICULAR_COURSE;
        public String getName() {
            return this.name();
        }
    }

    static public List<ExternalCurricularCourseResultBean> buildFrom(final Unit unit) {
        final List<ExternalCurricularCourseResultBean> result = new ArrayList<ExternalCurricularCourseResultBean>();
        for (final ExternalCurricularCourse each : getChildExternalCurricularCoursesFor(unit)) {
            result.add(new ExternalCurricularCourseResultBean(each, unit.getType()));
        }
        return result;
    }

    static private List<ExternalCurricularCourse> getChildExternalCurricularCoursesFor(final Unit unit) {
        final List<ExternalCurricularCourse> result = new ArrayList<ExternalCurricularCourse>();
        getChildsWithType(result, unit);
        return result;
    }

    static private void getChildsWithType(final List<ExternalCurricularCourse> result, final Unit unit) {

        result.addAll(unit.getExternalCurricularCoursesSet());

        switch (unit.getType()) {
        case COUNTRY:
            addChildExternalCurricularCourses(result, unit, PartyTypeEnum.UNIVERSITY);
            addChildExternalCurricularCourses(result, unit, PartyTypeEnum.SCHOOL);
            break;
        case UNIVERSITY:
            addChildExternalCurricularCourses(result, unit, PartyTypeEnum.SCHOOL);
            addChildExternalCurricularCourses(result, unit, PartyTypeEnum.DEPARTMENT);
            break;
        case SCHOOL:
            addChildExternalCurricularCourses(result, unit, PartyTypeEnum.DEPARTMENT);
            break;
        case DEPARTMENT:
        default:
            break;
        }
    }

    static private void addChildExternalCurricularCourses(final List<ExternalCurricularCourse> result, final Unit unit,
            final PartyTypeEnum parentUnitType) {

        for (final Unit each : unit.getSubUnits(parentUnitType)) {
            getChildsWithType(result, each);
        }
    }

}
TOP

Related Classes of org.fenixedu.academic.dto.administrativeOffice.externalUnits.ExternalCurricularCourseResultBean

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.