From f3bb47ea2ff55303bdd33417d9dcb7239eb59120 Mon Sep 17 00:00:00 2001 From: Diego Pino Garcia Date: Mon, 19 Oct 2009 18:48:36 +0200 Subject: [PATCH] ItEr31S12ValidacionEProbasFuncionaisItEr30S17: Fix bug saving CriterionType and its Criterions after pressing saveAndContinue #Bug58 --- .../CriterionAdminController_V2.java | 41 ++++++++++++++----- .../criterion/CriterionTreeController.java | 3 +- .../criterion/CriterionsModel_V2.java | 11 +++-- .../criterion/ICriterionsModel_V2.java | 41 +++++++++++-------- 4 files changed, 66 insertions(+), 30 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionAdminController_V2.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionAdminController_V2.java index a338f0836..54f26171d 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionAdminController_V2.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionAdminController_V2.java @@ -39,6 +39,7 @@ import org.navalplanner.web.common.Util; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Checkbox; +import org.zkoss.zul.Tree; import org.zkoss.zul.Window; /** @@ -205,24 +206,21 @@ public class CriterionAdminController_V2 extends GenericForwardComposer { } public void saveAndClose(){ - try{ + try { + clearUserMessages(); save(); close(); - } catch (ValidationException e) {} + } catch (ValidationException e) { + + } } - public void saveAndContinue(){ - try{ - save(); - } catch (ValidationException e) {} - } - - public void close(){ + public void close() { onlyOneVisible.showOnly(listing); Util.reloadBindings(listing); } - private void save() throws ValidationException{ + private void save() throws ValidationException { try { criterionsModel_V2.saveCriterionType(); messagesForUser.showMessage(Level.INFO, @@ -237,6 +235,29 @@ public class CriterionAdminController_V2 extends GenericForwardComposer { } } + private void clearUserMessages() { + messagesForUser.clearMessages(); + } + + public void saveAndContinue() { + try{ + save(); + reloadCriterionType(); + } catch (ValidationException e) { + + } + } + + private void reloadCriterionType() { + Tree tree = (Tree) getCurrentWindow().getFellowIfAny("tree"); + criterionsModel_V2.reloadCriterionType(); + Util.reloadBindings(tree); + } + + private Component getCurrentWindow() { + return (editComponent.isVisible()) ? editComponent : createComponent; + } + public List getCriterionTypes() { List types = criterionsModel_V2.getTypes(); return types; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionTreeController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionTreeController.java index 57f373a9a..6f4fc78e3 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionTreeController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionTreeController.java @@ -339,7 +339,8 @@ public class CriterionTreeController extends GenericForwardComposer { reloadTree(); } catch (ValidationException e) { for (InvalidValue invalidValue : e.getInvalidValues()) { - messagesForUser.showMessage(Level.INFO,invalidValue.getMessage()); + messagesForUser.showMessage(Level.ERROR, invalidValue + .getMessage()); } } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionsModel_V2.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionsModel_V2.java index 5ed86cda8..524eb70fc 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionsModel_V2.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionsModel_V2.java @@ -26,7 +26,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.Set; import org.apache.commons.lang.Validate; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -39,7 +38,6 @@ import org.navalplanner.business.resources.daos.ICriterionTypeDAO; import org.navalplanner.business.resources.daos.IResourceDAO; import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.CriterionType; -import org.navalplanner.business.resources.entities.CriterionWithItsType; import org.navalplanner.business.resources.entities.ICriterionType; import org.navalplanner.business.resources.entities.Resource; import org.navalplanner.business.resources.entities.Worker; @@ -168,7 +166,6 @@ public class CriterionsModel_V2 implements ICriterionsModel_V2 { throw new ValidationException(invalidValues); criterionTreeModel.saveCriterions(criterionType); criterionTypeDAO.save(criterionType); - } @Override @@ -215,4 +212,12 @@ public class CriterionsModel_V2 implements ICriterionsModel_V2 { public boolean getAllowHierarchy(){ return this.criterionType.allowHierarchy(); } + + @Override + @Transactional(readOnly = true) + public void reloadCriterionType() { + this.criterionType = getFromDB(criterionType); + this.criterionTreeModel = new CriterionTreeModel(this.criterionType); + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/ICriterionsModel_V2.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/ICriterionsModel_V2.java index 399e1addd..7b16f8aa9 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/ICriterionsModel_V2.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/ICriterionsModel_V2.java @@ -36,38 +36,47 @@ import org.navalplanner.business.resources.entities.Worker; */ public interface ICriterionsModel_V2 { - List getTypes(); + boolean getAllowHierarchy(); - Collection getCriterionsFor(ICriterionType type); + List getAllWorkers(); Criterion getCriterion(); + Collection getCriterionsFor(ICriterionType type); + ICriterionTreeModel getCriterionTreeModel(); ICriterionType getCriterionType(); + List getResourcesSatisfyingCurrentCriterionOfType( + Class klass); + + ICriterionType getTypeFor(Criterion criterion); + + List getTypes(); + + boolean isApplyableToWorkers(Criterion criterion); + + boolean isEditing(); + void prepareForCreate(); void prepareForCreate(CriterionType criterionType); + public void prepareForEdit(CriterionType criterionType); + public void prepareForRemove(CriterionType criterionType); - public void prepareForEdit(CriterionType criterionType); + /** + * Reloads {@link CriterionType} from DB and all its criterions + * + * This method should be call after saveAndContinue() from controller to + * synchronize what has been committed to DB after saving and the model + * + */ + void reloadCriterionType(); public void remove(CriterionType criterionType); - ICriterionType getTypeFor(Criterion criterion); - void saveCriterionType() throws ValidationException; - - boolean isEditing(); - - boolean isApplyableToWorkers(Criterion criterion); - - List getResourcesSatisfyingCurrentCriterionOfType( - Class klass); - - List getAllWorkers(); - - boolean getAllowHierarchy(); }