eu.artist.postmigration.nfrvt.strategy.fumlsimulation.run.ui.QNModelSelectionTab.java Source code

Java tutorial

Introduction

Here is the source code for eu.artist.postmigration.nfrvt.strategy.fumlsimulation.run.ui.QNModelSelectionTab.java

Source

/*
 * Copyright (c) 2013 Vienna University of Technology.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 which accompanies 
 * this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 * Tanja Mayerhofer - initial API and implementation
 */
package eu.artist.postmigration.nfrvt.strategy.fumlsimulation.run.ui;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.papyrus.MARTE.MARTE_AnalysisModel.GQAM.GaAnalysisContext;
import org.eclipse.uml2.uml.Element;
import org.eclipse.uml2.uml.NamedElement;
import org.modelexecution.fuml.nfr.MarteUtil;

import eu.artist.postmigration.nfrvt.strategy.fumlsimulation.FUMLSimulationActivator;

public class QNModelSelectionTab extends UMLModelSelectionTab {

    /* (non-Javadoc)
     * @see org.modelexecution.fuml.nfr.debug.ui.launch.UMLModelSelectionTab#obtainSelectableModelElements(org.eclipse.emf.ecore.resource.Resource)
     */
    @Override
    protected List<EObject> obtainSelectableModelElements(Resource umlResource) {
        List<EObject> analysisContextInstances = new ArrayList<EObject>();
        TreeIterator<EObject> allContents = umlResource.getAllContents();
        while (allContents.hasNext()) {
            EObject eObject = allContents.next();
            if (eObject instanceof Element) {
                Element element = (Element) eObject;
                if (isAnalysisContext(element)) {
                    analysisContextInstances.add(eObject);
                }
            }
        }
        return analysisContextInstances;
    }

    private boolean isAnalysisContext(Element element) {
        return MarteUtil.getExactStereotype(element, GaAnalysisContext.class) != null;
    }

    /* (non-Javadoc)
     * @see org.modelexecution.fuml.nfr.debug.ui.launch.UMLModelSelectionTab#loadModelElementFromSelection(org.eclipse.jface.viewers.ISelection)
     */
    @Override
    protected EObject loadModelElementFromSelection(ISelection selection) {
        if (selection instanceof IStructuredSelection) {
            IStructuredSelection structuredSelection = (IStructuredSelection) selection;
            structuredSelection.size();
            for (Iterator<?> iter = structuredSelection.iterator(); iter.hasNext();) {
                Object next = iter.next();
                if (next instanceof Element) {
                    Element element = (Element) next;
                    if (isAnalysisContext(element)) {
                        return element;
                    }
                }
            }
        }
        return null;
    }

    /* (non-Javadoc)
     * @see org.modelexecution.fuml.nfr.debug.ui.launch.UMLModelSelectionTab#initializeSelectedModelElement(org.eclipse.debug.core.ILaunchConfiguration)
     */
    @Override
    protected NamedElement initializeSelectedModelElement(ILaunchConfiguration configuration) {
        String analysisContextQN = "";
        try {
            analysisContextQN = configuration.getAttribute(FUMLSimulationActivator.ATT_QN_ANALYIS_CONTEXT, "");
        } catch (CoreException e) {
        }

        for (EObject eObject : getSelectableModelElements()) {
            if (eObject instanceof NamedElement) {
                NamedElement element = (NamedElement) eObject;
                if (isAnalysisContext(element) && element.getQualifiedName().equals(analysisContextQN)) {
                    return element;
                }

            }
        }
        return null;
    }

    /* (non-Javadoc)
     * @see org.eclipse.debug.ui.ILaunchConfigurationTab#performApply(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy)
     */
    @Override
    public void performApply(ILaunchConfigurationWorkingCopy configuration) {
        configuration.setAttribute(DebugPlugin.ATTR_PROCESS_FACTORY_ID, FUMLSimulationActivator.PROCESS_FACTORY_ID);
        configuration.setAttribute(FUMLSimulationActivator.ATT_MODEL_PATH, uriText.getText().trim());
        configuration.setAttribute(FUMLSimulationActivator.ATT_QN_ANALYIS_CONTEXT, getAnalysisContextString());
    }

    private String getAnalysisContextString() {
        EObject selectedModelElement = getSelectedModelElement();
        if (selectedModelElement instanceof NamedElement) {
            return ((NamedElement) selectedModelElement).getQualifiedName();
        }
        return "";
    }

    @Override
    protected String getModelElementLabelText() {
        return "Select analysis context with resources and workload";
    }

}