ItEr31S12ValidacionEProbasFuncionaisItEr30S17: Fix bug saving CriterionType and its Criterions after pressing saveAndContinue #Bug58

This commit is contained in:
Diego Pino Garcia 2009-10-19 18:48:36 +02:00 committed by Javier Moran Rua
parent bd559852be
commit f3bb47ea2f
4 changed files with 66 additions and 30 deletions

View file

@ -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<CriterionType> getCriterionTypes() {
List<CriterionType> types = criterionsModel_V2.getTypes();
return types;

View file

@ -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());
}
}
}

View file

@ -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);
}
}

View file

@ -36,38 +36,47 @@ import org.navalplanner.business.resources.entities.Worker;
*/
public interface ICriterionsModel_V2 {
List<CriterionType> getTypes();
boolean getAllowHierarchy();
Collection<Criterion> getCriterionsFor(ICriterionType<?> type);
List<Worker> getAllWorkers();
Criterion getCriterion();
Collection<Criterion> getCriterionsFor(ICriterionType<?> type);
ICriterionTreeModel getCriterionTreeModel();
ICriterionType<?> getCriterionType();
<T extends Resource> List<T> getResourcesSatisfyingCurrentCriterionOfType(
Class<T> klass);
ICriterionType<?> getTypeFor(Criterion criterion);
List<CriterionType> 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);
<T extends Resource> List<T> getResourcesSatisfyingCurrentCriterionOfType(
Class<T> klass);
List<Worker> getAllWorkers();
boolean getAllowHierarchy();
}