ItEr54S09AdaptacionServiciosRESTItEr53S10: Added the checkbox 'generate code' to the MaterialCategory edition interface.

Also added the attribute 'generateCode' to the entity to make this value persistent.
This commit is contained in:
Jacobo Aragunde Pérez 2010-04-15 21:51:46 +02:00 committed by Javier Moran Rua
parent 17f2005e2d
commit 519c9ca023
5 changed files with 77 additions and 3 deletions

View file

@ -64,6 +64,8 @@ public class MaterialCategory extends IntegrationEntity {
@Valid
private Set<Material> materials = new HashSet<Material>();
private Boolean generateCode = false;
// Default constructor, needed by Hibernate
protected MaterialCategory() {
@ -133,6 +135,14 @@ public class MaterialCategory extends IntegrationEntity {
materials.remove(material);
}
public void setGenerateCode(Boolean generateCode) {
this.generateCode = generateCode;
}
public Boolean getGenerateCode() {
return generateCode;
}
@AssertTrue(message="material category name has to be unique. It is already used")
public boolean checkConstraintUniqueName() {
boolean result;

View file

@ -53,6 +53,8 @@
<property name="name" />
<property name="generateCode" not-null="true" />
<set name="subcategories" inverse="true" cascade="all-delete-orphan">
<key column="PARENT_ID"/>
<one-to-many class="MaterialCategory"/>

View file

@ -41,12 +41,14 @@ import org.navalplanner.web.common.Util;
import org.springframework.beans.factory.annotation.Autowired;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.WrongValueException;
import org.zkoss.zk.ui.event.CheckEvent;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.event.InputEvent;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Button;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Grid;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
@ -195,6 +197,39 @@ public class MaterialsController extends
}
tb.setParent(tc);
tc.setParent(tr);
final Textbox codeTb = new Textbox(materialCategory.getCode());
codeTb.setDisabled(materialCategory.getGenerateCode());
codeTb.addEventListener("onChange", new EventListener() {
@Override
public void onEvent(Event event) throws Exception {
final InputEvent ie = (InputEvent) event;
materialCategory.setCode(ie.getValue());
}
});
Treecell codeTc = new Treecell();
codeTb.setParent(codeTc);
codeTc.setParent(tr);
final Checkbox cb = new Checkbox();
cb.setChecked(materialCategory.getGenerateCode());
cb.addEventListener("onCheck", new EventListener() {
@Override
public void onEvent(Event event) throws Exception {
final CheckEvent ce = (CheckEvent) event;
materialCategory.setGenerateCode(ce.isChecked());
if(ce.isChecked() && materialCategory.isNewObject()) {
materialCategory.setCodeAutogenerated();
codeTb.setText(materialCategory.getCode());
}
codeTb.setDisabled(ce.isChecked());
Util.reloadBindings(codeTb);
}
});
Treecell generateCodeTc = new Treecell();
cb.setParent(generateCodeTc);
generateCodeTc.setParent(tr);
appendDeleteButton(ti);
}
}
@ -353,7 +388,12 @@ public class MaterialsController extends
final MaterialCategory materialCategory = (MaterialCategory) bean;
final Treeitem treeitem = findTreeItemByMaterialCategory(categoriesTree, materialCategory);
if (treeitem != null) {
throw new WrongValueException(getCategoryTextbox(treeitem), each.getMessage());
if(each.getPropertyName().equals("name")) {
throw new WrongValueException(getCategoryTextbox(treeitem), each.getMessage());
}
if(each.getPropertyName().equals("code")) {
throw new WrongValueException(getCategoryCodeTextbox(treeitem), each.getMessage());
}
}
}
}
@ -366,6 +406,12 @@ public class MaterialsController extends
return (Textbox) treecell.getChildren().get(0);
}
private Textbox getCategoryCodeTextbox(Treeitem treeitem) {
final Treerow treerow = (Treerow) treeitem.getChildren().get(0);
final Treecell treecell = (Treecell) treerow.getChildren().get(1);
return (Textbox) treecell.getChildren().get(0);
}
private boolean locateAndSelectMaterialCategory(MaterialCategory materialCategory) {
Treeitem treeitem = findTreeItemByMaterialCategory(categoriesTree, materialCategory);
if (treeitem != null) {

View file

@ -32,6 +32,7 @@ import java.util.Set;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.Validate;
import org.hibernate.validator.InvalidValue;
import org.navalplanner.business.common.daos.IConfigurationDAO;
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
import org.navalplanner.business.common.exceptions.ValidationException;
import org.navalplanner.business.materials.daos.IMaterialCategoryDAO;
@ -62,6 +63,9 @@ public class MaterialsModel implements IMaterialsModel {
@Autowired
IUnitTypeDAO unitTypeDAO;
@Autowired
IConfigurationDAO configurationDAO;
MutableTreeModel<MaterialCategory> materialCategories = MutableTreeModel
.create(MaterialCategory.class);
@ -121,10 +125,20 @@ public class MaterialsModel implements IMaterialsModel {
}
@Override
@Transactional(readOnly=true)
public void addMaterialCategory(MaterialCategory parent, String categoryName) throws ValidationException {
Validate.notNull(categoryName);
MaterialCategory child = MaterialCategory.create(_(categoryName));
Boolean generateCode = configurationDAO.getConfiguration().
getGenerateCodeForMaterialCategories();
MaterialCategory child;
if(generateCode) {
child = MaterialCategory.create(_(categoryName));
}
else {
child = MaterialCategory.createUnvalidated("", _(categoryName));
}
child.setGenerateCode(generateCode);
final MaterialCategory materialCategory = findMaterialCategory(child);
if (materialCategory != null) {

View file

@ -60,7 +60,9 @@
treeitemRenderer="@{materialsController.materialCategoryRenderer}"
onSelect="materialsController.refreshMaterials()">
<treecols>
<treecol label="Name" />
<treecol label="${i18n:_('Name')}" />
<treecol label="${i18n:_('Code')}" />
<treecol label="${i18n:_('Generate code')}" />
<treecol label="" />
</treecols>
</tree>