Search in sources :

Example 11 with Task

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

the class TaskUtils method getMainTasks.

/**
 * Gets the main tasks from a list of abstract tasks
 *
 * @param abstractTasks
 *            List of abstract tasks to be considered
 * @return the main tasks from the list, considering the "use" relationships
 *         between tasks
 */
private List<Task> getMainTasks(List<AbstractTask> abstractTasks) {
    List<Task> mainTasks = new ArrayList<Task>();
    // We have to consider every task in groups or not
    List<Task> tasks = new ArrayList<Task>();
    for (AbstractTask abstractTask : abstractTasks) {
        if (abstractTask instanceof Task) {
            tasks.add((Task) abstractTask);
        } else {
            tasks.addAll(getAllEnclosedTasks((TasksGroup) abstractTask));
        }
    }
    // Get all tasks in the group
    for (Task task : tasks) {
        boolean usedByInnerTask = false;
        for (Task usingTask : task.getUsedBy()) {
            if (tasks.contains(usingTask)) {
                usedByInnerTask = true;
                break;
            }
        }
        if (usedByInnerTask == false) {
            mainTasks.add(task);
        }
    }
    return mainTasks;
}
Also used : AbstractTask(org.obeonetwork.graal.AbstractTask) Task(org.obeonetwork.graal.Task) AbstractTask(org.obeonetwork.graal.AbstractTask) TasksGroup(org.obeonetwork.graal.TasksGroup) ArrayList(java.util.ArrayList)

Example 12 with Task

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

the class TaskUtils method deleteTaskUseTaskEdge.

/**
 * This service is used to remove the "use" relationship between 2 abstract
 * tasks and remove the corresponding elements on the using task's Actions
 * Plan when needed
 *
 * @param usingTask
 *            Source AbstractTask instance of the relationship
 * @param usedTask
 *            Target AbstractTask instance of the relationship
 */
public void deleteTaskUseTaskEdge(AbstractTask usingTask, AbstractTask usedTask) {
    Session session = SessionManager.INSTANCE.getSession(usingTask);
    ModelAccessor modelAccessor = session.getModelAccessor();
    // Get all potentially concerned used Tasks
    List<Task> usedTasks = new ArrayList<Task>();
    if (usedTask instanceof Task) {
        usedTasks.add((Task) usedTask);
    } else {
        usedTasks.addAll(getAllUsedTasks((TasksGroup) usedTask));
    }
    // Check if the using "task" is a Task or a Group
    if (usingTask instanceof Task) {
        for (Task realUsedTask : usedTasks) {
            deleteUseRelationship((Task) usingTask, realUsedTask, session, modelAccessor);
        }
    } else {
        for (Task realUsedTask : usedTasks) {
            for (Task realUsingTask : getTasksFromGroupUsingTask((TasksGroup) usingTask, realUsedTask)) {
                deleteUseRelationship(realUsingTask, realUsedTask, session, modelAccessor);
            }
        }
    }
}
Also used : AbstractTask(org.obeonetwork.graal.AbstractTask) Task(org.obeonetwork.graal.Task) TasksGroup(org.obeonetwork.graal.TasksGroup) ModelAccessor(org.eclipse.sirius.ecore.extender.business.api.accessor.ModelAccessor) ArrayList(java.util.ArrayList) Session(org.eclipse.sirius.business.api.session.Session)

Example 13 with Task

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

the class UseReferencesServices method getUsedSystemsAndTasksAndGroups.

/**
 * Retrieves the tasks, groups and systems used from a task
 * to know which nodes should be linked by "use" references
 * @param context TasksContainer used to compute which elements would be visible
 * @param task Using task
 * @return list of linked elements
 */
private Set<EObject> getUsedSystemsAndTasksAndGroups(TasksContainer context, Task task) {
    Set<EObject> usedElements = new LinkedHashSet<EObject>();
    for (Task usedTask : task.getUses()) {
        // First, check if the used task is contained by the context
        if (EcoreUtil.isAncestor(context, task)) {
            // Check if the used task is directly contained by the specified container
            if (context.equals(usedTask.eContainer())) {
                usedElements.add(usedTask);
            } else {
                usedElements.add(usedTask);
                // We have to find the container directly contained by the context
                boolean found = false;
                EObject container = usedTask.eContainer();
                while (!found && container != null) {
                    if (context.equals(container.eContainer())) {
                        usedElements.add(container);
                        found = true;
                    }
                    container = container.eContainer();
                }
            }
        } else {
        // Not in the same context
        // usedElements.add(usedTask);
        }
    }
    return usedElements;
}
Also used : LinkedHashSet(java.util.LinkedHashSet) Task(org.obeonetwork.graal.Task) EObject(org.eclipse.emf.ecore.EObject)

Example 14 with Task

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

the class CreateUseRelationshipDialog method createDialogArea.

/**
 * Create contents of the dialog.
 * @param parent
 */
@Override
protected Control createDialogArea(Composite parent) {
    Composite container = (Composite) super.createDialogArea(parent);
    container.setLayout(new GridLayout(2, false));
    Label lblSource = new Label(container, SWT.NONE);
    lblSource.setText("Source :");
    Label lblTarget = new Label(container, SWT.NONE);
    lblTarget.setText("Target :");
    treeSourceViewer = new TreeViewer(container, SWT.BORDER | SWT.MULTI);
    treeSourceViewer.setContentProvider(new TasksContentProvider());
    treeSourceViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
    treeSourceViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @SuppressWarnings("rawtypes")
        public void selectionChanged(SelectionChangedEvent event) {
            if (event.getSelection().isEmpty()) {
                selectedTasksAsSource.clear();
            } else if (event.getSelection() instanceof IStructuredSelection) {
                selectedTasksAsSource.clear();
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                for (Iterator iterator = selection.iterator(); iterator.hasNext(); ) {
                    Object domain = (Object) iterator.next();
                    if (domain instanceof Task) {
                        selectedTasksAsSource.add((Task) domain);
                    }
                }
            }
            computeOkButtonState();
        }
    });
    treeSourceViewer.setInput(new RootElement(this.source));
    treeSourceViewer.setSelection(new StructuredSelection(this.source), true);
    Tree treeSource = treeSourceViewer.getTree();
    treeSource.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    treeTargetViewer = new TreeViewer(container, SWT.BORDER | SWT.MULTI);
    treeTargetViewer.setContentProvider(new TasksContentProvider());
    treeTargetViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
    treeTargetViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @SuppressWarnings("rawtypes")
        public void selectionChanged(SelectionChangedEvent event) {
            if (event.getSelection().isEmpty()) {
                selectedTasksAsTarget.clear();
            } else if (event.getSelection() instanceof IStructuredSelection) {
                selectedTasksAsTarget.clear();
                IStructuredSelection selection = (IStructuredSelection) event.getSelection();
                for (Iterator iterator = selection.iterator(); iterator.hasNext(); ) {
                    Object domain = (Object) iterator.next();
                    if (domain instanceof Task) {
                        selectedTasksAsTarget.add((Task) domain);
                    }
                }
            }
            computeOkButtonState();
        }
    });
    treeTargetViewer.setInput(new RootElement(this.target));
    treeTargetViewer.setSelection(new StructuredSelection(this.target), true);
    Tree treeTarget = treeTargetViewer.getTree();
    treeTarget.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    return container;
}
Also used : Task(org.obeonetwork.graal.Task) Composite(org.eclipse.swt.widgets.Composite) TreeViewer(org.eclipse.jface.viewers.TreeViewer) ISelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener) Label(org.eclipse.swt.widgets.Label) StructuredSelection(org.eclipse.jface.viewers.StructuredSelection) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) AdapterFactoryLabelProvider(org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider) SelectionChangedEvent(org.eclipse.jface.viewers.SelectionChangedEvent) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) GridLayout(org.eclipse.swt.layout.GridLayout) RootElement(org.obeonetwork.graal.design.ui.providers.RootElement) Iterator(java.util.Iterator) GridData(org.eclipse.swt.layout.GridData) TasksContentProvider(org.obeonetwork.graal.design.ui.providers.TasksContentProvider) Tree(org.eclipse.swt.widgets.Tree) EObject(org.eclipse.emf.ecore.EObject)

Example 15 with Task

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

the class TaskReferenceImpl method detachFromUserStory.

@Override
public void detachFromUserStory(UserStory userStory) {
    // Should be useless
    userStory.getElements().remove(this);
    Task referencedTask = getTask();
    if (referencedTask != null) {
        referencedTask.detachFromUserStory(userStory);
    }
}
Also used : Task(org.obeonetwork.graal.Task)

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