From e98db057c05edb4921c792d47da24b0420a19fb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= Date: Wed, 2 Dec 2009 20:58:29 +0100 Subject: [PATCH] ItEr35S15CUAdministracionCategoriaCosteItEr34S15: edition and creation of CostCategories Interface to create and edit CostCategories. At the moment, only the simple attributes can be edited, the relation with HourCost is not managed yet. --- .../costcategories/entities/CostCategory.java | 4 ++ .../CostCategoryCRUDController.java | 58 ++++++++++++++++++- .../web/costcategories/CostCategoryModel.java | 34 +++++++++++ .../costcategories/ICostCategoryModel.java | 12 ++++ .../costcategories/_editCostCategory.zul | 35 +++++++++++ .../costcategories/_listCostCategories.zul | 2 +- 6 files changed, 141 insertions(+), 4 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/costcategories/entities/CostCategory.java b/navalplanner-business/src/main/java/org/navalplanner/business/costcategories/entities/CostCategory.java index 40e7d38de..ce83130b2 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/costcategories/entities/CostCategory.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/costcategories/entities/CostCategory.java @@ -43,6 +43,10 @@ public class CostCategory extends BaseEntity { } + public static CostCategory create() { + return (CostCategory) create(new CostCategory()); + } + public static CostCategory create(String name) { return (CostCategory) create(new CostCategory(name)); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/CostCategoryCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/CostCategoryCRUDController.java index f01bf70ba..4a6949b5b 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/CostCategoryCRUDController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/CostCategoryCRUDController.java @@ -20,10 +20,17 @@ package org.navalplanner.web.costcategories; -import java.util.List; +import static org.navalplanner.web.I18nHelper._; +import java.util.List; +import java.util.Set; + +import org.hibernate.validator.InvalidValue; +import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.costcategories.entities.CostCategory; +import org.navalplanner.business.costcategories.entities.HourCost; import org.navalplanner.web.common.IMessagesForUser; +import org.navalplanner.web.common.Level; import org.navalplanner.web.common.MessagesForUser; import org.navalplanner.web.common.OnlyOneVisible; import org.navalplanner.web.common.Util; @@ -62,12 +69,16 @@ public class CostCategoryCRUDController extends GenericForwardComposer @Override public void goToCreateForm() { - //TODO + costCategoryModel.initCreate(); + getVisibility().showOnly(createWindow); + Util.reloadBindings(createWindow); } @Override public void goToEditForm(CostCategory costCategory) { - //TODO + costCategoryModel.initEdit(costCategory); + getVisibility().showOnly(createWindow); + Util.reloadBindings(createWindow); } @Override @@ -76,10 +87,51 @@ public class CostCategoryCRUDController extends GenericForwardComposer Util.reloadBindings(listWindow); } + public void cancel() { + goToList(); + } + + + public void saveAndExit() { + if (save()) { + goToList(); + } + } + + public void saveAndContinue() { + if (save()) { + goToEditForm(getCostCategory()); + } + } + + public boolean save() { + try { + costCategoryModel.confirmSave(); + messagesForUser.showMessage(Level.INFO, + _("Type of work hours saved")); + return true; + } catch (ValidationException e) { + String message = _("The following errors were found: "); + for(InvalidValue each: e.getInvalidValues()) { + message += each.getMessage(); + } + messagesForUser.showMessage(Level.ERROR, message); + } + return false; + } + + public CostCategory getCostCategory() { + return costCategoryModel.getCostCategory(); + } + public List getCostCategories() { return costCategoryModel.getCostCategories(); } + public Set getHourCosts() { + return costCategoryModel.getHourCosts(); + } + private OnlyOneVisible getVisibility() { return (visibility == null) ? new OnlyOneVisible(createWindow, listWindow) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/CostCategoryModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/CostCategoryModel.java index 9263186af..5a4b5d03c 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/CostCategoryModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/CostCategoryModel.java @@ -21,13 +21,17 @@ package org.navalplanner.web.costcategories; import java.util.List; +import java.util.Set; +import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.costcategories.daos.ICostCategoryDAO; import org.navalplanner.business.costcategories.entities.CostCategory; +import org.navalplanner.business.costcategories.entities.HourCost; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * Model for UI operations related to {@link CostCategory} @@ -38,6 +42,8 @@ import org.springframework.stereotype.Service; @Scope(BeanDefinition.SCOPE_PROTOTYPE) public class CostCategoryModel implements ICostCategoryModel { + private CostCategory costCategory; + @Autowired private ICostCategoryDAO costCategoryDAO; @@ -45,4 +51,32 @@ public class CostCategoryModel implements ICostCategoryModel { public List getCostCategories() { return costCategoryDAO.list(CostCategory.class); } + + @Override + @Transactional(readOnly = true) + public void initCreate() { + costCategory = CostCategory.create(); + } + + @Override + @Transactional(readOnly = true) + public void initEdit(CostCategory costCategory) { + this.costCategory = costCategory; + } + + @Override + public Set getHourCosts() { + return costCategory.getHourCosts(); + } + + @Override + public CostCategory getCostCategory() { + return costCategory; + } + + @Override + @Transactional + public void confirmSave() throws ValidationException { + costCategoryDAO.save(costCategory); + } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/ICostCategoryModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/ICostCategoryModel.java index 09c4eb7e3..8cbd46c85 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/ICostCategoryModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/costcategories/ICostCategoryModel.java @@ -21,8 +21,11 @@ package org.navalplanner.web.costcategories; import java.util.List; +import java.util.Set; +import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.costcategories.entities.CostCategory; +import org.navalplanner.business.costcategories.entities.HourCost; /** * Model for UI operations related to {@link CostCategory} @@ -38,4 +41,13 @@ public interface ICostCategoryModel { */ List getCostCategories(); + Set getHourCosts(); + + CostCategory getCostCategory(); + + void initCreate(); + + void initEdit(CostCategory costCategory); + + void confirmSave() throws ValidationException; } diff --git a/navalplanner-webapp/src/main/webapp/costcategories/_editCostCategory.zul b/navalplanner-webapp/src/main/webapp/costcategories/_editCostCategory.zul index 0c85e2f81..ec8433ba3 100644 --- a/navalplanner-webapp/src/main/webapp/costcategories/_editCostCategory.zul +++ b/navalplanner-webapp/src/main/webapp/costcategories/_editCostCategory.zul @@ -21,5 +21,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +