Search in sources :

Example 6 with Actor

use of org.obeonetwork.graal.Actor 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 7 with Actor

use of org.obeonetwork.graal.Actor 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 8 with Actor

use of org.obeonetwork.graal.Actor 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 9 with Actor

use of org.obeonetwork.graal.Actor 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 10 with Actor

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

the class ActorActorPropertiesEditionComponent method initPart.

/**
 * {@inheritDoc}
 *
 * @see org.eclipse.emf.eef.runtime.api.component.IPropertiesEditionComponent#initPart(java.lang.Object, int, org.eclipse.emf.ecore.EObject,
 *      org.eclipse.emf.ecore.resource.ResourceSet)
 */
public void initPart(Object key, int kind, EObject elt, ResourceSet allResource) {
    setInitializing(true);
    if (editingPart != null && key == partKey) {
        editingPart.setContext(elt, allResource);
        final Actor actor = (Actor) elt;
        final ActorPropertiesEditionPart actorPart = (ActorPropertiesEditionPart) editingPart;
        // init values
        if (isAccessible(GraalViewsRepository.Actor.Properties.description))
            actorPart.setDescription(EcoreUtil.convertToString(EcorePackage.Literals.ESTRING, actor.getDescription()));
        if (isAccessible(GraalViewsRepository.Actor.Properties.subActors)) {
            subActorsSettings = new ReferencesTableSettings(actor, GraalPackage.eINSTANCE.getActor_SubActors());
            actorPart.initSubActors(subActorsSettings);
        }
        if (isAccessible(GraalViewsRepository.Actor.Properties.superActor)) {
            // init part
            superActorSettings = new EObjectFlatComboSettings(actor, GraalPackage.eINSTANCE.getActor_SuperActor());
            actorPart.initSuperActor(superActorSettings);
            // set the button mode
            actorPart.setSuperActorButtonMode(ButtonsModeEnum.BROWSE);
        }
        if (isAccessible(GraalViewsRepository.Actor.Properties.name))
            actorPart.setName(EEFConverterUtil.convertToString(EcorePackage.Literals.ESTRING, actor.getName()));
        if (isAccessible(GraalViewsRepository.Actor.Properties.subActors)) {
            actorPart.addFilterToSubActors(new EObjectFilter(GraalPackage.Literals.ACTOR));
        // Start of user code for additional businessfilters for subActors
        // End of user code
        }
        if (isAccessible(GraalViewsRepository.Actor.Properties.superActor)) {
            actorPart.addFilterToSuperActor(new ViewerFilter() {

                /**
                 * {@inheritDoc}
                 *
                 * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
                 */
                public boolean select(Viewer viewer, Object parentElement, Object element) {
                    // $NON-NLS-1$
                    return (element instanceof String && element.equals("")) || (element instanceof Actor);
                }
            });
        // Start of user code for additional businessfilters for superActor
        // End of user code
        }
    // init values for referenced views
    // init filters for referenced views
    }
    setInitializing(false);
}
Also used : EObjectFilter(org.eclipse.emf.eef.runtime.impl.filters.EObjectFilter) ReferencesTableSettings(org.eclipse.emf.eef.runtime.ui.widgets.referencestable.ReferencesTableSettings) ViewerFilter(org.eclipse.jface.viewers.ViewerFilter) Actor(org.obeonetwork.graal.Actor) Viewer(org.eclipse.jface.viewers.Viewer) EObject(org.eclipse.emf.ecore.EObject) EObjectFlatComboSettings(org.eclipse.emf.eef.runtime.ui.widgets.eobjflatcombo.EObjectFlatComboSettings) ActorPropertiesEditionPart(org.obeonetwork.graal.parts.ActorPropertiesEditionPart)

Aggregations

Actor (org.obeonetwork.graal.Actor)11 Task (org.obeonetwork.graal.Task)7 AbstractTask (org.obeonetwork.graal.AbstractTask)6 LinkedHashSet (java.util.LinkedHashSet)4 Set (java.util.Set)4 HashMap (java.util.HashMap)3 ArrayList (java.util.ArrayList)2 EObject (org.eclipse.emf.ecore.EObject)2 EObjectPropertiesEditionContext (org.eclipse.emf.eef.runtime.context.impl.EObjectPropertiesEditionContext)1 EReferencePropertiesEditionContext (org.eclipse.emf.eef.runtime.context.impl.EReferencePropertiesEditionContext)1 EObjectFilter (org.eclipse.emf.eef.runtime.impl.filters.EObjectFilter)1 PropertiesEditingPolicy (org.eclipse.emf.eef.runtime.policies.PropertiesEditingPolicy)1 CreateEditingPolicy (org.eclipse.emf.eef.runtime.policies.impl.CreateEditingPolicy)1 PropertiesEditingProvider (org.eclipse.emf.eef.runtime.providers.PropertiesEditingProvider)1 EObjectFlatComboSettings (org.eclipse.emf.eef.runtime.ui.widgets.eobjflatcombo.EObjectFlatComboSettings)1 ReferencesTableSettings (org.eclipse.emf.eef.runtime.ui.widgets.referencestable.ReferencesTableSettings)1 Viewer (org.eclipse.jface.viewers.Viewer)1 ViewerFilter (org.eclipse.jface.viewers.ViewerFilter)1 DDiagramElement (org.eclipse.sirius.diagram.DDiagramElement)1 Loop (org.obeonetwork.graal.Loop)1