From 013425c9caffaf8ce3dc5d23bd9321d71039b891 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Sun, 3 Jan 2010 17:18:40 +0100 Subject: [PATCH] ItEr41S20CUGravacionModelosUnidadesTraballoItEr40S25: Removing IOrderLineGroupManipulator since Order extends OrderLineGroup. --- .../orders/entities/IOrderLineGroup.java | 32 -------- .../orders/entities/OrderLineGroup.java | 53 +++++++++++- .../entities/OrderLineGroupManipulator.java | 80 ------------------- .../navalplanner/web/orders/IOrderModel.java | 4 +- .../web/orders/OrderCRUDController.java | 4 +- .../web/orders/OrderElementTreeModel.java | 21 +++-- .../navalplanner/web/orders/OrderModel.java | 3 +- 7 files changed, 64 insertions(+), 133 deletions(-) delete mode 100644 navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/IOrderLineGroup.java delete mode 100644 navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroupManipulator.java diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/IOrderLineGroup.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/IOrderLineGroup.java deleted file mode 100644 index 8bd284a54..000000000 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/IOrderLineGroup.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * This file is part of ###PROJECT_NAME### - * - * Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e - * Desenvolvemento Tecnolóxico de Galicia - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package org.navalplanner.business.orders.entities; - -import org.navalplanner.business.trees.ITreeNode; - -/** - * Container of {@link OrderElement}.
- * - * @author Óscar González Fernández - */ -public interface IOrderLineGroup extends ITreeNode { - -} \ No newline at end of file diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java index fc7ad95ac..4e62457e4 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroup.java @@ -46,7 +46,53 @@ import org.navalplanner.business.advance.exceptions.DuplicateAdvanceAssignmentFo import org.navalplanner.business.advance.exceptions.DuplicateValueTrueReportGlobalAdvanceException; import org.navalplanner.business.templates.entities.OrderElementTemplate; import org.navalplanner.business.templates.entities.OrderLineGroupTemplate; -public class OrderLineGroup extends OrderElement implements IOrderLineGroup { +import org.navalplanner.business.trees.ITreeNode; +import org.navalplanner.business.trees.TreeNodeOnList; + + +public class OrderLineGroup extends OrderElement implements + ITreeNode { + + private final class ChildrenManipulator extends + TreeNodeOnList { + + private ChildrenManipulator(OrderLineGroup parent, + List children) { + super(parent, children); + } + + @Override + protected void onChildAdded(OrderElement newChild) { + final OrderLineGroup parent = getParent(); + if (parent != null) { + SchedulingState schedulingState = newChild + .getSchedulingState(); + removeSchedulingStateFromParent(newChild); + parent.getSchedulingState().add(schedulingState); + } + } + + @Override + protected void onChildRemoved(OrderElement previousChild) { + removeSchedulingStateFromParent(previousChild); + } + + private void removeSchedulingStateFromParent( + OrderElement previousChild) { + SchedulingState schedulingState = previousChild + .getSchedulingState(); + if (!schedulingState.isRoot()) { + schedulingState.getParent().removeChild(schedulingState); + } + } + + @Override + protected void setParentIfRequired(OrderElement newChild) { + if (getParent() != null) { + newChild.setParent(getParent()); + } + } + } public static OrderLineGroup create() { OrderLineGroup result = new OrderLineGroup(); @@ -146,9 +192,8 @@ public class OrderLineGroup extends OrderElement implements IOrderLineGroup { getManipulator().up(orderElement); } - private OrderLineGroupManipulator getManipulator() { - return OrderLineGroupManipulator.createManipulatorForOrderLineGroup( - this, children); + private ChildrenManipulator getManipulator() { + return new ChildrenManipulator(this, children); } @Override diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroupManipulator.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroupManipulator.java deleted file mode 100644 index 266db0b7b..000000000 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderLineGroupManipulator.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of ###PROJECT_NAME### - * - * Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e - * Desenvolvemento Tecnolóxico de Galicia - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package org.navalplanner.business.orders.entities; - -import java.util.List; - -import org.navalplanner.business.trees.TreeNodeOnList; - -/** - * Implementation of {@link IOrderLineGroup}.
- * @author Óscar González Fernández - */ -public class OrderLineGroupManipulator extends - TreeNodeOnList { - - public static OrderLineGroupManipulator createManipulatorForOrder( - List orderElements) { - return new OrderLineGroupManipulator(null, orderElements); - } - - public static OrderLineGroupManipulator createManipulatorForOrderLineGroup( - OrderLineGroup group, List children) { - return new OrderLineGroupManipulator(group, children); - } - - private OrderLineGroupManipulator(OrderLineGroup parent, - List orderElements) { - super(parent, orderElements); - } - - protected void setParentIfRequired(OrderElement orderElement) { - if (getParent() != null) { - orderElement.setParent(getParent()); - } - } - - @Override - protected void onChildAdded(OrderElement newChild) { - addSchedulingStateToParent(newChild); - } - - private void addSchedulingStateToParent(OrderElement orderElement) { - final OrderLineGroup parent = getParent(); - if (parent != null) { - SchedulingState schedulingState = orderElement.getSchedulingState(); - removeSchedulingStateFromParent(orderElement); - parent.getSchedulingState().add(schedulingState); - } - } - - @Override - protected void onChildRemoved(OrderElement previousChild) { - removeSchedulingStateFromParent(previousChild); - } - - private void removeSchedulingStateFromParent(OrderElement orderElement) { - SchedulingState schedulingState = orderElement.getSchedulingState(); - if (!schedulingState.isRoot()) { - schedulingState.getParent().removeChild(schedulingState); - } - } -} \ No newline at end of file diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/IOrderModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/IOrderModel.java index 8d560b3bc..d0dffe255 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/IOrderModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/IOrderModel.java @@ -27,9 +27,9 @@ import java.util.Map; import org.navalplanner.business.calendars.entities.BaseCalendar; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.labels.entities.Label; -import org.navalplanner.business.orders.entities.IOrderLineGroup; import org.navalplanner.business.orders.entities.Order; import org.navalplanner.business.orders.entities.OrderElement; +import org.navalplanner.business.orders.entities.OrderLineGroup; import org.navalplanner.business.qualityforms.entities.QualityForm; import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.CriterionType; @@ -62,7 +62,7 @@ public interface IOrderModel { List getQualityForms(); - IOrderLineGroup getOrder(); + OrderLineGroup getOrder(); IOrderElementModel getOrderElementModel(OrderElement orderElement); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderCRUDController.java index 2e29099c5..4adb04a34 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderCRUDController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderCRUDController.java @@ -32,10 +32,10 @@ import org.hibernate.validator.InvalidValue; import org.navalplanner.business.calendars.entities.BaseCalendar; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.orders.entities.HoursGroup; -import org.navalplanner.business.orders.entities.IOrderLineGroup; 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.orders.entities.OrderLineGroup; import org.navalplanner.web.common.IMessagesForUser; import org.navalplanner.web.common.Level; import org.navalplanner.web.common.MessagesForUser; @@ -262,7 +262,7 @@ public class OrderCRUDController extends GenericForwardComposer { return cachedOnlyOneVisible; } - public IOrderLineGroup getOrder() { + public OrderLineGroup getOrder() { return orderModel.getOrder(); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementTreeModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementTreeModel.java index fc2ad7eef..d2a5405dc 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementTreeModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementTreeModel.java @@ -26,7 +26,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import org.navalplanner.business.orders.entities.IOrderLineGroup; import org.navalplanner.business.orders.entities.Order; import org.navalplanner.business.orders.entities.OrderElement; import org.navalplanner.business.orders.entities.OrderLine; @@ -117,7 +116,7 @@ public class OrderElementTreeModel { private void addOrderElementAt(OrderElement parent, OrderElement orderElement) { - IOrderLineGroup container = turnIntoContainerIfNeeded(parent); + OrderLineGroup container = turnIntoContainerIfNeeded(parent); container.add(orderElement); addToTree(toNode(container), orderElement); updateCriterionRequirementsInHierarchy(parent, orderElement, @@ -126,7 +125,7 @@ public class OrderElementTreeModel { private void addOrderElementAt(OrderElement destinationNode, OrderElement elementToAdd, int position) { - IOrderLineGroup container = turnIntoContainerIfNeeded(destinationNode); + OrderLineGroup container = turnIntoContainerIfNeeded(destinationNode); container.add(position, elementToAdd); addToTree(toNode(container), position, elementToAdd); updateCriterionRequirementsInHierarchy(destinationNode, elementToAdd, @@ -143,16 +142,16 @@ public class OrderElementTreeModel { } } - private OrderElement toNode(IOrderLineGroup container) { - return (OrderElement) container; + private OrderElement toNode(OrderLineGroup container) { + return container; } - private IOrderLineGroup turnIntoContainerIfNeeded( + private OrderLineGroup turnIntoContainerIfNeeded( OrderElement selectedForTurningIntoContainer) { - if (selectedForTurningIntoContainer instanceof IOrderLineGroup) { - return (IOrderLineGroup) selectedForTurningIntoContainer; + if (selectedForTurningIntoContainer instanceof OrderLineGroup) { + return (OrderLineGroup) selectedForTurningIntoContainer; } - IOrderLineGroup parentContainer = asOrderLineGroup(getParent(selectedForTurningIntoContainer)); + OrderLineGroup parentContainer = asOrderLineGroup(getParent(selectedForTurningIntoContainer)); OrderLineGroup asContainer = selectedForTurningIntoContainer .toContainer(); parentContainer.replace(selectedForTurningIntoContainer, asContainer); @@ -234,13 +233,13 @@ public class OrderElementTreeModel { } public void up(OrderElement node) { - IOrderLineGroup orderLineGroup = asOrderLineGroup(tree.getParent(node)); + OrderLineGroup orderLineGroup = asOrderLineGroup(tree.getParent(node)); orderLineGroup.up(node); tree.up(node); } public void down(OrderElement node) { - IOrderLineGroup orderLineGroup = asOrderLineGroup(tree.getParent(node)); + OrderLineGroup orderLineGroup = asOrderLineGroup(tree.getParent(node)); orderLineGroup.down(node); tree.down(node); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java index 51d122135..0ee6af2b9 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderModel.java @@ -49,7 +49,6 @@ import org.navalplanner.business.labels.entities.Label; import org.navalplanner.business.orders.daos.IOrderDAO; import org.navalplanner.business.orders.daos.IOrderElementDAO; import org.navalplanner.business.orders.entities.HoursGroup; -import org.navalplanner.business.orders.entities.IOrderLineGroup; import org.navalplanner.business.orders.entities.Order; import org.navalplanner.business.orders.entities.OrderElement; import org.navalplanner.business.orders.entities.OrderLine; @@ -406,7 +405,7 @@ public class OrderModel implements IOrderModel { } @Override - public IOrderLineGroup getOrder() { + public OrderLineGroup getOrder() { return order; }