/* * This file is part of LibrePlan * * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e * Desenvolvemento Tecnolóxico de Galicia * Copyright (C) 2010-2011 Igalia, S.L. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.libreplan.web.templates.criterionrequirements; import java.util.ArrayList; import java.util.List; import java.util.Set; import org.libreplan.business.orders.entities.HoursGroup; import org.libreplan.business.resources.entities.CriterionType; import org.libreplan.business.resources.entities.CriterionWithItsType; import org.libreplan.business.templates.entities.OrderElementTemplate; import org.libreplan.business.templates.entities.OrderLineTemplate; import org.libreplan.web.common.Util; import org.libreplan.web.orders.CriterionRequirementWrapper; import org.libreplan.web.orders.HoursGroupWrapper; import org.libreplan.web.orders.criterionrequirements.AssignedCriterionRequirementController; import org.libreplan.web.templates.IOrderTemplatesModel; import org.zkoss.zkplus.spring.SpringUtil; /** * @author Diego Pino Garcia <dpino@igalia.com> */ public class AssignedCriterionRequirementToTemplateController extends AssignedCriterionRequirementController<OrderElementTemplate, IOrderTemplatesModel> { protected IAssignedCriterionRequirementToTemplateModel assignedCriterionRequirementToTemplateModel; public AssignedCriterionRequirementToTemplateController() { if ( assignedCriterionRequirementToTemplateModel == null ) { assignedCriterionRequirementToTemplateModel = (IAssignedCriterionRequirementToTemplateModel) SpringUtil.getBean("assignedCriterionRequirementToTemplateModel"); } } @Override public OrderElementTemplate getElement() { return getOrderElement(); } public OrderElementTemplate getOrderElement() { return assignedCriterionRequirementToTemplateModel.getElement(); } public Set<CriterionType> getCriterionTypes() { return assignedCriterionRequirementToTemplateModel.getTypes(); } public void setOrderElement(OrderElementTemplate orderElement) { assignedCriterionRequirementToTemplateModel.setElement(orderElement); } public void openWindow(IOrderTemplatesModel orderTemplateModel, OrderElementTemplate template) { assignedCriterionRequirementToTemplateModel.setModel(orderTemplateModel); assignedCriterionRequirementToTemplateModel.init(template); Util.reloadBindings(self); } public void openWindow(IOrderTemplatesModel orderTemplateModel) { assignedCriterionRequirementToTemplateModel.setModel(orderTemplateModel); openWindow(orderTemplateModel.getTemplate()); } public void openWindow(OrderElementTemplate orderElement) { assignedCriterionRequirementToTemplateModel.init(orderElement); Util.createBindingsFor(self); Util.reloadBindings(self); } public void confirm() { assignedCriterionRequirementToTemplateModel.confirm(); } public List<CriterionRequirementWrapper> criterionRequirementWrappers() { return assignedCriterionRequirementToTemplateModel.getCriterionRequirementWrappers(); } public List<CriterionWithItsType> getCriterionWithItsTypes() { return assignedCriterionRequirementToTemplateModel.getCriterionWithItsTypes(); } public void addCriterionRequirementWrapper() { assignedCriterionRequirementToTemplateModel.assignCriterionRequirementWrapper(); reload(); } public void remove(CriterionRequirementWrapper requirement) { assignedCriterionRequirementToTemplateModel.deleteCriterionRequirementWrapper(requirement); reload(); } public void invalidate(CriterionRequirementWrapper requirement) { assignedCriterionRequirementToTemplateModel.setValidCriterionRequirementWrapper(requirement, false); reload(); } public void validate(CriterionRequirementWrapper requirement) { assignedCriterionRequirementToTemplateModel.setValidCriterionRequirementWrapper(requirement, true); reload(); } protected void changeCriterionAndType(CriterionRequirementWrapper requirementWrapper, CriterionWithItsType newCriterionAndType) { assignedCriterionRequirementToTemplateModel.changeCriterionAndType(requirementWrapper, newCriterionAndType); } protected void updateCriterionsWithDifferentResourceType(HoursGroupWrapper hoursGroupWrapper) { assignedCriterionRequirementToTemplateModel.updateCriterionsWithDifferentResourceType(hoursGroupWrapper); } protected CriterionRequirementWrapper validateWrappers(List<CriterionRequirementWrapper> list) { return assignedCriterionRequirementToTemplateModel.validateWrappers(criterionRequirementWrappers()); } protected CriterionRequirementWrapper validateHoursGroupWrappers() { return assignedCriterionRequirementToTemplateModel.validateHoursGroupWrappers(); } public List<HoursGroupWrapper> getHoursGroupWrappers() { return assignedCriterionRequirementToTemplateModel.getHoursGroupsWrappers(); } public void addHoursGroup() { assignedCriterionRequirementToTemplateModel.addNewHoursGroupWrapper(); Util.reloadBindings(listHoursGroups); } protected void deleteHoursGroupWrapper(HoursGroupWrapper hoursGroupWrapper) { assignedCriterionRequirementToTemplateModel.deleteHoursGroupWrapper(hoursGroupWrapper); } protected void addCriterionToHoursGroupWrapper(HoursGroupWrapper hoursGroupWrapper) { assignedCriterionRequirementToTemplateModel.addCriterionToHoursGroupWrapper(hoursGroupWrapper); } protected CriterionRequirementWrapper addExceptionToHoursGroupWrapper(HoursGroupWrapper hoursGroupWrapper) { return assignedCriterionRequirementToTemplateModel.addExceptionToHoursGroupWrapper(hoursGroupWrapper); } public void deleteCriterionToHoursGroup(HoursGroupWrapper hoursGroupWrapper, CriterionRequirementWrapper requirementWrapper) { assignedCriterionRequirementToTemplateModel.deleteCriterionToHoursGroup(hoursGroupWrapper, requirementWrapper); } protected void selectCriterionToHoursGroup(HoursGroupWrapper hoursGroupWrapper, CriterionRequirementWrapper requirementWrapper, CriterionWithItsType criterionAndType) { assignedCriterionRequirementToTemplateModel .selectCriterionToHoursGroup(hoursGroupWrapper, requirementWrapper, criterionAndType); } public void recalculateHoursGroup() { ((OrderLineTemplate) assignedCriterionRequirementToTemplateModel.getElement()).recalculateHoursGroups(); } public boolean isCodeAutogenerated() { return assignedCriterionRequirementToTemplateModel.isCodeAutogenerated(); } public List<HoursGroup> getHoursGroups() { return (getElement() == null) || (assignedCriterionRequirementToTemplateModel == null) ? new ArrayList<>() : super.getHoursGroups(); } @Override protected List<HoursGroup> getHoursGroups(OrderElementTemplate orderElement) { return orderElement.getHoursGroups(); } public boolean isEditableHoursGroup() { return getElement() != null && getElement() instanceof OrderLineTemplate; } }