ItEr30S12ProcuraOrganizacionsTraballoItEr29S14: Prevent moving parent order elements into its own children
This commit is contained in:
parent
bc9d193242
commit
1c81cec3f7
2 changed files with 35 additions and 0 deletions
|
|
@ -167,6 +167,7 @@ public class OrderElementTreeController extends GenericForwardComposer {
|
|||
|
||||
getModel().move(fromNode, toNode);
|
||||
}
|
||||
filterByPredicateIfAny();
|
||||
}
|
||||
|
||||
public void addOrderElement() {
|
||||
|
|
|
|||
|
|
@ -203,10 +203,44 @@ public class OrderElementTreeModel {
|
|||
if (getChildren(destination).contains(toBeMoved)) {
|
||||
return;// it's already moved
|
||||
}
|
||||
if (isGreatInHierarchy(toBeMoved, destination)) {
|
||||
return;
|
||||
}
|
||||
removeNode(toBeMoved);
|
||||
addOrderElementAt(destination, toBeMoved, position);
|
||||
}
|
||||
|
||||
private boolean isGreatInHierarchy(OrderElement parent, OrderElement child) {
|
||||
return find(child, getChildren(parent));
|
||||
}
|
||||
|
||||
private boolean find(OrderElement child, List<OrderElement> children) {
|
||||
if (children.indexOf(child) >= 0)
|
||||
return true;
|
||||
for (OrderElement criterionDTO : children) {
|
||||
return find(child, getChildren(criterionDTO));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if parent is an ancestor of child
|
||||
*
|
||||
* @param parent
|
||||
* @param child
|
||||
* @return
|
||||
*/
|
||||
private boolean isAncestor(OrderElement parent, OrderElement child) {
|
||||
OrderElement orderElement = child.getParent();
|
||||
while (orderElement != null) {
|
||||
if (orderElement.equals(parent)) {
|
||||
return true;
|
||||
}
|
||||
orderElement = orderElement.getParent();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void up(OrderElement node) {
|
||||
IOrderLineGroup orderLineGroup = asOrderLineGroup(tree.getParent(node));
|
||||
orderLineGroup.up(node);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue