ItEr37S13CUAsignacionMateriaisAPedidoItEr36S15: Remove Category in case it does not contain Subcategories and all its material assignments were removed
This commit is contained in:
parent
54645ef2f7
commit
9a7a7d07d2
2 changed files with 61 additions and 3 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue