/* * 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.orders.criterionrequirements; import java.util.ArrayList; import java.util.List; import java.util.Set; import org.libreplan.business.orders.entities.HoursGroup; import org.libreplan.business.orders.entities.OrderElement; import org.libreplan.business.orders.entities.OrderLine; import org.libreplan.business.resources.entities.CriterionType; import org.libreplan.business.resources.entities.CriterionWithItsType; import org.libreplan.web.common.Util; import org.libreplan.web.orders.CriterionRequirementWrapper; import org.libreplan.web.orders.HoursGroupWrapper; import org.libreplan.web.orders.IOrderElementModel; import org.zkoss.zkplus.spring.SpringUtil; /** * Controller for showing OrderElement assigned labels. * * @author Diego Pino Garcia <dpino@igalia.com> */ public class AssignedCriterionRequirementToOrderElementController extends AssignedCriterionRequirementController<OrderElement, IOrderElementModel> { protected IAssignedCriterionRequirementToOrderElementModel assignedCriterionRequirementToOrderElementModel; public AssignedCriterionRequirementToOrderElementController() { if ( assignedCriterionRequirementToOrderElementModel == null ) { assignedCriterionRequirementToOrderElementModel = (IAssignedCriterionRequirementToOrderElementModel) SpringUtil.getBean("assignedCriterionRequirementToOrderElementModel"); } } @Override public OrderElement getElement() { return getOrderElement(); } public OrderElement getOrderElement() { return assignedCriterionRequirementToOrderElementModel.getElement(); } public Set<CriterionType> getCriterionTypes() { return assignedCriterionRequirementToOrderElementModel.getTypes(); } public void setOrderElement(OrderElement orderElement) { assignedCriterionRequirementToOrderElementModel.setElement(orderElement); } public void openWindow(IOrderElementModel orderElementModel) { assignedCriterionRequirementToOrderElementModel.setModel(orderElementModel.getOrderModel()); openWindow(orderElementModel.getOrderElement()); } public void openWindow(OrderElement orderElement) { assignedCriterionRequirementToOrderElementModel.init(orderElement); Util.createBindingsFor(self); Util.reloadBindings(self); } public void confirm() { assignedCriterionRequirementToOrderElementModel.confirm(); } public List<CriterionRequirementWrapper> criterionRequirementWrappers() { return assignedCriterionRequirementToOrderElementModel.getCriterionRequirementWrappers(); } public List<CriterionWithItsType> getCriterionWithItsTypes() { return assignedCriterionRequirementToOrderElementModel.getCriterionWithItsTypes(); } public void addCriterionRequirementWrapper() { assignedCriterionRequirementToOrderElementModel.assignCriterionRequirementWrapper(); reload(); } public void remove(CriterionRequirementWrapper requirement) { assignedCriterionRequirementToOrderElementModel.deleteCriterionRequirementWrapper(requirement); reload(); } public void invalidate(CriterionRequirementWrapper requirement) { assignedCriterionRequirementToOrderElementModel.setValidCriterionRequirementWrapper(requirement, false); reload(); } public void validate(CriterionRequirementWrapper requirement) { assignedCriterionRequirementToOrderElementModel.setValidCriterionRequirementWrapper(requirement, true); reload(); } protected void changeCriterionAndType(CriterionRequirementWrapper requirementWrapper, CriterionWithItsType newCriterionAndType) { assignedCriterionRequirementToOrderElementModel.changeCriterionAndType(requirementWrapper, newCriterionAndType); } protected void updateCriterionsWithDifferentResourceType(HoursGroupWrapper hoursGroupWrapper) { assignedCriterionRequirementToOrderElementModel.updateCriterionsWithDifferentResourceType(hoursGroupWrapper); } protected CriterionRequirementWrapper validateWrappers(List<CriterionRequirementWrapper> list) { return assignedCriterionRequirementToOrderElementModel.validateWrappers(criterionRequirementWrappers()); } protected CriterionRequirementWrapper validateHoursGroupWrappers() { return assignedCriterionRequirementToOrderElementModel.validateHoursGroupWrappers(); } public List<HoursGroupWrapper> getHoursGroupWrappers() { return assignedCriterionRequirementToOrderElementModel.getHoursGroupsWrappers(); } public void addHoursGroup() { assignedCriterionRequirementToOrderElementModel.addNewHoursGroupWrapper(); Util.reloadBindings(listHoursGroups); } protected void deleteHoursGroupWrapper(HoursGroupWrapper hoursGroupWrapper) { assignedCriterionRequirementToOrderElementModel.deleteHoursGroupWrapper(hoursGroupWrapper); } protected void addCriterionToHoursGroupWrapper(HoursGroupWrapper hoursGroupWrapper) { assignedCriterionRequirementToOrderElementModel.addCriterionToHoursGroupWrapper(hoursGroupWrapper); } protected CriterionRequirementWrapper addExceptionToHoursGroupWrapper(HoursGroupWrapper hoursGroupWrapper) { return assignedCriterionRequirementToOrderElementModel.addExceptionToHoursGroupWrapper(hoursGroupWrapper); } public void deleteCriterionToHoursGroup(HoursGroupWrapper hoursGroupWrapper, CriterionRequirementWrapper requirementWrapper) { assignedCriterionRequirementToOrderElementModel .deleteCriterionToHoursGroup(hoursGroupWrapper, requirementWrapper); } protected void selectCriterionToHoursGroup(HoursGroupWrapper hoursGroupWrapper, CriterionRequirementWrapper requirementWrapper, CriterionWithItsType criterionAndType) { assignedCriterionRequirementToOrderElementModel .selectCriterionToHoursGroup(hoursGroupWrapper, requirementWrapper, criterionAndType); } public void recalculateHoursGroup() { ((OrderLine) assignedCriterionRequirementToOrderElementModel.getElement()).recalculateHoursGroups(); reload(); } public boolean isCodeAutogenerated() { return assignedCriterionRequirementToOrderElementModel.isCodeAutogenerated(); } public List<HoursGroup> getHoursGroups() { return (getElement() == null) || (assignedCriterionRequirementToOrderElementModel == null) ? new ArrayList<>() : super.getHoursGroups(); } @Override protected List<HoursGroup> getHoursGroups(OrderElement orderElement) { return orderElement.getHoursGroups(); } public boolean isEditableHoursGroup() { OrderElement element = getElement(); return element != null && element instanceof OrderLine && !element.isJiraIssue(); } }