From dcdf7a03c97c9488b743cf93e42a3af499853252 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= Date: Mon, 4 Jan 2010 15:58:26 +0100 Subject: [PATCH] ItEr41S25CUAltaSubcontrataItEr30S08: Implemented a basic creation interface. It doesn't perform complex validations. Edition is not implemented, so the button 'Save & Continue' doesn't work as expected. The field 'User' is not implemented either. --- .../ExternalCompanyCRUDController.java | 45 +++++++++++- .../ExternalCompanyModel.java | 19 +++++ .../IExternalCompanyModel.java | 22 ++++++ .../_editExternalCompany.zul | 72 +++++++++++++++++++ .../_listExternalCompanies.zul | 2 +- 5 files changed, 157 insertions(+), 3 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/ExternalCompanyCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/ExternalCompanyCRUDController.java index c27ee4a5c..50848dc56 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/ExternalCompanyCRUDController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/ExternalCompanyCRUDController.java @@ -20,11 +20,16 @@ package org.navalplanner.web.externalcompanies; +import static org.navalplanner.web.I18nHelper._; + import java.util.List; +import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.externalcompanies.entities.ExternalCompany; import org.navalplanner.business.users.entities.User; +import org.navalplanner.web.common.ConstraintChecker; 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; @@ -63,8 +68,9 @@ public class ExternalCompanyCRUDController extends GenericForwardComposer @Override public void goToCreateForm() { - // TODO implement - + externalCompanyModel.initCreate(); + getVisibility().showOnly(createWindow); + Util.reloadBindings(createWindow); } @Override @@ -78,10 +84,45 @@ public class ExternalCompanyCRUDController extends GenericForwardComposer Util.reloadBindings(listWindow); } + public void cancel() { + goToList(); + } + + public void saveAndExit() { + if (save()) { + goToList(); + } + } + + public void saveAndContinue() { + if (save()) { + goToEditForm(getCompany()); + } + } + + public boolean save() { + if(!ConstraintChecker.isValid(createWindow)) { + return false; + } + try { + externalCompanyModel.confirmSave(); + messagesForUser.showMessage(Level.INFO, + _("Company saved")); + return true; + } catch (ValidationException e) { + messagesForUser.showInvalidValues(e); + } + return false; + } + public List getCompanies() { return externalCompanyModel.getCompanies(); } + public ExternalCompany getCompany() { + return externalCompanyModel.getCompany(); + } + private OnlyOneVisible getVisibility() { return (visibility == null) ? new OnlyOneVisible(createWindow, listWindow) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/ExternalCompanyModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/ExternalCompanyModel.java index c9942baeb..2b8a2fd7e 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/ExternalCompanyModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/ExternalCompanyModel.java @@ -28,6 +28,7 @@ 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 ExternalCompany} @@ -41,9 +42,27 @@ public class ExternalCompanyModel implements IExternalCompanyModel { @Autowired private IExternalCompanyDAO externalCompanyDAO; + private ExternalCompany externalCompany; + @Override public List getCompanies() { return externalCompanyDAO.list(ExternalCompany.class); } + @Override + public ExternalCompany getCompany() { + return externalCompany; + } + + @Override + public void initCreate() { + externalCompany = ExternalCompany.create(); + } + + @Override + @Transactional + public void confirmSave() { + externalCompanyDAO.save(externalCompany); + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/IExternalCompanyModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/IExternalCompanyModel.java index e5ecf16a3..a692190f4 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/IExternalCompanyModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/externalcompanies/IExternalCompanyModel.java @@ -22,6 +22,7 @@ package org.navalplanner.web.externalcompanies; import java.util.List; +import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.externalcompanies.entities.ExternalCompany; /** @@ -37,4 +38,25 @@ public interface IExternalCompanyModel { * @return A list of {@link ExternalCompany} objects. */ List getCompanies(); + + /** + * Gets the current {@link ExternalCompany}. + * + * @return A {@link ExternalCompany} + */ + ExternalCompany getCompany(); + + /** + * Makes some operations needed before create a new {@link ExternalCompany}. + * + */ + void initCreate(); + + /** + * Stores the current {@link ExternalCompany}. + * + * @throws ValidationException + * If validation fails + */ + void confirmSave(); } diff --git a/navalplanner-webapp/src/main/webapp/externalcompanies/_editExternalCompany.zul b/navalplanner-webapp/src/main/webapp/externalcompanies/_editExternalCompany.zul index 83bfb6e04..5deaeaafa 100644 --- a/navalplanner-webapp/src/main/webapp/externalcompanies/_editExternalCompany.zul +++ b/navalplanner-webapp/src/main/webapp/externalcompanies/_editExternalCompany.zul @@ -22,4 +22,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +