From 3c41301d1050cfdc3e5283afbf1bb279a7e8dcc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Sun, 19 Jul 2009 17:41:45 +0200 Subject: [PATCH] ItEr17S10CUCreacionProxectoPlanificacionItEr16S12: Adding methods addDependency and canAddDependency to IAdapterToTaskFundamentalProperties. --- .../main/java/org/zkoss/ganttz/Planner.java | 50 +++++++++++++++++-- .../src/main/java/org/zkoss/ganttz/Task.java | 4 +- .../zkoss/ganttz/adapters/AutoAdapter.java | 12 +++++ .../IAdapterToTaskFundamentalProperties.java | 4 ++ .../web/planner/OrderPlanningModel.java | 30 +++++++++++ 5 files changed, 94 insertions(+), 6 deletions(-) diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Planner.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Planner.java index 392ff38c0..1b104b41b 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Planner.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Planner.java @@ -38,6 +38,8 @@ public class Planner extends XulElement { private OneToOneMapper domainObjectsMapper; + private DependencyAdderAdapter dependencyAdder; + public Planner() { } @@ -101,6 +103,10 @@ public class Planner extends XulElement { return taskEditFormComposer; } + public boolean canAddDependency(DependencyBean dependency) { + return dependencyAdder.canAddDependency(dependency); + } + public void registerListeners() { if (diagramGraph == null) throw new IllegalStateException("dependencyRegistry must be set"); @@ -112,6 +118,7 @@ public class Planner extends XulElement { public void dependenceAdded(Dependency dependency) { getDependencyList().addDependency(dependency); publishDependency(dependency); + dependencyAdder.addDependency(dependency.getDependencyBean()); } }; taskList.addDependencyListener(dependencyAddedListener); @@ -180,6 +187,37 @@ public class Planner extends XulElement { } + private static class DependencyAdderAdapter { + + private final IAdapterToTaskFundamentalProperties adapter; + private final OneToOneMapper mapper; + + public DependencyAdderAdapter( + IAdapterToTaskFundamentalProperties adapter, + OneToOneMapper mapper) { + this.adapter = adapter; + this.mapper = mapper; + } + + public void addDependency(DependencyBean bean) { + adapter.addDependency(toDomainDependency(bean)); + } + + private DomainDependency toDomainDependency(DependencyBean bean) { + T source = mapper.findAssociatedDomainObject(bean.getSource()); + T destination = mapper.findAssociatedDomainObject(bean + .getDestination()); + DomainDependency dep = DomainDependency.createDependency(source, + destination, bean.getType()); + return dep; + } + + public boolean canAddDependency(DependencyBean bean) { + return adapter.canAddDependency(toDomainDependency(bean)); + } + + } + public void setConfiguration(PlannerConfiguration configuration) { if (configuration == null) return; @@ -188,9 +226,10 @@ public class Planner extends XulElement { domainObjectsMapper = mapper; List> dependencies = new ArrayList>(); for (T domainObject : configuration.getData()) { - this.diagramGraph.addTopLevel(extractTaskBean(dependencies, - mapper, domainObject, configuration.getNavigator(), - configuration.getAdapter())); + IAdapterToTaskFundamentalProperties adapter = configuration + .getAdapter(); + this.diagramGraph.addTopLevel(extractTaskBean(dependencies, mapper, + domainObject, configuration.getNavigator(), adapter)); } List dependencyBeans = DomainDependency .toDependencyBeans(mapper, dependencies); @@ -198,6 +237,8 @@ public class Planner extends XulElement { this.diagramGraph.add(dependencyBean); } this.diagramGraph.applyAllRestrictions(); + dependencyAdder = new DependencyAdderAdapter(configuration + .getAdapter(), mapper); recreate(); } @@ -228,8 +269,7 @@ public class Planner extends XulElement { private void recreate() { removePreviousDetails(); - this.listDetails = new ListDetails(this.diagramGraph - .getTopLevelTasks()); + this.listDetails = new ListDetails(this.diagramGraph.getTopLevelTasks()); insertBefore(this.listDetails, (Component) (getChildren().isEmpty() ? null : getChildren() .get(0))); diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Task.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Task.java index b0032f169..6ad6be2d9 100755 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Task.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Task.java @@ -241,7 +241,9 @@ public class Task extends Div implements AfterCompose { void doAddDependency(String destinyTaskId) { Dependency dependency = new Dependency(this, ((Task) getFellow(destinyTaskId))); - fireDependenceAdded(dependency); + if (getPlanner().canAddDependency(dependency.getDependencyBean())) { + fireDependenceAdded(dependency); + } } public String getColor() { diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/adapters/AutoAdapter.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/adapters/AutoAdapter.java index 55a4bd819..e937ba465 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/adapters/AutoAdapter.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/adapters/AutoAdapter.java @@ -22,4 +22,16 @@ public class AutoAdapter implements return new ArrayList>(); } + @Override + public void addDependency( + DomainDependency dependency) { + // do nothing + } + + @Override + public boolean canAddDependency( + DomainDependency dependency) { + return true; + } + } diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/adapters/IAdapterToTaskFundamentalProperties.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/adapters/IAdapterToTaskFundamentalProperties.java index 558ad6fb0..2fcf3b07e 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/adapters/IAdapterToTaskFundamentalProperties.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/adapters/IAdapterToTaskFundamentalProperties.java @@ -14,4 +14,8 @@ public interface IAdapterToTaskFundamentalProperties { public List> getDependenciesOriginating(T object); + public boolean canAddDependency(DomainDependency dependency); + + public void addDependency(DomainDependency dependency); + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java index ec22e66b1..2c93d802b 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java @@ -39,6 +39,8 @@ public class OrderPlanningModel implements IOrderPlanningModel { private final Order order; + private List dependenciesCreated = new ArrayList(); + private TaskElementToFundamentalProperties(Order order) { this.order = order; } @@ -88,6 +90,34 @@ public class OrderPlanningModel implements IOrderPlanningModel { throw new RuntimeException(type + " not supported yet"); } } + + private Type toDomainType(DependencyType type) { + switch (type) { + case END_START: + return Type.END_START; + case START_START: + return Type.START_START; + case END_END: + return Type.END_END; + default: + throw new RuntimeException(type + " not supported yet"); + } + } + + @Override + public void addDependency(DomainDependency dependency) { + TaskElement source = dependency.getSource(); + TaskElement destination = dependency.getDestination(); + Type domainType = toDomainType(dependency.getType()); + Dependency domainDependency = Dependency.createDependency(source, + destination, domainType); + + } + + @Override + public boolean canAddDependency(DomainDependency dependency) { + return true; + } } private final class TaskElementNavigator implements