AssureRequirementsCoverageView.java
/**
* Copyright (c) 2004-2025 Carnegie Mellon University and others. (see Contributors file).
* All Rights Reserved.
*
* NO WARRANTY. ALL MATERIAL IS FURNISHED ON AN "AS-IS" BASIS. CARNEGIE MELLON UNIVERSITY MAKES NO WARRANTIES OF ANY
* KIND, EITHER EXPRESSED OR IMPLIED, AS TO ANY MATTER INCLUDING, BUT NOT LIMITED TO, WARRANTY OF FITNESS FOR PURPOSE
* OR MERCHANTABILITY, EXCLUSIVITY, OR RESULTS OBTAINED FROM USE OF THE MATERIAL. CARNEGIE MELLON UNIVERSITY DOES NOT
* MAKE ANY WARRANTY OF ANY KIND WITH RESPECT TO FREEDOM FROM PATENT, TRADEMARK, OR COPYRIGHT INFRINGEMENT.
*
* This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
* SPDX-License-Identifier: EPL-2.0
*
* Created, in part, with funding and support from the United States Government. (see Acknowledgments file).
*
* This program includes and/or can make use of certain third party source code, object code, documentation and other
* files ("Third Party Software"). The Third Party Software that is used by this program is dependent upon your system
* configuration. By using this program, You agree to comply with any and all relevant Third Party Software terms and
* conditions contained in any such Third Party Software or separate license file distributed with such Third Party
* Software. The parties who own the Third Party Software ("Third Party Licensors") are intended third party benefici-
* aries to this license with respect to the terms applicable to their Third Party Software. Third Party Software li-
* censes only apply to the Third Party Software and not any other portion of this program or this program as a whole.
*/
package org.osate.alisa.workbench.ui.views;
import com.google.common.base.Objects;
import com.google.common.collect.Iterables;
import com.google.inject.Inject;
import java.io.IOException;
import java.text.NumberFormat;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IResourceChangeListener;
import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.core.resources.IResourceDeltaVisitor;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.jface.dialogs.DialogSettings;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.layout.TreeColumnLayout;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.ColumnPixelData;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.ComboBoxViewerCellEditor;
import org.eclipse.jface.viewers.EditingSupport;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.TreeViewerColumn;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeColumn;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPartSite;
import org.eclipse.ui.part.ViewPart;
import org.eclipse.xtend2.lib.StringConcatenation;
import org.eclipse.xtext.resource.IEObjectDescription;
import org.eclipse.xtext.resource.IResourceDescriptions;
import org.eclipse.xtext.ui.editor.GlobalURIEditorOpener;
import org.eclipse.xtext.ui.resource.IResourceSetProvider;
import org.eclipse.xtext.xbase.lib.CollectionLiterals;
import org.eclipse.xtext.xbase.lib.Conversions;
import org.eclipse.xtext.xbase.lib.Exceptions;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.Functions.Function2;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
import org.eclipse.xtext.xbase.lib.ListExtensions;
import org.eclipse.xtext.xbase.lib.MapExtensions;
import org.eclipse.xtext.xbase.lib.ObjectExtensions;
import org.eclipse.xtext.xbase.lib.Pair;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
import org.osate.aadl2.util.Activator;
import org.osate.alisa.workbench.alisa.AlisaPackage;
import org.osate.alisa.workbench.alisa.AssuranceCase;
import org.osate.alisa.workbench.alisa.AssurancePlan;
import org.osate.assure.assure.AssuranceCaseResult;
import org.osate.assure.assure.AssurePackage;
import org.osate.assure.assure.AssureResult;
import org.osate.assure.assure.ClaimResult;
import org.osate.assure.assure.ElseResult;
import org.osate.assure.assure.Metrics;
import org.osate.assure.assure.ModelResult;
import org.osate.assure.assure.PreconditionResult;
import org.osate.assure.assure.PredicateResult;
import org.osate.assure.assure.QualifiedClaimReference;
import org.osate.assure.assure.QualifiedVAReference;
import org.osate.assure.assure.SubsystemResult;
import org.osate.assure.assure.ThenResult;
import org.osate.assure.assure.ValidationResult;
import org.osate.assure.assure.VerificationActivityResult;
import org.osate.assure.evaluator.IAssureProcessor;
import org.osate.assure.evaluator.IAssureRequirementMetricsProcessor;
import org.osate.assure.generator.IAssureConstructor;
import org.osate.assure.util.AssureUtilExtension;
import org.osate.categories.categories.CategoriesPackage;
import org.osate.categories.categories.CategoryFilter;
import org.osate.result.Diagnostic;
import org.osate.result.DiagnosticType;
import org.osate.result.Result;
import org.osate.result.ResultType;
@SuppressWarnings("all")
public class AssureRequirementsCoverageView extends ViewPart {
private static final String ASSURANCE_CASE_URIS_KEY = "ASSURANCE_CASE_URIS_KEY";
private static final String FILTER_URIS_KEY = "FILTER_URIS_KEY";
private static final String ALISA_EXTENSION = "alisa";
private static final String ASSURE_EXTENSION = "assure";
private final IResourceSetProvider resourceSetProvider;
private final ResourceSet resourceSetForUI;
private final IResourceDescriptions rds;
private final IAssureConstructor assureConstructor;
private final String settingsFileName;
private final IDialogSettings dialogSettings;
@Inject
private IAssureRequirementMetricsProcessor assureRequirementMetricsProcessor;
private final HashMap<URI, URI> selectedFilters = CollectionLiterals.<URI, URI>newHashMap();
private Pair<URI, URI> displayedCaseAndFilter = Pair.<URI, URI>of(null, null);
private TreeViewer alisaViewer;
private TreeViewer assureCoverageViewer;
private final IResourceChangeListener resourceChangeListener;
@Inject
public AssureRequirementsCoverageView(final IResourceSetProvider resourceSetProvider, final IResourceDescriptions rds, final GlobalURIEditorOpener editorOpener, final IAssureConstructor assureConstructor, final IAssureProcessor assureProcessor) {
this.resourceSetProvider = resourceSetProvider;
this.resourceSetForUI = resourceSetProvider.get(null);
this.rds = rds;
this.assureConstructor = assureConstructor;
final IPath pluginsDir = Activator.getDefault().getStateLocation().removeLastSegments(1);
this.settingsFileName = pluginsDir.append("org.osate.assure").append("assure_view_settings.xml").toOSString();
DialogSettings _dialogSettings = new DialogSettings("assure_view_settings");
this.dialogSettings = _dialogSettings;
try {
this.dialogSettings.load(this.settingsFileName);
final String[] assuranceCaseURIs = this.dialogSettings.getArray(AssureRequirementsCoverageView.ASSURANCE_CASE_URIS_KEY);
final String[] filterURIs = this.dialogSettings.getArray(AssureRequirementsCoverageView.FILTER_URIS_KEY);
if ((((assuranceCaseURIs != null) && (filterURIs != null)) && (((List<String>)Conversions.doWrapArray(assuranceCaseURIs)).size() == ((List<String>)Conversions.doWrapArray(filterURIs)).size()))) {
for (int i = 0; (i < ((List<String>)Conversions.doWrapArray(filterURIs)).size()); i++) {
{
final URI assuranceCaseURI = URI.createURI(assuranceCaseURIs[i]);
final URI filterURI = URI.createURI(filterURIs[i]);
if (((this.resourceSetForUI.getEObject(assuranceCaseURI, true) != null) &&
(this.resourceSetForUI.getEObject(filterURI, true) != null))) {
this.selectedFilters.put(assuranceCaseURI, filterURI);
}
}
}
}
} catch (final Throwable _t) {
if (_t instanceof IOException) {
} else {
throw Exceptions.sneakyThrow(_t);
}
}
final IResourceChangeListener _function = (IResourceChangeEvent it) -> {
try {
final AtomicBoolean alisaFileChanged = new AtomicBoolean(false);
final AtomicBoolean assureFileChanged = new AtomicBoolean(false);
final IResourceDeltaVisitor _function_1 = (IResourceDelta it_1) -> {
boolean _xblockexpression = false;
{
String _fileExtension = it_1.getResource().getFileExtension();
boolean _equals = Objects.equal(_fileExtension, AssureRequirementsCoverageView.ALISA_EXTENSION);
if (_equals) {
alisaFileChanged.set(true);
} else {
String _fileExtension_1 = it_1.getResource().getFileExtension();
boolean _equals_1 = Objects.equal(_fileExtension_1, AssureRequirementsCoverageView.ASSURE_EXTENSION);
if (_equals_1) {
assureFileChanged.set(true);
}
}
_xblockexpression = true;
}
return _xblockexpression;
};
it.getDelta().accept(_function_1);
final Consumer<Resource> _function_2 = (Resource it_1) -> {
it_1.unload();
};
this.resourceSetForUI.getResources().forEach(_function_2);
boolean _get = alisaFileChanged.get();
if (_get) {
final Runnable _function_3 = () -> {
final Function2<URI, URI, Boolean> _function_4 = (URI assuranceCase, URI filter) -> {
return Boolean.valueOf(((this.resourceSetForUI.getEObject(assuranceCase, true) == null) ||
(this.resourceSetForUI.getEObject(filter, true) == null)));
};
final Set<URI> toRemove = MapExtensions.<URI, URI>filter(this.selectedFilters, _function_4).keySet();
final Consumer<URI> _function_5 = (URI it_1) -> {
this.selectedFilters.remove(it_1);
};
toRemove.forEach(_function_5);
final Object[] expandedElements = this.alisaViewer.getExpandedElements();
this.alisaViewer.setInput(this.getAssuranceCaseURIsInWorkspace());
this.alisaViewer.setExpandedElements(expandedElements);
Pair<URI, URI> _mappedTo = Pair.<URI, URI>of(null, null);
this.displayedCaseAndFilter = _mappedTo;
Object _firstElement = this.alisaViewer.getStructuredSelection().getFirstElement();
this.updateAssureViewer(((URI) _firstElement), true);
};
this.getViewSite().getWorkbenchWindow().getWorkbench().getDisplay().asyncExec(_function_3);
} else {
boolean _get_1 = assureFileChanged.get();
if (_get_1) {
final Runnable _function_4 = () -> {
Pair<URI, URI> _mappedTo = Pair.<URI, URI>of(null, null);
this.displayedCaseAndFilter = _mappedTo;
Object _firstElement = this.alisaViewer.getStructuredSelection().getFirstElement();
this.updateAssureViewer(((URI) _firstElement), false);
};
this.getViewSite().getWorkbenchWindow().getWorkbench().getDisplay().asyncExec(_function_4);
}
}
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
};
this.resourceChangeListener = _function;
}
@Override
public void createPartControl(final Composite parent) {
SashForm _sashForm = new SashForm(parent, SWT.HORIZONTAL);
final Procedure1<SashForm> _function = (SashForm it) -> {
Composite _composite = new Composite(it, SWT.NONE);
final Procedure1<Composite> _function_1 = (Composite it_1) -> {
final TreeColumnLayout columnLayout = new TreeColumnLayout();
it_1.setLayout(columnLayout);
this.alisaViewer = this.createAlisaViewer(it_1, columnLayout);
};
ObjectExtensions.<Composite>operator_doubleArrow(_composite, _function_1);
Composite _composite_1 = new Composite(it, SWT.NONE);
final Procedure1<Composite> _function_2 = (Composite it_1) -> {
final TreeColumnLayout columnLayout = new TreeColumnLayout();
it_1.setLayout(columnLayout);
this.assureCoverageViewer = this.createAssureCoverageViewer(it_1, columnLayout);
};
ObjectExtensions.<Composite>operator_doubleArrow(_composite_1, _function_2);
it.setWeights(new int[] { 1, 3 });
};
ObjectExtensions.<SashForm>operator_doubleArrow(_sashForm, _function);
ResourcesPlugin.getWorkspace().addResourceChangeListener(this.resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
}
@Override
public void setFocus() {
this.alisaViewer.getTree().setFocus();
}
@Override
public void dispose() {
try {
ResourcesPlugin.getWorkspace().removeResourceChangeListener(this.resourceChangeListener);
final List<URI> caseURIs = IterableExtensions.<URI>toList(this.selectedFilters.keySet());
final Function1<URI, URI> _function = (URI it) -> {
return this.selectedFilters.get(it);
};
final List<URI> filterURIs = ListExtensions.<URI, URI>map(caseURIs, _function);
final Function1<URI, String> _function_1 = (URI it) -> {
return it.toString();
};
this.dialogSettings.put(AssureRequirementsCoverageView.ASSURANCE_CASE_URIS_KEY, ((String[])Conversions.unwrapArray(ListExtensions.<URI, String>map(caseURIs, _function_1), String.class)));
final Function1<URI, String> _function_2 = (URI it) -> {
return it.toString();
};
this.dialogSettings.put(AssureRequirementsCoverageView.FILTER_URIS_KEY, ((String[])Conversions.unwrapArray(ListExtensions.<URI, String>map(filterURIs, _function_2), String.class)));
this.dialogSettings.save(this.settingsFileName);
super.dispose();
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
private TreeViewer createAlisaViewer(final Composite parent, final TreeColumnLayout columnLayout) {
TreeViewer _treeViewer = new TreeViewer(parent, (((SWT.BORDER | SWT.H_SCROLL) | SWT.V_SCROLL) | SWT.SINGLE));
final Procedure1<TreeViewer> _function = (TreeViewer treeViewer) -> {
Tree _tree = treeViewer.getTree();
_tree.setHeaderVisible(true);
treeViewer.setContentProvider(new ITreeContentProvider() {
@Override
public void dispose() {
}
@Override
public Object[] getChildren(final Object parentElement) {
Object[] _switchResult = null;
EObject _eObject = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(((URI) parentElement), true);
boolean _matched = false;
if (!_matched) {
_switchResult = new Object[] {};
}
return _switchResult;
}
@Override
public Object[] getElements(final Object inputElement) {
return ((Object[])Conversions.unwrapArray(((List<URI>) inputElement), Object.class));
}
@Override
public Object getParent(final Object element) {
Object _switchResult = null;
EObject _eObject = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(((URI) element), true);
final EObject elementEObject = _eObject;
boolean _matched = false;
if (elementEObject instanceof AssuranceCase) {
_matched=true;
_switchResult = treeViewer.getInput();
}
if (!_matched) {
if (elementEObject instanceof AssurancePlan) {
_matched=true;
_switchResult = EcoreUtil.getURI(((AssurancePlan)elementEObject).eContainer());
}
}
return _switchResult;
}
@Override
public boolean hasChildren(final Object element) {
boolean _switchResult = false;
EObject _eObject = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(((URI) element), true);
boolean _matched = false;
if (!_matched) {
_switchResult = false;
}
return _switchResult;
}
@Override
public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) {
}
});
TreeViewerColumn _treeViewerColumn = new TreeViewerColumn(treeViewer, SWT.LEFT);
final Procedure1<TreeViewerColumn> _function_1 = (TreeViewerColumn it) -> {
TreeColumn _column = it.getColumn();
ColumnWeightData _columnWeightData = new ColumnWeightData(1);
columnLayout.setColumnData(_column, _columnWeightData);
TreeColumn _column_1 = it.getColumn();
_column_1.setText("Assurance Cases");
it.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(final Object element) {
String _switchResult = null;
EObject _eObject = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(((URI) element), true);
final EObject eObject = _eObject;
boolean _matched = false;
if (eObject instanceof AssuranceCase) {
_matched=true;
_switchResult = ((AssuranceCase)eObject).getName();
}
if (!_matched) {
if (eObject instanceof AssurancePlan) {
_matched=true;
_switchResult = ((AssurancePlan)eObject).getName();
}
}
return _switchResult;
}
});
};
ObjectExtensions.<TreeViewerColumn>operator_doubleArrow(_treeViewerColumn, _function_1);
TreeViewerColumn _treeViewerColumn_1 = new TreeViewerColumn(treeViewer, SWT.LEFT);
final Procedure1<TreeViewerColumn> _function_2 = (TreeViewerColumn it) -> {
TreeColumn _column = it.getColumn();
ColumnWeightData _columnWeightData = new ColumnWeightData(1);
columnLayout.setColumnData(_column, _columnWeightData);
TreeColumn _column_1 = it.getColumn();
_column_1.setText("Filter");
it.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(final Object element) {
String _xblockexpression = null;
{
final EObject eObject = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(((URI) element), true);
String _xifexpression = null;
if ((eObject instanceof AssuranceCase)) {
String _xblockexpression_1 = null;
{
final URI filter = AssureRequirementsCoverageView.this.selectedFilters.get(element);
String _xifexpression_1 = null;
if ((filter != null)) {
EObject _eObject = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(filter, true);
_xifexpression_1 = ((CategoryFilter) _eObject).getName();
} else {
_xifexpression_1 = "<all>";
}
_xblockexpression_1 = _xifexpression_1;
}
_xifexpression = _xblockexpression_1;
}
_xblockexpression = _xifexpression;
}
return _xblockexpression;
}
});
it.setEditingSupport(new EditingSupport(treeViewer) {
@Override
protected boolean canEdit(final Object element) {
EObject _eObject = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(((URI) element), true);
return (_eObject instanceof AssuranceCase);
}
@Override
protected CellEditor getCellEditor(final Object element) {
Tree _tree = treeViewer.getTree();
ComboBoxViewerCellEditor _comboBoxViewerCellEditor = new ComboBoxViewerCellEditor(_tree, SWT.READ_ONLY);
final Procedure1<ComboBoxViewerCellEditor> _function = (ComboBoxViewerCellEditor it_1) -> {
it_1.setContentProvider(ArrayContentProvider.getInstance());
it_1.setLabelProvider(new LabelProvider() {
@Override
public String getText(final Object element) {
String _xblockexpression = null;
{
final Optional<URI> filterURI = ((Optional<URI>) element);
String _xifexpression = null;
boolean _isPresent = filterURI.isPresent();
if (_isPresent) {
EObject _eObject = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(filterURI.get(), true);
_xifexpression = ((CategoryFilter) _eObject).getName();
} else {
_xifexpression = "<all>";
}
_xblockexpression = _xifexpression;
}
return _xblockexpression;
}
});
Optional<URI> _empty = Optional.<URI>empty();
final Function1<IEObjectDescription, Optional<URI>> _function_1 = (IEObjectDescription it_2) -> {
return Optional.<URI>of(it_2.getEObjectURI());
};
Iterable<Optional<URI>> _map = IterableExtensions.<IEObjectDescription, Optional<URI>>map(AssureRequirementsCoverageView.this.rds.getExportedObjectsByType(CategoriesPackage.Literals.CATEGORY_FILTER), _function_1);
it_1.setInput(IterableExtensions.<Optional<URI>>toList(Iterables.<Optional<URI>>concat(Collections.<Optional<URI>>unmodifiableList(CollectionLiterals.<Optional<URI>>newArrayList(_empty)), _map)));
};
return ObjectExtensions.<ComboBoxViewerCellEditor>operator_doubleArrow(_comboBoxViewerCellEditor, _function);
}
@Override
protected Object getValue(final Object element) {
return Optional.<URI>ofNullable(AssureRequirementsCoverageView.this.selectedFilters.get(element));
}
@Override
protected void setValue(final Object element, final Object value) {
final URI assuranceCase = ((URI) element);
final Optional<URI> filter = ((Optional<URI>) value);
boolean _isPresent = filter.isPresent();
if (_isPresent) {
AssureRequirementsCoverageView.this.selectedFilters.put(assuranceCase, filter.get());
} else {
AssureRequirementsCoverageView.this.selectedFilters.remove(assuranceCase);
}
treeViewer.update(assuranceCase, null);
AssureRequirementsCoverageView.this.updateAssureViewer(assuranceCase, true);
}
});
};
ObjectExtensions.<TreeViewerColumn>operator_doubleArrow(_treeViewerColumn_1, _function_2);
final ISelectionChangedListener _function_3 = (SelectionChangedEvent it) -> {
Object _firstElement = treeViewer.getStructuredSelection().getFirstElement();
this.updateAssureViewer(((URI) _firstElement), true);
};
treeViewer.addSelectionChangedListener(_function_3);
treeViewer.setInput(this.getAssuranceCaseURIsInWorkspace());
};
return ObjectExtensions.<TreeViewer>operator_doubleArrow(_treeViewer, _function);
}
private TreeViewer createAssureCoverageViewer(final Composite parent, final TreeColumnLayout columnLayout) {
abstract class __AssureRequirementsCoverageView_6 extends ColumnLabelProvider {
final __AssureRequirementsCoverageView_6 _this__AssureRequirementsCoverageView_6 = this;
public abstract int getCumulativeRequirementsWithoutPlanClaimCount(final AssureResult ele);
public abstract int getCumulativeRequirementsCount(final AssureResult ele);
}
abstract class __AssureRequirementsCoverageView_7 extends ColumnLabelProvider {
final __AssureRequirementsCoverageView_7 _this__AssureRequirementsCoverageView_7 = this;
NumberFormat format;
public abstract int getCumulativeQualityCategoryRequirementsCount(final AssureResult ele);
public abstract int getCumulativeTotalQualityCategorysCount(final AssureResult ele);
}
abstract class __AssureRequirementsCoverageView_8 extends ColumnLabelProvider {
final __AssureRequirementsCoverageView_8 _this__AssureRequirementsCoverageView_8 = this;
public abstract int getCumulativeFeaturesRequirementsCount(final AssureResult ele);
public abstract int getCumulativeFeaturesCount(final AssureResult ele);
}
abstract class __AssureRequirementsCoverageView_9 extends ColumnLabelProvider {
final __AssureRequirementsCoverageView_9 _this__AssureRequirementsCoverageView_9 = this;
public abstract int getCumulativeNoVerificationPlansCount(final AssureResult ele);
}
abstract class __AssureRequirementsCoverageView_10 extends ColumnLabelProvider {
final __AssureRequirementsCoverageView_10 _this__AssureRequirementsCoverageView_10 = this;
public abstract int getCumulativeExceptionsCount(final AssureResult ele);
public abstract int getCumulativeRequirementsCount(final AssureResult ele);
}
abstract class __AssureRequirementsCoverageView_11 extends ColumnLabelProvider {
final __AssureRequirementsCoverageView_11 _this__AssureRequirementsCoverageView_11 = this;
public abstract int getCumulativeReqTargetHasEMV2SubclauseCount(final AssureResult ele);
public abstract int getCumulativeRequirementsCount(final AssureResult ele);
}
abstract class __AssureRequirementsCoverageView_12 extends ColumnLabelProvider {
final __AssureRequirementsCoverageView_12 _this__AssureRequirementsCoverageView_12 = this;
public abstract int getCumulativeFeaturesWithRequiredClassifierCount(final AssureResult ele);
public abstract int getCumulativeFeaturesRequiringClassifierCount(final AssureResult ele);
}
TreeViewer _treeViewer = new TreeViewer(parent, ((SWT.BORDER | SWT.H_SCROLL) | SWT.V_SCROLL));
final Procedure1<TreeViewer> _function = (TreeViewer it) -> {
IWorkbenchPartSite _site = this.getSite();
_site.setSelectionProvider(it);
final ViewerFilter _function_1 = new ViewerFilter() {
@Override
public boolean select(final Viewer viewer, final Object parentElement, final Object element) {
boolean _switchResult = false;
EObject _eObject = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(((URI) element), true);
boolean _matched = false;
if (_eObject instanceof Metrics) {
_matched=true;
}
if (!_matched) {
if (_eObject instanceof QualifiedClaimReference) {
_matched=true;
}
}
if (!_matched) {
if (_eObject instanceof QualifiedVAReference) {
_matched=true;
}
}
if (!_matched) {
if (_eObject instanceof ClaimResult) {
_matched=true;
}
}
if (_matched) {
_switchResult = false;
}
if (!_matched) {
_switchResult = true;
}
return _switchResult;
}
};
it.addFilter(_function_1);
TreeViewerColumn _treeViewerColumn = new TreeViewerColumn(it, SWT.LEFT);
final Procedure1<TreeViewerColumn> _function_2 = (TreeViewerColumn it_1) -> {
TreeColumn _column = it_1.getColumn();
_column.setAlignment(SWT.LEFT);
TreeColumn _column_1 = it_1.getColumn();
_column_1.setText("");
TreeColumn _column_2 = it_1.getColumn();
ColumnPixelData _columnPixelData = new ColumnPixelData(300);
columnLayout.setColumnData(_column_2, _columnPixelData);
it_1.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(final Object element) {
String _switchResult = null;
EObject _eObject = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(((URI) element), true);
final EObject eObject = _eObject;
boolean _matched = false;
if (eObject instanceof AssuranceCaseResult) {
_matched=true;
String _name = ((AssuranceCaseResult)eObject).getName();
_switchResult = ("Assurance case " + _name);
}
if (!_matched) {
if (eObject instanceof ModelResult) {
_matched=true;
String _name = AssureUtilExtension.getName(((ModelResult)eObject));
_switchResult = ("Assurance plan " + _name);
}
}
if (!_matched) {
if (eObject instanceof SubsystemResult) {
_matched=true;
String _name = AssureUtilExtension.getName(((SubsystemResult)eObject));
_switchResult = ("Subsystem verification " + _name);
}
}
if (!_matched) {
if (eObject instanceof ClaimResult) {
_matched=true;
String _name = AssureUtilExtension.getName(((ClaimResult)eObject));
_switchResult = ("Claim " + _name);
}
}
if (!_matched) {
if (eObject instanceof VerificationActivityResult) {
_matched=true;
String _name = AssureUtilExtension.getName(((VerificationActivityResult)eObject));
_switchResult = ("Evidence " + _name);
}
}
if (!_matched) {
if (eObject instanceof ValidationResult) {
_matched=true;
String _name = AssureUtilExtension.getName(((ValidationResult)eObject));
_switchResult = ("Validation " + _name);
}
}
if (!_matched) {
if (eObject instanceof PreconditionResult) {
_matched=true;
String _name = AssureUtilExtension.getName(((PreconditionResult)eObject));
_switchResult = ("Precondition " + _name);
}
}
if (!_matched) {
if (eObject instanceof Diagnostic) {
_matched=true;
String _elvis = null;
EObject _modelElement = ((Diagnostic)eObject).getModelElement();
String _constructLabel = null;
if (_modelElement!=null) {
_constructLabel=AssureUtilExtension.constructLabel(_modelElement);
}
if (_constructLabel != null) {
_elvis = _constructLabel;
} else {
String _constructMessage = AssureUtilExtension.constructMessage(((Diagnostic)eObject));
_elvis = _constructMessage;
}
_switchResult = ("Issue " + _elvis);
}
}
if (!_matched) {
if (eObject instanceof ElseResult) {
_matched=true;
_switchResult = "else";
}
}
if (!_matched) {
if (eObject instanceof ThenResult) {
_matched=true;
_switchResult = "then";
}
}
if (!_matched) {
_switchResult = "?";
}
return _switchResult;
}
@Override
public Image getImage(final Object element) {
Image _xblockexpression = null;
{
String _switchResult = null;
EObject _eObject = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(((URI) element), true);
final EObject eObject = _eObject;
boolean _matched = false;
if (eObject instanceof Result) {
_matched=true;
String _switchResult_1 = null;
ResultType _resultType = ((Result)eObject).getResultType();
if (_resultType != null) {
switch (_resultType) {
case ERROR:
_switchResult_1 = "error.png";
break;
case SUCCESS:
_switchResult_1 = "valid.png";
break;
case FAILURE:
_switchResult_1 = "invalid.png";
break;
case TBD:
_switchResult_1 = "info.png";
break;
default:
break;
}
}
_switchResult = _switchResult_1;
}
if (!_matched) {
if (eObject instanceof Diagnostic) {
_matched=true;
String _switchResult_1 = null;
DiagnosticType _diagnosticType = ((Diagnostic)eObject).getDiagnosticType();
if (_diagnosticType != null) {
switch (_diagnosticType) {
case ERROR:
_switchResult_1 = "invalid.png";
break;
case WARNING:
_switchResult_1 = "warning.png";
break;
case INFO:
_switchResult_1 = "info.png";
break;
case TBD:
_switchResult_1 = "questionmark.png";
break;
default:
break;
}
}
_switchResult = _switchResult_1;
}
}
if (!_matched) {
if (eObject instanceof AssuranceCaseResult) {
_matched=true;
_switchResult = "assure.png";
}
}
if (!_matched) {
if (eObject instanceof ClaimResult) {
_matched=true;
_switchResult = "claim.png";
}
}
if (!_matched) {
if (eObject instanceof VerificationActivityResult) {
_matched=true;
_switchResult = "evidence.png";
}
}
if (!_matched) {
if (eObject instanceof ValidationResult) {
_matched=true;
_switchResult = "validation.png";
}
}
if (!_matched) {
if (eObject instanceof PreconditionResult) {
_matched=true;
_switchResult = "precondition.png";
}
}
if (!_matched) {
if (eObject instanceof ModelResult) {
_matched=true;
_switchResult = "precondition.png";
}
}
if (!_matched) {
if (eObject instanceof SubsystemResult) {
_matched=true;
_switchResult = "claims.png";
}
}
if (!_matched) {
if (eObject instanceof PredicateResult) {
_matched=true;
_switchResult = "precondition.png";
}
}
if (!_matched) {
_switchResult = "info.png";
}
final String fileName = _switchResult;
_xblockexpression = ImageDescriptor.createFromFile(this.getClass(), ("/icons/" + fileName)).createImage();
}
return _xblockexpression;
}
});
};
ObjectExtensions.<TreeViewerColumn>operator_doubleArrow(_treeViewerColumn, _function_2);
TreeViewerColumn _treeViewerColumn_1 = new TreeViewerColumn(it, SWT.RIGHT);
final Procedure1<TreeViewerColumn> _function_3 = (TreeViewerColumn it_1) -> {
TreeColumn _column = it_1.getColumn();
_column.setAlignment(SWT.LEFT);
TreeColumn _column_1 = it_1.getColumn();
_column_1.setText("Reqs w/no plan claim");
TreeColumn _column_2 = it_1.getColumn();
ColumnPixelData _columnPixelData = new ColumnPixelData(160);
columnLayout.setColumnData(_column_2, _columnPixelData);
__AssureRequirementsCoverageView_6 ___AssureRequirementsCoverageView_6 = new __AssureRequirementsCoverageView_6() {
@Override
public String getText(final Object element) {
String _switchResult = null;
EObject _eObject = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(((URI) element), true);
final EObject eObject = _eObject;
boolean _matched = false;
if (eObject instanceof AssuranceCaseResult) {
_matched=true;
int _cumulativeRequirementsWithoutPlanClaimCount = this.getCumulativeRequirementsWithoutPlanClaimCount(((AssureResult)eObject));
String _plus = (Integer.valueOf(_cumulativeRequirementsWithoutPlanClaimCount) + " of ");
int _cumulativeRequirementsCount = this.getCumulativeRequirementsCount(((AssureResult)eObject));
_switchResult = (_plus + Integer.valueOf(_cumulativeRequirementsCount));
}
if (!_matched) {
if (eObject instanceof ModelResult) {
_matched=true;
}
if (!_matched) {
if (eObject instanceof SubsystemResult) {
_matched=true;
}
}
if (_matched) {
String _xblockexpression = null;
{
final int noPlan = ((AssureResult)eObject).getMetrics().getRequirementsWithoutPlanClaimCount();
final int reqs = ((AssureResult)eObject).getMetrics().getRequirementsCount();
final int cumulativeNoPlan = this.getCumulativeRequirementsWithoutPlanClaimCount(((AssureResult)eObject));
StringConcatenation _builder = new StringConcatenation();
_builder.append(noPlan);
_builder.append(" of ");
_builder.append(reqs);
_builder.append(" | Cume: ");
_builder.append(cumulativeNoPlan);
_builder.append(" of ");
int _cumulativeRequirementsCount = this.getCumulativeRequirementsCount(((AssureResult)eObject));
_builder.append(_cumulativeRequirementsCount);
_xblockexpression = _builder.toString();
}
_switchResult = _xblockexpression;
}
}
if (!_matched) {
if (eObject instanceof Diagnostic) {
_matched=true;
String _elvis = null;
EObject _modelElement = ((Diagnostic)eObject).getModelElement();
String _constructLabel = null;
if (_modelElement!=null) {
_constructLabel=AssureUtilExtension.constructLabel(_modelElement);
}
if (_constructLabel != null) {
_elvis = _constructLabel;
} else {
String _constructMessage = AssureUtilExtension.constructMessage(((Diagnostic)eObject));
_elvis = _constructMessage;
}
_switchResult = _elvis;
}
}
if (!_matched) {
if (eObject instanceof ElseResult) {
_matched=true;
_switchResult = "else";
}
}
if (!_matched) {
if (eObject instanceof ThenResult) {
_matched=true;
_switchResult = "then";
}
}
if (!_matched) {
_switchResult = "?";
}
return _switchResult;
}
public int getCumulativeRequirementsWithoutPlanClaimCount(final AssureResult ele) {
int _xblockexpression = (int) 0;
{
EList<? extends AssureResult> _switchResult = null;
boolean _matched = false;
if (ele instanceof AssuranceCaseResult) {
_matched=true;
_switchResult = ((AssuranceCaseResult)ele).getModelResult();
}
if (!_matched) {
if (ele instanceof ModelResult) {
_matched=true;
_switchResult = ((ModelResult)ele).getSubsystemResult();
}
}
if (!_matched) {
if (ele instanceof SubsystemResult) {
_matched=true;
_switchResult = ((SubsystemResult)ele).getSubsystemResult();
}
}
final EList<? extends AssureResult> results = _switchResult;
int _requirementsWithoutPlanClaimCount = ele.getMetrics().getRequirementsWithoutPlanClaimCount();
final Function2<Integer, AssureResult, Integer> _function = (Integer sum, AssureResult res) -> {
int _cumulativeRequirementsWithoutPlanClaimCount = this.getCumulativeRequirementsWithoutPlanClaimCount(res);
return Integer.valueOf(((sum).intValue() + _cumulativeRequirementsWithoutPlanClaimCount));
};
Integer _fold = IterableExtensions.fold(results, Integer.valueOf(0), _function);
_xblockexpression = (_requirementsWithoutPlanClaimCount + (_fold).intValue());
}
return _xblockexpression;
}
public int getCumulativeRequirementsCount(final AssureResult ele) {
int _xblockexpression = (int) 0;
{
EList<? extends AssureResult> _switchResult = null;
boolean _matched = false;
if (ele instanceof AssuranceCaseResult) {
_matched=true;
_switchResult = ((AssuranceCaseResult)ele).getModelResult();
}
if (!_matched) {
if (ele instanceof ModelResult) {
_matched=true;
_switchResult = ((ModelResult)ele).getSubsystemResult();
}
}
if (!_matched) {
if (ele instanceof SubsystemResult) {
_matched=true;
_switchResult = ((SubsystemResult)ele).getSubsystemResult();
}
}
final EList<? extends AssureResult> results = _switchResult;
int _requirementsCount = ele.getMetrics().getRequirementsCount();
final Function2<Integer, AssureResult, Integer> _function = (Integer sum, AssureResult res) -> {
int _cumulativeRequirementsCount = this.getCumulativeRequirementsCount(res);
return Integer.valueOf(((sum).intValue() + _cumulativeRequirementsCount));
};
Integer _fold = IterableExtensions.fold(results, Integer.valueOf(0), _function);
_xblockexpression = (_requirementsCount + (_fold).intValue());
}
return _xblockexpression;
}
};
it_1.setLabelProvider(___AssureRequirementsCoverageView_6);
};
ObjectExtensions.<TreeViewerColumn>operator_doubleArrow(_treeViewerColumn_1, _function_3);
TreeViewerColumn _treeViewerColumn_2 = new TreeViewerColumn(it, SWT.RIGHT);
final Procedure1<TreeViewerColumn> _function_4 = (TreeViewerColumn it_1) -> {
TreeColumn _column = it_1.getColumn();
_column.setAlignment(SWT.LEFT);
TreeColumn _column_1 = it_1.getColumn();
_column_1.setText("Quality Categories Cvrg");
TreeColumn _column_2 = it_1.getColumn();
ColumnPixelData _columnPixelData = new ColumnPixelData(180);
columnLayout.setColumnData(_column_2, _columnPixelData);
__AssureRequirementsCoverageView_7 ___AssureRequirementsCoverageView_7 = new __AssureRequirementsCoverageView_7() {
{
format = ObjectExtensions.<NumberFormat>operator_doubleArrow(NumberFormat.getPercentInstance(), ((Procedure1<NumberFormat>) (NumberFormat it_2) -> {
it_2.setMinimumFractionDigits(2);
}));
}
@Override
public String getText(final Object element) {
String _switchResult = null;
EObject _eObject = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(((URI) element), true);
final EObject eObject = _eObject;
boolean _matched = false;
if (eObject instanceof AssuranceCaseResult) {
_matched=true;
int _cumulativeQualityCategoryRequirementsCount = this.getCumulativeQualityCategoryRequirementsCount(((AssureResult)eObject));
int _cumulativeTotalQualityCategorysCount = this.getCumulativeTotalQualityCategorysCount(((AssureResult)eObject));
double _divide = (((double) _cumulativeQualityCategoryRequirementsCount) / _cumulativeTotalQualityCategorysCount);
_switchResult = this.format.format(_divide);
}
if (!_matched) {
if (eObject instanceof ModelResult) {
_matched=true;
}
if (!_matched) {
if (eObject instanceof SubsystemResult) {
_matched=true;
}
}
if (_matched) {
String _xblockexpression = null;
{
final int qualityReqs = ((AssureResult)eObject).getMetrics().getQualityCategoryRequirementsCount();
final int totalQuality = ((AssureResult)eObject).getMetrics().getTotalQualityCategoryCount();
int _cumulativeQualityCategoryRequirementsCount = this.getCumulativeQualityCategoryRequirementsCount(((AssureResult)eObject));
int _cumulativeTotalQualityCategorysCount = this.getCumulativeTotalQualityCategorysCount(((AssureResult)eObject));
double _divide = (((double) _cumulativeQualityCategoryRequirementsCount) / _cumulativeTotalQualityCategorysCount);
final String percent = this.format.format(_divide);
StringConcatenation _builder = new StringConcatenation();
_builder.append(qualityReqs);
_builder.append(" of ");
_builder.append(totalQuality);
_builder.append(" | Cume: ");
_builder.append(percent);
_xblockexpression = _builder.toString();
}
_switchResult = _xblockexpression;
}
}
if (!_matched) {
if (eObject instanceof Diagnostic) {
_matched=true;
String _elvis = null;
EObject _modelElement = ((Diagnostic)eObject).getModelElement();
String _constructLabel = null;
if (_modelElement!=null) {
_constructLabel=AssureUtilExtension.constructLabel(_modelElement);
}
if (_constructLabel != null) {
_elvis = _constructLabel;
} else {
String _constructMessage = AssureUtilExtension.constructMessage(((Diagnostic)eObject));
_elvis = _constructMessage;
}
_switchResult = _elvis;
}
}
if (!_matched) {
if (eObject instanceof ElseResult) {
_matched=true;
_switchResult = "else";
}
}
if (!_matched) {
if (eObject instanceof ThenResult) {
_matched=true;
_switchResult = "then";
}
}
if (!_matched) {
_switchResult = "?";
}
return _switchResult;
}
public int getCumulativeQualityCategoryRequirementsCount(final AssureResult ele) {
int _xblockexpression = (int) 0;
{
EList<? extends AssureResult> _switchResult = null;
boolean _matched = false;
if (ele instanceof AssuranceCaseResult) {
_matched=true;
_switchResult = ((AssuranceCaseResult)ele).getModelResult();
}
if (!_matched) {
if (ele instanceof ModelResult) {
_matched=true;
_switchResult = ((ModelResult)ele).getSubsystemResult();
}
}
if (!_matched) {
if (ele instanceof SubsystemResult) {
_matched=true;
_switchResult = ((SubsystemResult)ele).getSubsystemResult();
}
}
final EList<? extends AssureResult> results = _switchResult;
int _qualityCategoryRequirementsCount = ele.getMetrics().getQualityCategoryRequirementsCount();
final Function2<Integer, AssureResult, Integer> _function = (Integer sum, AssureResult res) -> {
int _cumulativeQualityCategoryRequirementsCount = this.getCumulativeQualityCategoryRequirementsCount(res);
return Integer.valueOf(((sum).intValue() + _cumulativeQualityCategoryRequirementsCount));
};
Integer _fold = IterableExtensions.fold(results, Integer.valueOf(0), _function);
_xblockexpression = (_qualityCategoryRequirementsCount + (_fold).intValue());
}
return _xblockexpression;
}
public int getCumulativeTotalQualityCategorysCount(final AssureResult ele) {
int _xblockexpression = (int) 0;
{
EList<? extends AssureResult> _switchResult = null;
boolean _matched = false;
if (ele instanceof AssuranceCaseResult) {
_matched=true;
_switchResult = ((AssuranceCaseResult)ele).getModelResult();
}
if (!_matched) {
if (ele instanceof ModelResult) {
_matched=true;
_switchResult = ((ModelResult)ele).getSubsystemResult();
}
}
if (!_matched) {
if (ele instanceof SubsystemResult) {
_matched=true;
_switchResult = ((SubsystemResult)ele).getSubsystemResult();
}
}
final EList<? extends AssureResult> results = _switchResult;
int _totalQualityCategoryCount = ele.getMetrics().getTotalQualityCategoryCount();
final Function2<Integer, AssureResult, Integer> _function = (Integer sum, AssureResult res) -> {
int _cumulativeTotalQualityCategorysCount = this.getCumulativeTotalQualityCategorysCount(res);
return Integer.valueOf(((sum).intValue() + _cumulativeTotalQualityCategorysCount));
};
Integer _fold = IterableExtensions.fold(results, Integer.valueOf(0), _function);
_xblockexpression = (_totalQualityCategoryCount + (_fold).intValue());
}
return _xblockexpression;
}
};
it_1.setLabelProvider(___AssureRequirementsCoverageView_7);
};
ObjectExtensions.<TreeViewerColumn>operator_doubleArrow(_treeViewerColumn_2, _function_4);
TreeViewerColumn _treeViewerColumn_3 = new TreeViewerColumn(it, SWT.RIGHT);
final Procedure1<TreeViewerColumn> _function_5 = (TreeViewerColumn it_1) -> {
TreeColumn _column = it_1.getColumn();
_column.setAlignment(SWT.LEFT);
TreeColumn _column_1 = it_1.getColumn();
_column_1.setText("Requirement for Features");
TreeColumn _column_2 = it_1.getColumn();
ColumnPixelData _columnPixelData = new ColumnPixelData(180);
columnLayout.setColumnData(_column_2, _columnPixelData);
__AssureRequirementsCoverageView_8 ___AssureRequirementsCoverageView_8 = new __AssureRequirementsCoverageView_8() {
@Override
public String getText(final Object element) {
String _switchResult = null;
EObject _eObject = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(((URI) element), true);
final EObject eObject = _eObject;
boolean _matched = false;
if (eObject instanceof AssuranceCaseResult) {
_matched=true;
int _cumulativeFeaturesRequirementsCount = this.getCumulativeFeaturesRequirementsCount(((AssureResult)eObject));
String _plus = (Integer.valueOf(_cumulativeFeaturesRequirementsCount) + " for ");
int _cumulativeFeaturesCount = this.getCumulativeFeaturesCount(((AssureResult)eObject));
_switchResult = (_plus + Integer.valueOf(_cumulativeFeaturesCount));
}
if (!_matched) {
if (eObject instanceof ModelResult) {
_matched=true;
}
if (!_matched) {
if (eObject instanceof SubsystemResult) {
_matched=true;
}
}
if (_matched) {
String _xblockexpression = null;
{
final int featuresReqs = ((AssureResult)eObject).getMetrics().getFeaturesRequirementsCount();
final int features = ((AssureResult)eObject).getMetrics().getFeaturesCount();
final int cumulativeFeaturesReqs = this.getCumulativeFeaturesRequirementsCount(((AssureResult)eObject));
final int cumulativeFeatures = this.getCumulativeFeaturesCount(((AssureResult)eObject));
StringConcatenation _builder = new StringConcatenation();
_builder.append(featuresReqs);
_builder.append(" for ");
_builder.append(features);
_builder.append(" | Cume: ");
_builder.append(cumulativeFeaturesReqs);
_builder.append(" for ");
_builder.append(cumulativeFeatures);
_xblockexpression = _builder.toString();
}
_switchResult = _xblockexpression;
}
}
if (!_matched) {
if (eObject instanceof Diagnostic) {
_matched=true;
String _elvis = null;
EObject _modelElement = ((Diagnostic)eObject).getModelElement();
String _constructLabel = null;
if (_modelElement!=null) {
_constructLabel=AssureUtilExtension.constructLabel(_modelElement);
}
if (_constructLabel != null) {
_elvis = _constructLabel;
} else {
String _constructMessage = AssureUtilExtension.constructMessage(((Diagnostic)eObject));
_elvis = _constructMessage;
}
_switchResult = _elvis;
}
}
if (!_matched) {
if (eObject instanceof ElseResult) {
_matched=true;
_switchResult = "else";
}
}
if (!_matched) {
if (eObject instanceof ThenResult) {
_matched=true;
_switchResult = "then";
}
}
if (!_matched) {
_switchResult = "?";
}
return _switchResult;
}
public int getCumulativeFeaturesRequirementsCount(final AssureResult ele) {
int _xblockexpression = (int) 0;
{
EList<? extends AssureResult> _switchResult = null;
boolean _matched = false;
if (ele instanceof AssuranceCaseResult) {
_matched=true;
_switchResult = ((AssuranceCaseResult)ele).getModelResult();
}
if (!_matched) {
if (ele instanceof ModelResult) {
_matched=true;
_switchResult = ((ModelResult)ele).getSubsystemResult();
}
}
if (!_matched) {
if (ele instanceof SubsystemResult) {
_matched=true;
_switchResult = ((SubsystemResult)ele).getSubsystemResult();
}
}
final EList<? extends AssureResult> results = _switchResult;
int _featuresRequirementsCount = ele.getMetrics().getFeaturesRequirementsCount();
final Function2<Integer, AssureResult, Integer> _function = (Integer sum, AssureResult res) -> {
int _cumulativeFeaturesRequirementsCount = this.getCumulativeFeaturesRequirementsCount(res);
return Integer.valueOf(((sum).intValue() + _cumulativeFeaturesRequirementsCount));
};
Integer _fold = IterableExtensions.fold(results, Integer.valueOf(0), _function);
_xblockexpression = (_featuresRequirementsCount + (_fold).intValue());
}
return _xblockexpression;
}
public int getCumulativeFeaturesCount(final AssureResult ele) {
int _xblockexpression = (int) 0;
{
EList<? extends AssureResult> _switchResult = null;
boolean _matched = false;
if (ele instanceof AssuranceCaseResult) {
_matched=true;
_switchResult = ((AssuranceCaseResult)ele).getModelResult();
}
if (!_matched) {
if (ele instanceof ModelResult) {
_matched=true;
_switchResult = ((ModelResult)ele).getSubsystemResult();
}
}
if (!_matched) {
if (ele instanceof SubsystemResult) {
_matched=true;
_switchResult = ((SubsystemResult)ele).getSubsystemResult();
}
}
final EList<? extends AssureResult> results = _switchResult;
int _featuresCount = ele.getMetrics().getFeaturesCount();
final Function2<Integer, AssureResult, Integer> _function = (Integer sum, AssureResult res) -> {
int _cumulativeFeaturesCount = this.getCumulativeFeaturesCount(res);
return Integer.valueOf(((sum).intValue() + _cumulativeFeaturesCount));
};
Integer _fold = IterableExtensions.fold(results, Integer.valueOf(0), _function);
_xblockexpression = (_featuresCount + (_fold).intValue());
}
return _xblockexpression;
}
};
it_1.setLabelProvider(___AssureRequirementsCoverageView_8);
};
ObjectExtensions.<TreeViewerColumn>operator_doubleArrow(_treeViewerColumn_3, _function_5);
TreeViewerColumn _treeViewerColumn_4 = new TreeViewerColumn(it, SWT.RIGHT);
final Procedure1<TreeViewerColumn> _function_6 = (TreeViewerColumn it_1) -> {
TreeColumn _column = it_1.getColumn();
_column.setAlignment(SWT.LEFT);
TreeColumn _column_1 = it_1.getColumn();
_column_1.setText("No Verify Plans");
TreeColumn _column_2 = it_1.getColumn();
ColumnPixelData _columnPixelData = new ColumnPixelData(120);
columnLayout.setColumnData(_column_2, _columnPixelData);
__AssureRequirementsCoverageView_9 ___AssureRequirementsCoverageView_9 = new __AssureRequirementsCoverageView_9() {
@Override
public String getText(final Object element) {
String _switchResult = null;
EObject _eObject = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(((URI) element), true);
final EObject eObject = _eObject;
boolean _matched = false;
if (eObject instanceof AssuranceCaseResult) {
_matched=true;
_switchResult = Integer.valueOf(this.getCumulativeNoVerificationPlansCount(((AssureResult)eObject))).toString();
}
if (!_matched) {
if (eObject instanceof ModelResult) {
_matched=true;
}
if (!_matched) {
if (eObject instanceof SubsystemResult) {
_matched=true;
}
}
if (_matched) {
int _noVerificationPlansCount = ((AssureResult)eObject).getMetrics().getNoVerificationPlansCount();
String _plus = (Integer.valueOf(_noVerificationPlansCount) + " | Cume: ");
int _cumulativeNoVerificationPlansCount = this.getCumulativeNoVerificationPlansCount(((AssureResult)eObject));
_switchResult = (_plus + Integer.valueOf(_cumulativeNoVerificationPlansCount));
}
}
if (!_matched) {
if (eObject instanceof Diagnostic) {
_matched=true;
String _elvis = null;
EObject _modelElement = ((Diagnostic)eObject).getModelElement();
String _constructLabel = null;
if (_modelElement!=null) {
_constructLabel=AssureUtilExtension.constructLabel(_modelElement);
}
if (_constructLabel != null) {
_elvis = _constructLabel;
} else {
String _constructMessage = AssureUtilExtension.constructMessage(((Diagnostic)eObject));
_elvis = _constructMessage;
}
_switchResult = _elvis;
}
}
if (!_matched) {
if (eObject instanceof ElseResult) {
_matched=true;
_switchResult = "else";
}
}
if (!_matched) {
if (eObject instanceof ThenResult) {
_matched=true;
_switchResult = "then";
}
}
if (!_matched) {
_switchResult = "?";
}
return _switchResult;
}
public int getCumulativeNoVerificationPlansCount(final AssureResult ele) {
int _xblockexpression = (int) 0;
{
EList<? extends AssureResult> _switchResult = null;
boolean _matched = false;
if (ele instanceof AssuranceCaseResult) {
_matched=true;
_switchResult = ((AssuranceCaseResult)ele).getModelResult();
}
if (!_matched) {
if (ele instanceof ModelResult) {
_matched=true;
_switchResult = ((ModelResult)ele).getSubsystemResult();
}
}
if (!_matched) {
if (ele instanceof SubsystemResult) {
_matched=true;
_switchResult = ((SubsystemResult)ele).getSubsystemResult();
}
}
final EList<? extends AssureResult> results = _switchResult;
int _noVerificationPlansCount = ele.getMetrics().getNoVerificationPlansCount();
final Function2<Integer, AssureResult, Integer> _function = (Integer sum, AssureResult res) -> {
int _cumulativeNoVerificationPlansCount = this.getCumulativeNoVerificationPlansCount(res);
return Integer.valueOf(((sum).intValue() + _cumulativeNoVerificationPlansCount));
};
Integer _fold = IterableExtensions.fold(results, Integer.valueOf(0), _function);
_xblockexpression = (_noVerificationPlansCount + (_fold).intValue());
}
return _xblockexpression;
}
};
it_1.setLabelProvider(___AssureRequirementsCoverageView_9);
};
ObjectExtensions.<TreeViewerColumn>operator_doubleArrow(_treeViewerColumn_4, _function_6);
TreeViewerColumn _treeViewerColumn_5 = new TreeViewerColumn(it, SWT.RIGHT);
final Procedure1<TreeViewerColumn> _function_7 = (TreeViewerColumn it_1) -> {
TreeColumn _column = it_1.getColumn();
_column.setAlignment(SWT.LEFT);
TreeColumn _column_1 = it_1.getColumn();
_column_1.setText("Reqs w/Exception");
TreeColumn _column_2 = it_1.getColumn();
ColumnPixelData _columnPixelData = new ColumnPixelData(150);
columnLayout.setColumnData(_column_2, _columnPixelData);
__AssureRequirementsCoverageView_10 ___AssureRequirementsCoverageView_10 = new __AssureRequirementsCoverageView_10() {
@Override
public String getText(final Object element) {
String _switchResult = null;
EObject _eObject = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(((URI) element), true);
final EObject eObject = _eObject;
boolean _matched = false;
if (eObject instanceof AssuranceCaseResult) {
_matched=true;
int _cumulativeExceptionsCount = this.getCumulativeExceptionsCount(((AssureResult)eObject));
String _plus = (Integer.valueOf(_cumulativeExceptionsCount) + " of ");
int _cumulativeRequirementsCount = this.getCumulativeRequirementsCount(((AssureResult)eObject));
_switchResult = (_plus + Integer.valueOf(_cumulativeRequirementsCount));
}
if (!_matched) {
if (eObject instanceof ModelResult) {
_matched=true;
}
if (!_matched) {
if (eObject instanceof SubsystemResult) {
_matched=true;
}
}
if (_matched) {
String _xblockexpression = null;
{
final int exceptions = ((AssureResult)eObject).getMetrics().getExceptionsCount();
final int reqs = ((AssureResult)eObject).getMetrics().getRequirementsCount();
final int cumulativeExceptions = this.getCumulativeExceptionsCount(((AssureResult)eObject));
final int cumulativeReqs = this.getCumulativeRequirementsCount(((AssureResult)eObject));
StringConcatenation _builder = new StringConcatenation();
_builder.append(exceptions);
_builder.append(" of ");
_builder.append(reqs);
_builder.append(" | Cume: ");
_builder.append(cumulativeExceptions);
_builder.append(" of ");
_builder.append(cumulativeReqs);
_xblockexpression = _builder.toString();
}
_switchResult = _xblockexpression;
}
}
if (!_matched) {
_switchResult = "?";
}
return _switchResult;
}
public int getCumulativeExceptionsCount(final AssureResult ele) {
int _xblockexpression = (int) 0;
{
EList<? extends AssureResult> _switchResult = null;
boolean _matched = false;
if (ele instanceof AssuranceCaseResult) {
_matched=true;
_switchResult = ((AssuranceCaseResult)ele).getModelResult();
}
if (!_matched) {
if (ele instanceof ModelResult) {
_matched=true;
_switchResult = ((ModelResult)ele).getSubsystemResult();
}
}
if (!_matched) {
if (ele instanceof SubsystemResult) {
_matched=true;
_switchResult = ((SubsystemResult)ele).getSubsystemResult();
}
}
final EList<? extends AssureResult> results = _switchResult;
int _exceptionsCount = ele.getMetrics().getExceptionsCount();
final Function2<Integer, AssureResult, Integer> _function = (Integer sum, AssureResult res) -> {
int _cumulativeExceptionsCount = this.getCumulativeExceptionsCount(res);
return Integer.valueOf(((sum).intValue() + _cumulativeExceptionsCount));
};
Integer _fold = IterableExtensions.fold(results, Integer.valueOf(0), _function);
_xblockexpression = (_exceptionsCount + (_fold).intValue());
}
return _xblockexpression;
}
public int getCumulativeRequirementsCount(final AssureResult ele) {
int _xblockexpression = (int) 0;
{
EList<? extends AssureResult> _switchResult = null;
boolean _matched = false;
if (ele instanceof AssuranceCaseResult) {
_matched=true;
_switchResult = ((AssuranceCaseResult)ele).getModelResult();
}
if (!_matched) {
if (ele instanceof ModelResult) {
_matched=true;
_switchResult = ((ModelResult)ele).getSubsystemResult();
}
}
if (!_matched) {
if (ele instanceof SubsystemResult) {
_matched=true;
_switchResult = ((SubsystemResult)ele).getSubsystemResult();
}
}
final EList<? extends AssureResult> results = _switchResult;
int _requirementsCount = ele.getMetrics().getRequirementsCount();
final Function2<Integer, AssureResult, Integer> _function = (Integer sum, AssureResult res) -> {
int _cumulativeRequirementsCount = this.getCumulativeRequirementsCount(res);
return Integer.valueOf(((sum).intValue() + _cumulativeRequirementsCount));
};
Integer _fold = IterableExtensions.fold(results, Integer.valueOf(0), _function);
_xblockexpression = (_requirementsCount + (_fold).intValue());
}
return _xblockexpression;
}
};
it_1.setLabelProvider(___AssureRequirementsCoverageView_10);
};
ObjectExtensions.<TreeViewerColumn>operator_doubleArrow(_treeViewerColumn_5, _function_7);
TreeViewerColumn _treeViewerColumn_6 = new TreeViewerColumn(it, SWT.RIGHT);
final Procedure1<TreeViewerColumn> _function_8 = (TreeViewerColumn it_1) -> {
TreeColumn _column = it_1.getColumn();
_column.setAlignment(SWT.LEFT);
TreeColumn _column_1 = it_1.getColumn();
_column_1.setText("Req Target w/EMV2");
TreeColumn _column_2 = it_1.getColumn();
ColumnPixelData _columnPixelData = new ColumnPixelData(150);
columnLayout.setColumnData(_column_2, _columnPixelData);
__AssureRequirementsCoverageView_11 ___AssureRequirementsCoverageView_11 = new __AssureRequirementsCoverageView_11() {
@Override
public String getText(final Object element) {
String _switchResult = null;
EObject _eObject = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(((URI) element), true);
final EObject eObject = _eObject;
boolean _matched = false;
if (eObject instanceof AssuranceCaseResult) {
_matched=true;
int _cumulativeReqTargetHasEMV2SubclauseCount = this.getCumulativeReqTargetHasEMV2SubclauseCount(((AssureResult)eObject));
String _plus = (Integer.valueOf(_cumulativeReqTargetHasEMV2SubclauseCount) + " of ");
int _cumulativeRequirementsCount = this.getCumulativeRequirementsCount(((AssureResult)eObject));
_switchResult = (_plus + Integer.valueOf(_cumulativeRequirementsCount));
}
if (!_matched) {
if (eObject instanceof ModelResult) {
_matched=true;
}
if (!_matched) {
if (eObject instanceof SubsystemResult) {
_matched=true;
}
}
if (_matched) {
String _xblockexpression = null;
{
final int cumulativeSubclauses = this.getCumulativeReqTargetHasEMV2SubclauseCount(((AssureResult)eObject));
final int reqs = ((AssureResult)eObject).getMetrics().getRequirementsCount();
final int cumulativeReqs = this.getCumulativeRequirementsCount(((AssureResult)eObject));
StringConcatenation _builder = new StringConcatenation();
_builder.append(cumulativeSubclauses);
_builder.append(" of ");
_builder.append(reqs);
_builder.append(" | Cume: ");
_builder.append(cumulativeSubclauses);
_builder.append(" of ");
_builder.append(cumulativeReqs);
_xblockexpression = _builder.toString();
}
_switchResult = _xblockexpression;
}
}
if (!_matched) {
_switchResult = "?";
}
return _switchResult;
}
public int getCumulativeReqTargetHasEMV2SubclauseCount(final AssureResult ele) {
int _xblockexpression = (int) 0;
{
EList<? extends AssureResult> _switchResult = null;
boolean _matched = false;
if (ele instanceof AssuranceCaseResult) {
_matched=true;
_switchResult = ((AssuranceCaseResult)ele).getModelResult();
}
if (!_matched) {
if (ele instanceof ModelResult) {
_matched=true;
_switchResult = ((ModelResult)ele).getSubsystemResult();
}
}
if (!_matched) {
if (ele instanceof SubsystemResult) {
_matched=true;
_switchResult = ((SubsystemResult)ele).getSubsystemResult();
}
}
final EList<? extends AssureResult> results = _switchResult;
int _reqTargetHasEMV2SubclauseCount = ele.getMetrics().getReqTargetHasEMV2SubclauseCount();
final Function2<Integer, AssureResult, Integer> _function = (Integer sum, AssureResult res) -> {
int _cumulativeReqTargetHasEMV2SubclauseCount = this.getCumulativeReqTargetHasEMV2SubclauseCount(res);
return Integer.valueOf(((sum).intValue() + _cumulativeReqTargetHasEMV2SubclauseCount));
};
Integer _fold = IterableExtensions.fold(results, Integer.valueOf(0), _function);
_xblockexpression = (_reqTargetHasEMV2SubclauseCount + (_fold).intValue());
}
return _xblockexpression;
}
public int getCumulativeRequirementsCount(final AssureResult ele) {
int _xblockexpression = (int) 0;
{
EList<? extends AssureResult> _switchResult = null;
boolean _matched = false;
if (ele instanceof AssuranceCaseResult) {
_matched=true;
_switchResult = ((AssuranceCaseResult)ele).getModelResult();
}
if (!_matched) {
if (ele instanceof ModelResult) {
_matched=true;
_switchResult = ((ModelResult)ele).getSubsystemResult();
}
}
if (!_matched) {
if (ele instanceof SubsystemResult) {
_matched=true;
_switchResult = ((SubsystemResult)ele).getSubsystemResult();
}
}
final EList<? extends AssureResult> results = _switchResult;
int _requirementsCount = ele.getMetrics().getRequirementsCount();
final Function2<Integer, AssureResult, Integer> _function = (Integer sum, AssureResult res) -> {
int _cumulativeRequirementsCount = this.getCumulativeRequirementsCount(res);
return Integer.valueOf(((sum).intValue() + _cumulativeRequirementsCount));
};
Integer _fold = IterableExtensions.fold(results, Integer.valueOf(0), _function);
_xblockexpression = (_requirementsCount + (_fold).intValue());
}
return _xblockexpression;
}
};
it_1.setLabelProvider(___AssureRequirementsCoverageView_11);
};
ObjectExtensions.<TreeViewerColumn>operator_doubleArrow(_treeViewerColumn_6, _function_8);
TreeViewerColumn _treeViewerColumn_7 = new TreeViewerColumn(it, SWT.RIGHT);
final Procedure1<TreeViewerColumn> _function_9 = (TreeViewerColumn it_1) -> {
TreeColumn _column = it_1.getColumn();
_column.setAlignment(SWT.LEFT);
TreeColumn _column_1 = it_1.getColumn();
_column_1.setText("Classifiers for Features Requiring");
TreeColumn _column_2 = it_1.getColumn();
ColumnPixelData _columnPixelData = new ColumnPixelData(150);
columnLayout.setColumnData(_column_2, _columnPixelData);
__AssureRequirementsCoverageView_12 ___AssureRequirementsCoverageView_12 = new __AssureRequirementsCoverageView_12() {
@Override
public String getText(final Object element) {
String _switchResult = null;
EObject _eObject = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(((URI) element), true);
final EObject eObject = _eObject;
boolean _matched = false;
if (eObject instanceof AssuranceCaseResult) {
_matched=true;
String _xblockexpression = null;
{
final int cumulativeFeaturesWith = this.getCumulativeFeaturesWithRequiredClassifierCount(((AssureResult)eObject));
final int cumulativeFeaturesRequiring = this.getCumulativeFeaturesRequiringClassifierCount(((AssureResult)eObject));
String _plus = (Integer.valueOf(cumulativeFeaturesWith) + " of ");
_xblockexpression = (_plus + Integer.valueOf(cumulativeFeaturesRequiring));
}
_switchResult = _xblockexpression;
}
if (!_matched) {
if (eObject instanceof ModelResult) {
_matched=true;
}
if (!_matched) {
if (eObject instanceof SubsystemResult) {
_matched=true;
}
}
if (_matched) {
String _xblockexpression = null;
{
final int featuresWith = ((AssureResult)eObject).getMetrics().getFeaturesWithRequiredClassifierCount();
final int featuresRequiring = ((AssureResult)eObject).getMetrics().getFeaturesRequiringClassifierCount();
final int cumulativeFeaturesWith = this.getCumulativeFeaturesWithRequiredClassifierCount(((AssureResult)eObject));
final int cumulativeFeaturesRequiring = this.getCumulativeFeaturesRequiringClassifierCount(((AssureResult)eObject));
StringConcatenation _builder = new StringConcatenation();
_builder.append(featuresWith);
_builder.append(" of ");
_builder.append(featuresRequiring);
_builder.append(" | Cume: ");
_builder.append(cumulativeFeaturesWith);
_builder.append(" of ");
_builder.append(cumulativeFeaturesRequiring);
_xblockexpression = _builder.toString();
}
_switchResult = _xblockexpression;
}
}
if (!_matched) {
_switchResult = "?";
}
return _switchResult;
}
public int getCumulativeFeaturesWithRequiredClassifierCount(final AssureResult ele) {
int _xblockexpression = (int) 0;
{
EList<? extends AssureResult> _switchResult = null;
boolean _matched = false;
if (ele instanceof AssuranceCaseResult) {
_matched=true;
_switchResult = ((AssuranceCaseResult)ele).getModelResult();
}
if (!_matched) {
if (ele instanceof ModelResult) {
_matched=true;
_switchResult = ((ModelResult)ele).getSubsystemResult();
}
}
if (!_matched) {
if (ele instanceof SubsystemResult) {
_matched=true;
_switchResult = ((SubsystemResult)ele).getSubsystemResult();
}
}
final EList<? extends AssureResult> results = _switchResult;
int _featuresWithRequiredClassifierCount = ele.getMetrics().getFeaturesWithRequiredClassifierCount();
final Function2<Integer, AssureResult, Integer> _function = (Integer sum, AssureResult res) -> {
int _cumulativeFeaturesWithRequiredClassifierCount = this.getCumulativeFeaturesWithRequiredClassifierCount(res);
return Integer.valueOf(((sum).intValue() + _cumulativeFeaturesWithRequiredClassifierCount));
};
Integer _fold = IterableExtensions.fold(results, Integer.valueOf(0), _function);
_xblockexpression = (_featuresWithRequiredClassifierCount + (_fold).intValue());
}
return _xblockexpression;
}
public int getCumulativeFeaturesRequiringClassifierCount(final AssureResult ele) {
int _xblockexpression = (int) 0;
{
EList<? extends AssureResult> _switchResult = null;
boolean _matched = false;
if (ele instanceof AssuranceCaseResult) {
_matched=true;
_switchResult = ((AssuranceCaseResult)ele).getModelResult();
}
if (!_matched) {
if (ele instanceof ModelResult) {
_matched=true;
_switchResult = ((ModelResult)ele).getSubsystemResult();
}
}
if (!_matched) {
if (ele instanceof SubsystemResult) {
_matched=true;
_switchResult = ((SubsystemResult)ele).getSubsystemResult();
}
}
final EList<? extends AssureResult> results = _switchResult;
int _featuresRequiringClassifierCount = ele.getMetrics().getFeaturesRequiringClassifierCount();
final Function2<Integer, AssureResult, Integer> _function = (Integer sum, AssureResult res) -> {
int _cumulativeFeaturesRequiringClassifierCount = this.getCumulativeFeaturesRequiringClassifierCount(res);
return Integer.valueOf(((sum).intValue() + _cumulativeFeaturesRequiringClassifierCount));
};
Integer _fold = IterableExtensions.fold(results, Integer.valueOf(0), _function);
_xblockexpression = (_featuresRequiringClassifierCount + (_fold).intValue());
}
return _xblockexpression;
}
};
it_1.setLabelProvider(___AssureRequirementsCoverageView_12);
};
ObjectExtensions.<TreeViewerColumn>operator_doubleArrow(_treeViewerColumn_7, _function_9);
it.setContentProvider(new ITreeContentProvider() {
@Override
public void dispose() {
}
@Override
public Object[] getChildren(final Object parentElement) {
final Function1<EObject, URI> _function = (EObject it_1) -> {
return EcoreUtil.getURI(it_1);
};
return ((Object[])Conversions.unwrapArray(ListExtensions.<EObject, URI>map(AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(((URI) parentElement), true).eContents(), _function), Object.class));
}
@Override
public Object[] getElements(final Object inputElement) {
return ((Object[])Conversions.unwrapArray(((List<URI>) inputElement), Object.class));
}
@Override
public Object getParent(final Object element) {
Object _elvis = null;
EObject _eContainer = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(((URI) element), true).eContainer();
URI _uRI = null;
if (_eContainer!=null) {
_uRI=EcoreUtil.getURI(_eContainer);
}
if (_uRI != null) {
_elvis = _uRI;
} else {
Object _input = it.getInput();
_elvis = _input;
}
return _elvis;
}
@Override
public boolean hasChildren(final Object element) {
boolean _isEmpty = AssureRequirementsCoverageView.this.resourceSetForUI.getEObject(((URI) element), true).eContents().isEmpty();
return (!_isEmpty);
}
@Override
public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) {
}
});
Tree _tree = it.getTree();
_tree.setHeaderVisible(true);
Tree _tree_1 = it.getTree();
_tree_1.setLinesVisible(true);
};
return ObjectExtensions.<TreeViewer>operator_doubleArrow(_treeViewer, _function);
}
private List<URI> getAssuranceCaseURIsInWorkspace() {
final Function1<IEObjectDescription, URI> _function = (IEObjectDescription it) -> {
return it.getEObjectURI();
};
return IterableExtensions.<URI>toList(IterableExtensions.<IEObjectDescription, URI>map(this.rds.getExportedObjectsByType(AlisaPackage.Literals.ASSURANCE_CASE), _function));
}
private void updateAssureViewer(final URI assuranceCaseURI, final boolean updateRequirementsCoverageView) {
URI _get = this.selectedFilters.get(assuranceCaseURI);
final Pair<URI, URI> newURIs = Pair.<URI, URI>of(assuranceCaseURI, _get);
boolean _notEquals = (!Objects.equal(this.displayedCaseAndFilter, newURIs));
if (_notEquals) {
this.displayedCaseAndFilter = newURIs;
final EObject selectedAlisaObject = this.resourceSetForUI.getEObject(assuranceCaseURI, true);
AssuranceCaseResult _xifexpression = null;
if ((assuranceCaseURI != null)) {
AssuranceCaseResult _xifexpression_1 = null;
if ((selectedAlisaObject instanceof AssuranceCase)) {
AssuranceCaseResult _xblockexpression = null;
{
final Iterable<IEObjectDescription> resultDescriptions = this.rds.getExportedObjectsByType(
AssurePackage.Literals.ASSURANCE_CASE_RESULT);
final Function1<IEObjectDescription, AssuranceCaseResult> _function = (IEObjectDescription it) -> {
EObject _eObject = this.resourceSetForUI.getEObject(it.getEObjectURI(), true);
return ((AssuranceCaseResult) _eObject);
};
final Iterable<AssuranceCaseResult> results = IterableExtensions.<IEObjectDescription, AssuranceCaseResult>map(resultDescriptions, _function);
final Function1<AssuranceCaseResult, Boolean> _function_1 = (AssuranceCaseResult it) -> {
String _name = it.getName();
String _name_1 = ((AssuranceCase)selectedAlisaObject).getName();
return Boolean.valueOf(Objects.equal(_name, _name_1));
};
_xblockexpression = IterableExtensions.<AssuranceCaseResult>findFirst(results, _function_1);
}
_xifexpression_1 = _xblockexpression;
}
_xifexpression = _xifexpression_1;
}
AssuranceCaseResult result = _xifexpression;
CategoryFilter _xifexpression_2 = null;
if (((result != null) && (this.displayedCaseAndFilter.getValue() != null))) {
EObject _eObject = this.resourceSetForUI.getEObject(this.displayedCaseAndFilter.getValue(), true);
_xifexpression_2 = ((CategoryFilter) _eObject);
}
final CategoryFilter filter = _xifexpression_2;
if ((result == null)) {
if ((selectedAlisaObject instanceof AssuranceCase)) {
result = this.computeCoverage(((AssuranceCase)selectedAlisaObject), assuranceCaseURI, filter);
}
}
this.setAssuranceCaseResult(result, filter);
}
}
private AssuranceCaseResult createAndComputeCoverage(final AssuranceCase assuranceCase, final URI assuranceCaseURI, final Function1<? super ResourceSet, ? extends Pair<IProject, AssuranceCaseResult>> getProjectAndResult, final CategoryFilter filter) {
AssuranceCaseResult _xblockexpression = null;
{
final IEditorPart[] dirtyEditors = this.getViewSite().getPage().getDirtyEditors();
boolean _isEmpty = ((List<IEditorPart>)Conversions.doWrapArray(dirtyEditors)).isEmpty();
boolean _not = (!_isEmpty);
if (_not) {
final NullProgressMonitor monitor = new NullProgressMonitor();
final Consumer<IEditorPart> _function = (IEditorPart it) -> {
it.doSave(monitor);
};
((List<IEditorPart>)Conversions.doWrapArray(dirtyEditors)).forEach(_function);
}
final ResourceSet resourceSetForProcessing = this.resourceSetProvider.get(null);
final Pair<IProject, AssuranceCaseResult> assureProjectAndResult = getProjectAndResult.apply(resourceSetForProcessing);
final AssuranceCaseResult assuranceCaseResult = assureProjectAndResult.getValue();
this.assureRequirementMetricsProcessor.processCase(assuranceCaseResult, filter, null);
_xblockexpression = assuranceCaseResult;
}
return _xblockexpression;
}
private AssuranceCaseResult computeCoverage(final AssuranceCase assuranceCase, final URI assuranceCaseURI, final CategoryFilter filter) {
final Function1<ResourceSet, Pair<IProject, AssuranceCaseResult>> _function = (ResourceSet resourceSetForProcessing) -> {
return this.createCaseResult(assuranceCase, assuranceCaseURI, resourceSetForProcessing);
};
return this.createAndComputeCoverage(assuranceCase, assuranceCaseURI, _function, filter);
}
private Pair<IProject, AssuranceCaseResult> createCaseResult(final AssuranceCase assuranceCase, final URI assuranceCaseURI, final ResourceSet resourceSetForProcessing) {
Pair<IProject, AssuranceCaseResult> _xblockexpression = null;
{
IWorkspaceRoot _root = ResourcesPlugin.getWorkspace().getRoot();
String _platformString = assuranceCaseURI.toPlatformString(true);
Path _path = new Path(_platformString);
final IProject assureProject = _root.getFile(_path).getProject();
StringConcatenation _builder = new StringConcatenation();
IPath _fullPath = assureProject.getFullPath();
_builder.append(_fullPath);
_builder.append("/assure/");
String _name = assuranceCase.getName();
_builder.append(_name);
_builder.append(".assure");
final URI assureURI = URI.createPlatformResourceURI(_builder.toString(), false);
final AtomicReference<AssuranceCaseResult> assuranceCaseResultHolder = new AtomicReference<AssuranceCaseResult>();
final AssuranceCaseResult assuranceCaseResult = this.assureConstructor.generateFullAssuranceCase(assuranceCase);
AssureUtilExtension.resetToTBD(assuranceCaseResult, null);
AssureUtilExtension.recomputeAllCounts(assuranceCaseResult, null);
Resource _elvis = null;
Resource _resource = resourceSetForProcessing.getResource(assureURI, false);
if (_resource != null) {
_elvis = _resource;
} else {
Resource _createResource = resourceSetForProcessing.createResource(assureURI);
_elvis = _createResource;
}
final Resource resource = _elvis;
resource.getContents().clear();
EList<EObject> _contents = resource.getContents();
_contents.add(assuranceCaseResult);
try {
resource.save(null);
} catch (final Throwable _t) {
if (_t instanceof IOException) {
} else {
throw Exceptions.sneakyThrow(_t);
}
}
assuranceCaseResultHolder.set(assuranceCaseResult);
AssuranceCaseResult _get = assuranceCaseResultHolder.get();
_xblockexpression = Pair.<IProject, AssuranceCaseResult>of(assureProject, _get);
}
return _xblockexpression;
}
void setAssuranceCaseResult(final AssuranceCaseResult assuranceCaseResult, final CategoryFilter filter) {
final Object[] expandedElements = this.assureCoverageViewer.getExpandedElements();
this.assureRequirementMetricsProcessor.processCase(assuranceCaseResult, filter, null);
URI _uRI = EcoreUtil.getURI(assuranceCaseResult);
this.assureCoverageViewer.setInput(Collections.<URI>unmodifiableList(CollectionLiterals.<URI>newArrayList(_uRI)));
this.assureCoverageViewer.setExpandedElements(expandedElements);
}
}