ItEr17S10CUCreacionProxectoPlanificacionItEr16S12: Adding methods addDependency and canAddDependency to IAdapterToTaskFundamentalProperties.

This commit is contained in:
Óscar González Fernández 2009-07-19 17:41:45 +02:00 committed by Javier Moran Rua
parent f80c09dc76
commit 3c41301d10
5 changed files with 94 additions and 6 deletions

View file

@ -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<T> {
private final IAdapterToTaskFundamentalProperties<T> adapter;
private final OneToOneMapper<T> mapper;
public DependencyAdderAdapter(
IAdapterToTaskFundamentalProperties<T> adapter,
OneToOneMapper<T> mapper) {
this.adapter = adapter;
this.mapper = mapper;
}
public void addDependency(DependencyBean bean) {
adapter.addDependency(toDomainDependency(bean));
}
private DomainDependency<T> toDomainDependency(DependencyBean bean) {
T source = mapper.findAssociatedDomainObject(bean.getSource());
T destination = mapper.findAssociatedDomainObject(bean
.getDestination());
DomainDependency<T> dep = DomainDependency.createDependency(source,
destination, bean.getType());
return dep;
}
public boolean canAddDependency(DependencyBean bean) {
return adapter.canAddDependency(toDomainDependency(bean));
}
}
public <T> void setConfiguration(PlannerConfiguration<T> configuration) {
if (configuration == null)
return;
@ -188,9 +226,10 @@ public class Planner extends XulElement {
domainObjectsMapper = mapper;
List<DomainDependency<T>> dependencies = new ArrayList<DomainDependency<T>>();
for (T domainObject : configuration.getData()) {
this.diagramGraph.addTopLevel(extractTaskBean(dependencies,
mapper, domainObject, configuration.getNavigator(),
configuration.getAdapter()));
IAdapterToTaskFundamentalProperties<T> adapter = configuration
.getAdapter();
this.diagramGraph.addTopLevel(extractTaskBean(dependencies, mapper,
domainObject, configuration.getNavigator(), adapter));
}
List<DependencyBean> dependencyBeans = DomainDependency
.toDependencyBeans(mapper, dependencies);
@ -198,6 +237,8 @@ public class Planner extends XulElement {
this.diagramGraph.add(dependencyBean);
}
this.diagramGraph.applyAllRestrictions();
dependencyAdder = new DependencyAdderAdapter<T>(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)));

View file

@ -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() {

View file

@ -22,4 +22,16 @@ public class AutoAdapter implements
return new ArrayList<DomainDependency<ITaskFundamentalProperties>>();
}
@Override
public void addDependency(
DomainDependency<ITaskFundamentalProperties> dependency) {
// do nothing
}
@Override
public boolean canAddDependency(
DomainDependency<ITaskFundamentalProperties> dependency) {
return true;
}
}

View file

@ -14,4 +14,8 @@ public interface IAdapterToTaskFundamentalProperties<T> {
public List<DomainDependency<T>> getDependenciesOriginating(T object);
public boolean canAddDependency(DomainDependency<T> dependency);
public void addDependency(DomainDependency<T> dependency);
}

View file

@ -39,6 +39,8 @@ public class OrderPlanningModel implements IOrderPlanningModel {
private final Order order;
private List<Dependency> dependenciesCreated = new ArrayList<Dependency>();
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<TaskElement> 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<TaskElement> dependency) {
return true;
}
}
private final class TaskElementNavigator implements