From ca7ed7446cc1da0c48452e0ff3c74631669a87cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Thu, 14 Jan 2010 20:38:29 +0100 Subject: [PATCH] ItEr43S12CUGravacionModelosUnidadesTraballoItEr42S17: Adding component to assign quality forms to order element template --- .../entities/OrderElementTemplate.java | 8 ++ ...kQualityFormsToOrderElementController.java | 33 +++++-- .../web/templates/OrderTemplatesModel.java | 10 +++ .../quality/QualityFormAssignerComponent.java | 90 +++++++++++++++++++ .../templates/_assignedQualityForms.zul | 71 +++++++++++++++ 5 files changed, 206 insertions(+), 6 deletions(-) create mode 100644 navalplanner-webapp/src/main/java/org/navalplanner/web/templates/quality/QualityFormAssignerComponent.java create mode 100644 navalplanner-webapp/src/main/webapp/templates/_assignedQualityForms.zul diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderElementTemplate.java b/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderElementTemplate.java index afabcee2d..c4853f2de 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderElementTemplate.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderElementTemplate.java @@ -247,4 +247,12 @@ public abstract class OrderElementTemplate extends BaseEntity implements public Set getQualityForms() { return Collections.unmodifiableSet(qualityForms); } + + public void addQualityForm(QualityForm qualityForm) { + qualityForms.add(qualityForm); + } + + public void removeQualityForm(QualityForm qualityForm) { + qualityForms.remove(qualityForm); + } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AssignedTaskQualityFormsToOrderElementController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AssignedTaskQualityFormsToOrderElementController.java index 05e2dd9c9..04a5cf2b3 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AssignedTaskQualityFormsToOrderElementController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AssignedTaskQualityFormsToOrderElementController.java @@ -140,17 +140,38 @@ public class AssignedTaskQualityFormsToOrderElementController extends * quality form list */ public void onAssignTaskQualityForm() { - QualityForm qualityForm = (QualityForm) bdQualityForms + BandboxSearch qualityFormFinder = bdQualityForms; + QualityForm qualityForm = retrieveQualityFormFrom(qualityFormFinder, + new ICheckQualityFormAssigned() { + + @Override + public boolean isAssigned(QualityForm qualityForm) { + return AssignedTaskQualityFormsToOrderElementController.this + .isAssigned(qualityForm); + } + }); + assignQualityForm(qualityForm); + } + + public interface ICheckQualityFormAssigned { + public boolean isAssigned(QualityForm qualityForm); + } + + public static QualityForm retrieveQualityFormFrom( + BandboxSearch qualityFormFinder, + ICheckQualityFormAssigned checkQualityFormAssigned) { + QualityForm qualityForm = (QualityForm) qualityFormFinder .getSelectedElement(); if (qualityForm == null) { - throw new WrongValueException(bdQualityForms, + throw new WrongValueException(qualityFormFinder, _("please, select a quality form")); } - if (isAssigned(qualityForm)) { - throw new WrongValueException(bdQualityForms, _("already assigned")); + if (checkQualityFormAssigned.isAssigned(qualityForm)) { + throw new WrongValueException(qualityFormFinder, + _("already assigned")); } - assignQualityForm(qualityForm); - bdQualityForms.clear(); + qualityFormFinder.clear(); + return qualityForm; } public void clear() { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java index d06819073..7c09f4ca4 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java @@ -134,9 +134,19 @@ public class OrderTemplatesModel implements IOrderTemplatesModel { public void initEdit(OrderElementTemplate template) { initializeAcompanyingObjectsOnConversation(); this.template = dao.findExistingEntity(template.getId()); + loadQualityForms(this.template); treeModel = new TemplatesTree(this.template); } + private void loadQualityForms(OrderElementTemplate template) { + for (QualityForm each : template.getQualityForms()) { + each.getName(); + } + for (OrderElementTemplate each : template.getChildrenTemplates()) { + loadQualityForms(each); + } + } + private void initializeAcompanyingObjectsOnConversation() { getLabelsOnConversation().initializeLabels(); getQualityFormsOnConversation().initialize(); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/quality/QualityFormAssignerComponent.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/quality/QualityFormAssignerComponent.java new file mode 100644 index 000000000..5cbfeb9a8 --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/quality/QualityFormAssignerComponent.java @@ -0,0 +1,90 @@ +/* + * This file is part of ###PROJECT_NAME### + * + * Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e + * Desenvolvemento Tecnolóxico de Galicia + * + * 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 . + */ +package org.navalplanner.web.templates.quality; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Set; + +import org.navalplanner.business.qualityforms.entities.QualityForm; +import org.navalplanner.business.templates.entities.OrderElementTemplate; +import org.navalplanner.web.common.Util; +import org.navalplanner.web.common.components.bandboxsearch.BandboxSearch; +import org.navalplanner.web.orders.AssignedTaskQualityFormsToOrderElementController; +import org.navalplanner.web.orders.AssignedTaskQualityFormsToOrderElementController.ICheckQualityFormAssigned; +import org.navalplanner.web.templates.IOrderTemplatesModel; +import org.zkoss.zk.ui.HtmlMacroComponent; + +/** + * @author Óscar González Fernández + * + */ +public class QualityFormAssignerComponent extends HtmlMacroComponent { + + private OrderElementTemplate template; + private IOrderTemplatesModel model; + + public void useModel(IOrderTemplatesModel model) { + template = model.getTemplate(); + this.model = model; + } + + public List getNotAssignedQualityForms() { + if (model == null) { + return Collections.emptyList(); + } + Set result = model.getAllQualityForms(); + result.removeAll(template.getQualityForms()); + return new ArrayList(result); + } + + public List getAssigned() { + if (template == null) { + return Collections.emptyList(); + } + return new ArrayList(template.getQualityForms()); + } + + public void onAssignTaskQualityForm() { + ICheckQualityFormAssigned checkQualityFormAssigned = new ICheckQualityFormAssigned() { + + @Override + public boolean isAssigned(QualityForm qualityForm) { + return template.getQualityForms().contains(qualityForm); + } + }; + QualityForm qualityForm = AssignedTaskQualityFormsToOrderElementController + .retrieveQualityFormFrom(getQualityFormFinder(), + checkQualityFormAssigned); + template.addQualityForm(qualityForm); + Util.reloadBindings(this); + } + + public void remove(QualityForm qualityForm) { + template.removeQualityForm(qualityForm); + Util.reloadBindings(this); + } + + private BandboxSearch getQualityFormFinder() { + return (BandboxSearch) getFellow("qualityFormFinder"); + } + +} diff --git a/navalplanner-webapp/src/main/webapp/templates/_assignedQualityForms.zul b/navalplanner-webapp/src/main/webapp/templates/_assignedQualityForms.zul new file mode 100644 index 000000000..e7391a46c --- /dev/null +++ b/navalplanner-webapp/src/main/webapp/templates/_assignedQualityForms.zul @@ -0,0 +1,71 @@ + + + + + + + + + + + + +