ItEr37S13CUAsignacionMateriaisAPedidoItEr36S15: Remove Category in case it does not contain Subcategories and all its material assignments were removed

This commit is contained in:
Diego Pino Garcia 2009-12-02 17:19:23 +01:00 committed by Javier Moran Rua
parent 54645ef2f7
commit 9a7a7d07d2
2 changed files with 61 additions and 3 deletions

View file

@ -394,8 +394,50 @@ public class AssignedMaterialsToOrderElementController extends
private void removeMaterialAssignment(MaterialAssignment materialAssignment) {
assignedMaterialsToOrderElementModel.removeMaterialAssignment(materialAssignment);
Util.reloadBindings(gridMaterials);
// Reload categoriesTree
categoriesTree.setModel(getMaterialCategories());
reloadTree(categoriesTree);
}
private void reloadTree(Tree tree) {
final Treeitem treeitem = tree.getSelectedItem();
if (treeitem != null) {
final MaterialCategory materialCategory = (MaterialCategory) treeitem.getValue();
tree.setModel(getMaterialCategories());
locateAndSelectMaterialCategory(tree, materialCategory);
} else {
tree.setModel(getMaterialCategories());
Util.reloadBindings(gridMaterials);
}
}
private boolean locateAndSelectMaterialCategory(Tree tree, MaterialCategory materialCategory) {
Treeitem treeitem = findTreeItemByMaterialCategory(tree.getRoot(), materialCategory);
if (treeitem != null) {
treeitem.setSelected(true);
return true;
}
return false;
}
@SuppressWarnings("unchecked")
private Treeitem findTreeItemByMaterialCategory(Component node, MaterialCategory materialCategory) {
if (node instanceof Treeitem) {
final Treeitem treeitem = (Treeitem) node;
final MaterialCategory _materialCategory = (MaterialCategory) treeitem.getValue();
if (_materialCategory.getId().equals(materialCategory.getId())) {
return treeitem;
}
}
for (Iterator i = node.getChildren().iterator(); i.hasNext(); ) {
Object obj = i.next();
if (obj instanceof Component) {
Treeitem treeitem = findTreeItemByMaterialCategory((Component) obj, materialCategory);
if (treeitem != null) {
return treeitem;
}
}
}
return null;
}
/**

View file

@ -191,7 +191,7 @@ public class AssignedMaterialsToOrderElementModel implements
.getMaterialAssignments()) {
final Material material = materialAssigment.getMaterial();
if (materialCategory == null
|| materialCategory.equals(material.getCategory())) {
|| materialCategory.getId().equals(material.getCategory().getId())) {
result.add(materialAssigment);
}
}
@ -231,8 +231,24 @@ public class AssignedMaterialsToOrderElementModel implements
}
@Override
@Transactional(readOnly = true)
public void removeMaterialAssignment(MaterialAssignment materialAssignment) {
orderElement.removeMaterialAssignment(materialAssignment);
// Remove material category from materialCategories tree
final MaterialCategory materialCategory = materialAssignment.getMaterial().getCategory();
removeCategory(materialCategories, materialCategory);
}
private void removeCategory(
MutableTreeModel<MaterialCategory> materialCategories,
MaterialCategory materialCategory) {
categoryDAO.reattach(materialCategory);
final boolean canDelete = materialCategory.getSubcategories().isEmpty() && getAssignedMaterials(materialCategory).isEmpty();
if (canDelete) {
materialCategories.remove(materialCategory);
removeCategory(materialCategories, materialCategory.getParent());
}
}
@Override