/** * 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.ui.struts.action.coordinator; import java.io.Serializable; import java.util.HashSet; import java.util.Set; import java.util.TreeSet; import org.fenixedu.academic.domain.EquivalencePlan; import org.fenixedu.academic.domain.EquivalencePlanEntry; import org.fenixedu.academic.domain.degreeStructure.CourseGroup; import org.fenixedu.academic.domain.degreeStructure.DegreeModule; import org.fenixedu.academic.domain.util.LogicOperator; import org.fenixedu.academic.service.services.commons.FactoryExecutor; public class EquivalencePlanEntryCreator implements FactoryExecutor, Serializable { private EquivalencePlan equivalencePlan; private final Set<DegreeModule> originDegreeModules = new HashSet<DegreeModule>(); private final Set<DegreeModule> destinationDegreeModules = new HashSet<DegreeModule>(); private DegreeModule originDegreeModuleToAdd; private DegreeModule destinationDegreeModuleToAdd; private LogicOperator originLogicOperator = LogicOperator.AND; private LogicOperator destinationLogicOperator = LogicOperator.AND; private Boolean transitiveOrigin = true; private Double ectsCredits; private CourseGroup destinationDegreeModulesPreviousCourseGroup; public EquivalencePlanEntryCreator(final EquivalencePlan equivalencePlan) { setEquivalencePlan(equivalencePlan); } @Override public Object execute() { final Double ectsCredits; if (getEctsCredits() != null && getEctsCredits().doubleValue() > 0) { ectsCredits = getEctsCredits(); } else { ectsCredits = null; } return new EquivalencePlanEntry(getEquivalencePlan(), getOriginDegreeModules(), getDestinationDegreeModules(), getDestinationDegreeModulesPreviousCourseGroup(), getOriginLogicOperator(), getDestinationLogicOperator(), getTransitiveOrigin(), ectsCredits); } public EquivalencePlan getEquivalencePlan() { return equivalencePlan; } public void setEquivalencePlan(EquivalencePlan equivalencePlan) { this.equivalencePlan = equivalencePlan; } public Set<DegreeModule> getOriginDegreeModules() { final Set<DegreeModule> degreeModules = new TreeSet<DegreeModule>(DegreeModule.COMPARATOR_BY_NAME); for (final DegreeModule degreeModule : this.originDegreeModules) { degreeModules.add(degreeModule); } return degreeModules; } public Set<DegreeModule> getDestinationDegreeModules() { final Set<DegreeModule> degreeModules = new TreeSet<DegreeModule>(DegreeModule.COMPARATOR_BY_NAME); for (final DegreeModule degreeModule : this.destinationDegreeModules) { degreeModules.add(degreeModule); } return degreeModules; } public DegreeModule getOriginDegreeModuleToAdd() { return originDegreeModuleToAdd; } public void setOriginDegreeModuleToAdd(DegreeModule degreeModule) { this.originDegreeModuleToAdd = degreeModule; } public DegreeModule getDestinationDegreeModuleToAdd() { return destinationDegreeModuleToAdd; } public void setDestinationDegreeModuleToAdd(DegreeModule degreeModule) { this.destinationDegreeModuleToAdd = degreeModule; } public void addOrigin(DegreeModule degreeModule) { if (degreeModule != null) { originDegreeModules.add(degreeModule); } } public void addDestination(DegreeModule degreeModule) { if (degreeModule != null) { destinationDegreeModules.add(degreeModule); } } public LogicOperator getOriginLogicOperator() { return originLogicOperator; } public void setOriginLogicOperator(LogicOperator originLogicOperator) { this.originLogicOperator = originLogicOperator; } public LogicOperator getDestinationLogicOperator() { return destinationLogicOperator; } public void setDestinationLogicOperator(LogicOperator destinationLogicOperator) { this.destinationLogicOperator = destinationLogicOperator; } public Boolean getTransitiveOrigin() { return transitiveOrigin; } public void setTransitiveOrigin(Boolean transitiveOrigin) { this.transitiveOrigin = transitiveOrigin; } public Double getEctsCredits() { return ectsCredits; } public void setEctsCredits(Double ectsCredits) { this.ectsCredits = ectsCredits; } public void setDestinationDegreeModulesPreviousCourseGroup(final CourseGroup previousCourseGroup) { this.destinationDegreeModulesPreviousCourseGroup = previousCourseGroup; } public CourseGroup getDestinationDegreeModulesPreviousCourseGroup() { return this.destinationDegreeModulesPreviousCourseGroup; } }