Removed added method in EntitiesTree and moved to business.

* Created a new method "onChildAddedAdditionalActions" on
  TreeNodeOnListWithSchedulingState.
* Calling "updateCriterionRequirements" from new method instead of EntitiesTree
  implementation.

FEA: ItEr74S07WBSTreeRefactoring
This commit is contained in:
Manuel Rego Casasnovas 2011-04-19 13:49:38 +02:00
parent 00ef88227a
commit 54c2fc2817
6 changed files with 25 additions and 42 deletions

View file

@ -554,13 +554,15 @@ public abstract class CriterionRequirementHandler<T, S, R> implements
public void updateMyCriterionRequirements(T orderElement) {
final T parent = getParent(orderElement);
Set<CriterionRequirement> requirementsParent = getCriterionRequirements(parent);
Set<IndirectCriterionRequirement> currentIndirects = getCurrentIndirectRequirements(
getIndirectCriterionRequirement(orderElement),
requirementsParent);
transformDirectToIndirectIfNeeded(orderElement, currentIndirects);
removeOldIndirects(orderElement, currentIndirects);
addNewsIndirects(orderElement, currentIndirects);
if (parent != null) {
Set<CriterionRequirement> requirementsParent = getCriterionRequirements(parent);
Set<IndirectCriterionRequirement> currentIndirects = getCurrentIndirectRequirements(
getIndirectCriterionRequirement(orderElement),
requirementsParent);
transformDirectToIndirectIfNeeded(orderElement, currentIndirects);
removeOldIndirects(orderElement, currentIndirects);
addNewsIndirects(orderElement, currentIndirects);
}
}
protected abstract T getParent(T orderElement);

View file

@ -90,11 +90,17 @@ public class OrderLineGroup extends OrderElement implements
return node.getSchedulingState();
}
@Override
protected void onChildAddedAdditionalActions(OrderElement newChild) {
updateCriterionRequirements();
}
@Override
protected void onChildRemovedAdditionalActions(OrderElement removedChild) {
if (removedChild.isScheduled() && getThis().isScheduled()) {
removeChildTask(removedChild);
}
updateCriterionRequirements();
}
private void removeChildTask(OrderElement removedChild) {

View file

@ -46,6 +46,15 @@ public abstract class TreeNodeOnListWithSchedulingState<T extends ITreeNode<T>>
@Override
protected void onChildAdded(T newChild) {
updateSchedulingStateGiven(newChild);
onChildAddedAdditionalActions(newChild);
}
/**
* This method is intended to be overridden
*
* @param previousChild
*/
protected void onChildAddedAdditionalActions(T newChild) {
}
@Override
@ -55,7 +64,7 @@ public abstract class TreeNodeOnListWithSchedulingState<T extends ITreeNode<T>>
}
/**
* This method is intended to be overriden
* This method is intended to be overridden
* @param previousChild
*/
protected void onChildRemovedAdditionalActions(T previousChild) {

View file

@ -28,8 +28,6 @@ import java.util.List;
import org.navalplanner.business.orders.entities.Order;
import org.navalplanner.business.orders.entities.OrderElement;
import org.navalplanner.business.orders.entities.OrderLine;
import org.navalplanner.business.trees.ITreeNode;
import org.navalplanner.business.trees.ITreeParentNode;
import org.navalplanner.web.tree.EntitiesTree;
/**
@ -48,24 +46,6 @@ public class OrderElementTreeModel extends EntitiesTree<OrderElement> {
super(OrderElement.class, root);
}
private void updateCriterionRequirementsInHierarchy(
OrderElement destination, OrderElement origin,
OrderElement container) {
if (destination instanceof OrderLine) {
container.updateCriterionRequirements();
} else {
origin.updateCriterionRequirements();
}
}
@Override
protected void added(ITreeNode<OrderElement> destination,
ITreeNode<OrderElement> added,
ITreeParentNode<OrderElement> turnedIntoContainer) {
updateCriterionRequirementsInHierarchy(destination.getThis(), added
.getThis(), turnedIntoContainer.getThis());
}
@Override
protected OrderElement createNewElement() {
OrderElement newOrderElement = OrderLine

View file

@ -24,8 +24,6 @@ import static org.navalplanner.business.i18n.I18nHelper._;
import org.navalplanner.business.templates.entities.OrderElementTemplate;
import org.navalplanner.business.templates.entities.OrderLineTemplate;
import org.navalplanner.business.trees.ITreeNode;
import org.navalplanner.business.trees.ITreeParentNode;
import org.navalplanner.web.tree.EntitiesTree;
/**
@ -38,13 +36,6 @@ public class TemplatesTree extends EntitiesTree<OrderElementTemplate> {
super(OrderElementTemplate.class, root);
}
@Override
protected void added(ITreeNode<OrderElementTemplate> destination,
ITreeNode<OrderElementTemplate> added,
ITreeParentNode<OrderElementTemplate> turnedIntoContainer) {
// do nothing
}
@Override
protected OrderElementTemplate createNewElement() {
OrderLineTemplate result = OrderLineTemplate.createNew();

View file

@ -140,7 +140,6 @@ public abstract class EntitiesTree<T extends ITreeNode<T>> {
ITreeParentNode<T> container = turnIntoContainerIfNeeded(parent);
container.add(element.getThis());
addToTree(container.getThis(), element);
added(parent, element, container);
}
private void addOrderElementAt(ITreeNode<T> destinationNode,
@ -153,12 +152,8 @@ public abstract class EntitiesTree<T extends ITreeNode<T>> {
// children, so it should be redrawn
tree.sendContentsChangedEventFor(container.getThis());
}
added(destinationNode, elementToAdd, container);
}
protected abstract void added(ITreeNode<T> destination, ITreeNode<T> added,
ITreeParentNode<T> turnedIntoContainer);
private ITreeParentNode<T> turnIntoContainerIfNeeded(
ITreeNode<T> selectedForTurningIntoContainer) {
if (selectedForTurningIntoContainer instanceof ITreeParentNode) {