ItEr30S12ProcuraOrganizacionsTraballoItEr29S14: Prevent moving parent order elements into its own children

This commit is contained in:
Diego Pino Garcia 2009-10-19 23:29:22 +02:00 committed by Javier Moran Rua
parent bc9d193242
commit 1c81cec3f7
2 changed files with 35 additions and 0 deletions

View file

@ -167,6 +167,7 @@ public class OrderElementTreeController extends GenericForwardComposer {
getModel().move(fromNode, toNode);
}
filterByPredicateIfAny();
}
public void addOrderElement() {

View file

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