Search in sources :

Example 16 with Task

use of org.obeonetwork.graal.Task in project InformationSystem by ObeoNetwork.

the class ActorUtils method getVisibleLinksToActorsFromTask.

/**
 * Get the list of actors that should be visually connected to a task
 * The list depends on inherited actors and already visible tasks on diagram
 * @param task The task for which we want the actors list
 * @param tasksOnDiagram List of visible tasks on diagram
 * @return List of Actors
 */
private Collection<Actor> getVisibleLinksToActorsFromTask(Task task, final List<Task> tasksOnDiagram) {
    if (task.getActors().isEmpty()) {
        // Get using tasks that are displayed on diagram
        List<Task> usingTasksOnDiagram = Lists.newArrayList(task.getUsedBy());
        Iterables.retainAll(usingTasksOnDiagram, tasksOnDiagram);
        // Filter the related actors to keep those not already associated with a displayed using task
        List<Actor> relatedActors = Lists.newArrayList(task.getRelatedActors());
        for (Task usingTask : usingTasksOnDiagram) {
            if (!relatedActors.isEmpty()) {
                Iterables.removeAll(relatedActors, usingTask.getRelatedActors());
            } else {
                break;
            }
        }
        // we then have to display the whole actors list to prevent from misunderstanding
        if (!relatedActors.isEmpty()) {
            return task.getRelatedActors();
        } else {
            return Collections.emptyList();
        }
    } else {
        return task.getActors();
    }
}
Also used : AbstractTask(org.obeonetwork.graal.AbstractTask) Task(org.obeonetwork.graal.Task) Actor(org.obeonetwork.graal.Actor)

Example 17 with Task

use of org.obeonetwork.graal.Task in project InformationSystem by ObeoNetwork.

the class ActorUtils method getVisibleActors.

/**
 * Returns the visible actors for a use case
 * @param useCase
 * @return
 */
public Set<Actor> getVisibleActors(UseCase useCase) {
    HashMap<Task, Set<Actor>> cache = new HashMap<Task, Set<Actor>>();
    Set<Actor> actors = new LinkedHashSet<Actor>();
    List<Actor> actorsLeft = getAllActorsInContext(useCase);
    for (AbstractTask abstractTask : useCase.getTasks()) {
        actors.addAll(internalGetVisibleActors(abstractTask, cache, actorsLeft));
    }
    return actors;
}
Also used : LinkedHashSet(java.util.LinkedHashSet) AbstractTask(org.obeonetwork.graal.AbstractTask) Task(org.obeonetwork.graal.Task) Set(java.util.Set) LinkedHashSet(java.util.LinkedHashSet) AbstractTask(org.obeonetwork.graal.AbstractTask) HashMap(java.util.HashMap) Actor(org.obeonetwork.graal.Actor)

Example 18 with Task

use of org.obeonetwork.graal.Task in project InformationSystem by ObeoNetwork.

the class ActorUtils method internalGetVisibleActors.

/**
 * Collect the visible actors for a task, using an internal cache
 * @param abstractTask
 * @param cache Map to store already calculated links between Tasks and Actors
 * @param actorsLeft List of actors not yet in the final list (used to improve performance)
 * @return
 */
private Set<Actor> internalGetVisibleActors(AbstractTask abstractTask, Map<Task, Set<Actor>> cache, List<Actor> actorsLeft) {
    if (!actorsLeft.isEmpty()) {
        if (abstractTask instanceof Task) {
            Task task = (Task) abstractTask;
            if (cache.containsKey(task)) {
                return cache.get(task);
            } else {
                Set<Actor> actors = new LinkedHashSet<Actor>();
                cache.put(task, actors);
                if (task.getActors().isEmpty()) {
                    for (Task usingTask : task.getUsedBy()) {
                        if (!cache.containsKey(usingTask) && !actorsLeft.isEmpty()) {
                            actors.addAll(internalGetVisibleActors(usingTask, cache, actorsLeft));
                        }
                    }
                } else {
                    actors.addAll(task.getActors());
                    actorsLeft.removeAll(actors);
                }
                cache.put(task, actors);
                return actors;
            }
        } else if (abstractTask instanceof TasksGroup) {
            Set<Actor> actors = new LinkedHashSet<Actor>();
            TasksGroup group = (TasksGroup) abstractTask;
            for (AbstractTask subTask : group.getTasks()) {
                if (!actorsLeft.isEmpty()) {
                    actors.addAll(internalGetVisibleActors(subTask, cache, actorsLeft));
                }
            }
            return actors;
        }
    }
    return new LinkedHashSet<Actor>();
}
Also used : LinkedHashSet(java.util.LinkedHashSet) AbstractTask(org.obeonetwork.graal.AbstractTask) Task(org.obeonetwork.graal.Task) Set(java.util.Set) LinkedHashSet(java.util.LinkedHashSet) AbstractTask(org.obeonetwork.graal.AbstractTask) TasksGroup(org.obeonetwork.graal.TasksGroup) Actor(org.obeonetwork.graal.Actor)

Example 19 with Task

use of org.obeonetwork.graal.Task in project InformationSystem by ObeoNetwork.

the class ActorUtils method getVisibleActors.

/**
 * Returns the visible actors for a system
 * @param system
 * @return
 */
public Set<Actor> getVisibleActors(System system) {
    HashMap<Task, Set<Actor>> cache = new HashMap<Task, Set<Actor>>();
    Set<Actor> actors = new LinkedHashSet<Actor>();
    List<Actor> actorsLeft = getAllActorsInContext(system);
    for (AbstractTask abstractTask : system.getTasks()) {
        actors.addAll(internalGetVisibleActors(abstractTask, cache, actorsLeft));
    }
    return actors;
}
Also used : LinkedHashSet(java.util.LinkedHashSet) AbstractTask(org.obeonetwork.graal.AbstractTask) Task(org.obeonetwork.graal.Task) Set(java.util.Set) LinkedHashSet(java.util.LinkedHashSet) AbstractTask(org.obeonetwork.graal.AbstractTask) HashMap(java.util.HashMap) Actor(org.obeonetwork.graal.Actor)

Example 20 with Task

use of org.obeonetwork.graal.Task in project InformationSystem by ObeoNetwork.

the class TaskUtils method candidatesExpresssionForExistingTask.

/**
 * Calculate the candidateExpression defines in creation tool Existing Tasks
 * in Task Graph.
 *
 * @param context
 *            the context of call
 * @param diagram
 *            the representation
 * @return list of existing Tasks
 */
public List<AbstractTask> candidatesExpresssionForExistingTask(EObject context, DSemanticDiagram diagram) {
    TreeIterator<EObject> eAllContents = getSystem(context).eAllContents();
    List<AbstractTask> abstractTasks = new ArrayList<AbstractTask>();
    while (eAllContents.hasNext()) {
        EObject element = eAllContents.next();
        if (element instanceof AbstractTask) {
            abstractTasks.add((AbstractTask) element);
        }
    }
    List<Task> tasksDiagram = new ArrayList<Task>();
    List<EObject> eContents = diagram.getTarget().eContents();
    for (EObject obj : eContents) {
        if (obj instanceof Task) {
            tasksDiagram.add((Task) obj);
        }
    }
    abstractTasks.removeAll(tasksDiagram);
    abstractTasks.remove(context);
    return abstractTasks;
}
Also used : AbstractTask(org.obeonetwork.graal.AbstractTask) Task(org.obeonetwork.graal.Task) AbstractTask(org.obeonetwork.graal.AbstractTask) EObject(org.eclipse.emf.ecore.EObject) ArrayList(java.util.ArrayList)

Aggregations

Task (org.obeonetwork.graal.Task)24 AbstractTask (org.obeonetwork.graal.AbstractTask)15 EObject (org.eclipse.emf.ecore.EObject)8 ArrayList (java.util.ArrayList)7 Actor (org.obeonetwork.graal.Actor)7 TasksGroup (org.obeonetwork.graal.TasksGroup)7 LinkedHashSet (java.util.LinkedHashSet)6 Set (java.util.Set)4 HashMap (java.util.HashMap)3 Loop (org.obeonetwork.graal.Loop)3 EReference (org.eclipse.emf.ecore.EReference)2 Setting (org.eclipse.emf.ecore.EStructuralFeature.Setting)2 Resource (org.eclipse.emf.ecore.resource.Resource)2 EObjectFilter (org.eclipse.emf.eef.runtime.impl.filters.EObjectFilter)2 ReferencesTableSettings (org.eclipse.emf.eef.runtime.ui.widgets.referencestable.ReferencesTableSettings)2 Viewer (org.eclipse.jface.viewers.Viewer)2 ViewerFilter (org.eclipse.jface.viewers.ViewerFilter)2 HashSet (java.util.HashSet)1 Iterator (java.util.Iterator)1 AdapterFactoryLabelProvider (org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider)1