ItEr17S10CUCreacionProxectoPlanificacionItEr16S12: Adding methods addDependency and canAddDependency to IAdapterToTaskFundamentalProperties.
This commit is contained in:
parent
f80c09dc76
commit
3c41301d10
5 changed files with 94 additions and 6 deletions
|
|
@ -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)));
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue