API changes to support DSL internal links
Change-Id: I66c27d0f98e70f9b881dd01636c0fb64cca1e309
diff --git a/org.eclipse.capra.core/src/org/eclipse/capra/core/adapters/AbstractMetaModelAdapter.java b/org.eclipse.capra.core/src/org/eclipse/capra/core/adapters/AbstractMetaModelAdapter.java
new file mode 100644
index 0000000..814266f
--- /dev/null
+++ b/org.eclipse.capra.core/src/org/eclipse/capra/core/adapters/AbstractMetaModelAdapter.java
@@ -0,0 +1,120 @@
+package org.eclipse.capra.core.adapters;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.capra.core.handlers.IArtifactHandler;
+import org.eclipse.capra.core.helpers.ArtifactHelper;
+import org.eclipse.capra.core.helpers.ExtensionPointHelper;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+/**
+ * Implements standard functionality for the methods defined in the
+ * {@link TraceMetaModelAdapter}.
+ */
+public abstract class AbstractMetaModelAdapter implements TraceMetaModelAdapter {
+
+ private List<Connection> getInternalElementsTransitive(EObject element, EObject traceModel,
+ List<Object> accumulator, List<String> selectedRelationshipTypes, int currentDepth, int maximumDepth,
+ List<Connection> existingTraces) {
+ List<Connection> directElements = getInternalElements(element, traceModel, selectedRelationshipTypes, true,
+ maximumDepth, existingTraces);
+ List<Connection> allElements = new ArrayList<>();
+ int currDepth = currentDepth + 1;
+ for (Connection connection : directElements) {
+ if (!accumulator.contains(connection.getTlink())) {
+ allElements.add(connection);
+ accumulator.add(connection.getTlink());
+ for (EObject e : connection.getTargets()) {
+ if (maximumDepth == 0 || currDepth < (maximumDepth + 2)) {
+ allElements.addAll(getInternalElementsTransitive(e, traceModel, accumulator,
+ selectedRelationshipTypes, currDepth, maximumDepth, existingTraces));
+ }
+ }
+ }
+ }
+
+ return allElements;
+ }
+
+ @Override
+ public List<Connection> getInternalElementsTransitive(EObject element, EObject traceModel,
+ List<String> selectedRelationshipTypes, int maximumDepth, List<Connection> existingTraces) {
+ List<Object> accumulator = new ArrayList<>();
+ return getInternalElementsTransitive(element, traceModel, accumulator, selectedRelationshipTypes, 0,
+ maximumDepth, existingTraces);
+ }
+
+ @Override
+ public List<Connection> getInternalElements(EObject element, EObject traceModel,
+ List<String> selectedRelationshipTypes, boolean traceLinksTransitive, int transitivityDepth,
+ List<Connection> existingTraces) {
+ List<Connection> allElements = new ArrayList<>();
+ ArrayList<Integer> duplicationCheck = new ArrayList<>();
+ List<Connection> directElements;
+ if (traceLinksTransitive) {
+ directElements = getTransitivelyConnectedElements(element, traceModel, selectedRelationshipTypes,
+ transitivityDepth);
+ } else {
+ directElements = getConnectedElements(element, traceModel, selectedRelationshipTypes);
+ }
+ List<Integer> hashCodes = new ArrayList<>();
+
+ for (Connection conn : existingTraces) {
+ int connectionHash = conn.getOrigin().hashCode() + conn.getTlink().hashCode();
+ for (EObject targ : conn.getTargets()) {
+ connectionHash += targ.hashCode();
+ }
+ hashCodes.add(connectionHash);
+ }
+
+ ResourceSet resourceSet = new ResourceSetImpl();
+ TracePersistenceAdapter persistenceAdapter = ExtensionPointHelper.getTracePersistenceAdapter().get();
+ EObject artifactModel = persistenceAdapter.getArtifactWrappers(resourceSet);
+ ArtifactHelper artifactHelper = new ArtifactHelper(artifactModel);
+
+ for (Connection conn : directElements) {
+ int connectionHash = conn.getOrigin().hashCode() + conn.getTlink().hashCode();
+ for (EObject targ : conn.getTargets()) {
+ connectionHash += targ.hashCode();
+ }
+ if (!hashCodes.contains(connectionHash)) {
+ allElements.add(conn);
+ }
+ for (EObject o : conn.getTargets()) {
+ @SuppressWarnings("unchecked")
+ IArtifactHandler<Object> handler = (IArtifactHandler<Object>) artifactHelper.getHandler(o).orElse(null);
+ handler.addInternalLinks(o, allElements, duplicationCheck, selectedRelationshipTypes);
+
+ }
+ }
+
+ if (element.getClass().getPackage().toString().contains("org.eclipse.eatop")) {
+ @SuppressWarnings("unchecked")
+ IArtifactHandler<Object> handler = (IArtifactHandler<Object>) artifactHelper.getHandler(element)
+ .orElse(null);
+ handler.addInternalLinks(element, allElements, duplicationCheck, selectedRelationshipTypes);
+ }
+ return allElements;
+ }
+
+ @Override
+ public boolean isThereATraceBetween(EObject first, EObject second, EObject traceModel) {
+ return false;
+ }
+
+ @Override
+ public boolean isThereAnInternalTraceBetween(EObject first, EObject second, EObject traceModel) {
+ ResourceSet resourceSet = new ResourceSetImpl();
+ TracePersistenceAdapter persistenceAdapter = ExtensionPointHelper.getTracePersistenceAdapter().get();
+ EObject artifactModel = persistenceAdapter.getArtifactWrappers(resourceSet);
+ ArtifactHelper artifactHelper = new ArtifactHelper(artifactModel);
+ IArtifactHandler<?> handlerFirstElement = artifactHelper.getHandler(first).orElse(null);
+ IArtifactHandler<?> handlerSecondElement = artifactHelper.getHandler(second).orElse(null);
+
+ return handlerFirstElement.isThereAnInternalTraceBetween(first, second, traceModel)
+ || handlerSecondElement.isThereAnInternalTraceBetween(first, second, traceModel);
+ }
+}
diff --git a/org.eclipse.capra.core/src/org/eclipse/capra/core/adapters/TraceMetaModelAdapter.java b/org.eclipse.capra.core/src/org/eclipse/capra/core/adapters/TraceMetaModelAdapter.java
index 3ef86ba..4fcf08d 100644
--- a/org.eclipse.capra.core/src/org/eclipse/capra/core/adapters/TraceMetaModelAdapter.java
+++ b/org.eclipse.capra.core/src/org/eclipse/capra/core/adapters/TraceMetaModelAdapter.java
@@ -25,7 +25,7 @@
*
*/
public interface TraceMetaModelAdapter {
-
+
/**
* Create a new model for the trace links.
*
@@ -61,17 +61,18 @@
*/
EObject createTrace(EClass traceType, EObject traceModel, List<EObject> selection);
- /** Decide if two objects are connected according to the given trace model
- *
- * @param first
- * First object
- * @param second
- * Second object
- * @param traceModel
- * Trace model to base decision on
- * @return <code>true</code> if object are connected, <code>false</code>
- * otherwise
- */
+ /**
+ * Decide if two objects are connected according to the given trace model
+ *
+ * @param first
+ * First object
+ * @param second
+ * Second object
+ * @param traceModel
+ * Trace model to base decision on
+ * @return <code>true</code> if object are connected, <code>false</code>
+ * otherwise
+ */
boolean isThereATraceBetween(EObject first, EObject second, EObject traceModel);
/**
@@ -97,10 +98,51 @@
* Note that this element could be a trace in the trace model
* @param traceModel
* Trace model to base calculation on
+ * @param selectedRelationshipTypes
+ * List of selected relationship types from the context menu of
+ * plantuml
* @return A Map with the following structure: [Trace object t -> {list of
* all objects connected to element via t}]
*/
- List<Connection> getTransitivelyConnectedElements(EObject element, EObject traceModel);
+ List<Connection> getConnectedElements(EObject element, EObject traceModel, List<String> selectedRelationshipTypes);
+
+ /**
+ * Determine a list of all objects connected to element according to the
+ * given trace model
+ *
+ * @param element
+ * The element used to determine the list of connected objects.
+ * Note that this element could be a trace in the trace model
+ * @param traceModel
+ * Trace model to base calculation on
+ * @param transitivityDepth
+ * The maximum depth the user wants to go down transitively. 0
+ * indicates no limit.
+ * @return A Map with the following structure: [Trace object t -> {list of
+ * all objects connected to element via t}]
+ */
+ List<Connection> getTransitivelyConnectedElements(EObject element, EObject traceModel, int transitivityDepth);
+
+ /**
+ * Determine a list of all objects connected to element according to the
+ * given trace model
+ *
+ * @param element
+ * The element used to determine the list of connected objects.
+ * Note that this element could be a trace in the trace model
+ * @param traceModel
+ * Trace model to base calculation on
+ * @param selectedRelationshipTypes
+ * List of selected relationship types from the context menu of
+ * plantuml
+ * @param transitivityDepth
+ * The maximum depth the user wants to go down transitively. 0
+ * indicates no limit.
+ * @return A Map with the following structure: [Trace object t -> {list of
+ * all objects connected to element via t}]
+ */
+ List<Connection> getTransitivelyConnectedElements(EObject element, EObject traceModel,
+ List<String> selectedRelationshipTypes, int transitivityDepth);
/**
* Given a trace model, this method returns a list of all trace links in the
@@ -123,4 +165,64 @@
* the trace model to delete the links from
*/
void deleteTrace(List<Connection> toDelete, EObject traceModel);
+
+ /**
+ * Determine a list of all objects internally connected to element (e.g.
+ * UML)
+ *
+ * @param element
+ * The element used to determine the list of connected objects.
+ * Note that this element could be a trace in the trace model
+ * @param traceModel
+ * Trace model to base calculation on
+ * @param selectedRelationshipTypes
+ * List of selected relationship types from the context menu of
+ * plantuml
+ * @param traceLinksTransitive
+ * Used to determine if tracelink elements should be received
+ * transitively
+ * @param transitivityDepth
+ * Used to in case tracelinks are received transivitely in order
+ * to set the depth
+ * @return A Map with the following structure: [Trace object t -> {list of
+ * all objects connected to element via t}]
+ */
+ List<Connection> getInternalElements(EObject element, EObject traceModel, List<String> selectedRelationshipTypes,
+ boolean traceLinksTransitive, int transitivityDepth, List<Connection> existingTraces);
+
+ /**
+ * Determine a list of elements internally connected to the selected one
+ * transitively
+ *
+ * @param element
+ * The element used to determine the list of connected objects.
+ * Note that this element could be a trace in the trace model
+ * @param traceModel
+ * Trace model to base calculation on
+ * @param transitivityDepth
+ * The maximum depth the user wants to go down transitively. 0
+ * indicates no limit.
+ * @return A Map with the following structure: [Trace object t -> {list of
+ * all objects connected to element via t}]
+ */
+ List<Connection> getInternalElementsTransitive(EObject element, EObject traceModel,
+ List<String> selectedRelationshipTypes, int transitivityDepth, List<Connection> existingTraces);
+
+ /**
+ * Decide if two objects are connected internally by passing the selected
+ * objects down to the artifact handlers and returns a String with the Type
+ * of connection for the trace matrix (empty String if no connection exists)
+ * This is implemented in the {@link AbstractMetaModelAdapter} and does not
+ * need to be overwritten but can be used like it is.
+ *
+ * @param first
+ * First object
+ * @param second
+ * Second object
+ * @param traceModel
+ * Trace model to base decision on
+ * @return <code>true</code> if object are connected, <code>false</code>
+ * otherwise
+ */
+ boolean isThereAnInternalTraceBetween(EObject first, EObject second, EObject traceModel);
}
diff --git a/org.eclipse.capra.core/src/org/eclipse/capra/core/handlers/IArtifactHandler.java b/org.eclipse.capra.core/src/org/eclipse/capra/core/handlers/IArtifactHandler.java
index a69b1f7..488961c 100644
--- a/org.eclipse.capra.core/src/org/eclipse/capra/core/handlers/IArtifactHandler.java
+++ b/org.eclipse.capra.core/src/org/eclipse/capra/core/handlers/IArtifactHandler.java
@@ -10,9 +10,11 @@
*******************************************************************************/
package org.eclipse.capra.core.handlers;
+import java.util.List;
import java.util.Optional;
import java.util.function.BiFunction;
+import org.eclipse.capra.core.adapters.Connection;
import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.emf.ecore.EObject;
@@ -101,7 +103,6 @@
*/
Class<T> getHandledClass();
-
/**
* When a change in the resource occurs, it generates the message that is to
* be displayed by the Capra marker.
@@ -110,10 +111,39 @@
* represents changes in the state of a resource
* @param wrapperUri
* uri of the artifact that is associated with the change
- * @return the Capra marker message. Every marker must return a unique message.
- * If the message already exists it will be ignoored and a marker will
- * not be created.
+ * @return the Capra marker message. Every marker must return a unique
+ * message. If the message already exists it will be ignoored and a
+ * marker will not be created.
*/
String generateMarkerMessage(IResourceDelta delta, String wrapperUri);
+ /**
+ * Returns the type that is handled by this <code>IArtifactHandler</code>.
+ *
+ * @param investigatedElement
+ * Element currently under investigation for links
+ * @param allElements
+ * List of all elements for Plant-uml view
+ * @param duplicationCheck
+ * List of String for checking for duplication
+ */
+ void addInternalLinks(EObject investigatedElement, List<Connection> allElements, List<Integer> duplicationCheck,
+ List<String> selectedRelationshipTypes);
+
+ /**
+ * Decide if two objects are connected according to the given trace model
+ * and returns a String with the Type of connection for the trace matrix
+ * (empty String if no connection exists)
+ *
+ * @param first
+ * First object
+ * @param second
+ * Second object
+ * @param traceModel
+ * Trace model to base decision on
+ * @return <code>true</code> if object are connected, <code>false</code>
+ * otherwise
+ */
+ boolean isThereAnInternalTraceBetween(EObject first, EObject second, EObject traceModel);
+
}
diff --git a/org.eclipse.capra.generic.tracemodels/plugin.xml b/org.eclipse.capra.generic.tracemodels/plugin.xml
index 31f48f2..9e4b04e 100644
--- a/org.eclipse.capra.generic.tracemodels/plugin.xml
+++ b/org.eclipse.capra.generic.tracemodels/plugin.xml
@@ -25,13 +25,6 @@
genModel="model/generictrace.xcore"/>
</extension>
- <extension point="org.eclipse.emf.ecore.generated_package">
- <!-- @generated artifact -->
- <package
- uri="org.eclipse.capra.GenericArtifactMetaModel"
- class="org.eclipse.capra.GenericArtifactMetaModel.GenericArtifactMetaModelPackage"
- genModel="model/artifact.xcore"/>
- </extension>
<extension
point="org.eclipse.capra.configuration.traceabilityMetaModel">
<TraceabilityMetaModelAdapter
diff --git a/org.eclipse.capra.generic.tracemodels/src/org/eclipse/capra/generic/tracemodels/GenericMetaModelAdapter.java b/org.eclipse.capra.generic.tracemodels/src/org/eclipse/capra/generic/tracemodels/GenericMetaModelAdapter.java
index d717fff..6b3c100 100644
--- a/org.eclipse.capra.generic.tracemodels/src/org/eclipse/capra/generic/tracemodels/GenericMetaModelAdapter.java
+++ b/org.eclipse.capra.generic.tracemodels/src/org/eclipse/capra/generic/tracemodels/GenericMetaModelAdapter.java
@@ -20,6 +20,7 @@
import org.eclipse.capra.GenericTraceMetaModel.GenericTraceMetaModelPackage;
import org.eclipse.capra.GenericTraceMetaModel.GenericTraceModel;
import org.eclipse.capra.GenericTraceMetaModel.RelatedTo;
+import org.eclipse.capra.core.adapters.AbstractMetaModelAdapter;
import org.eclipse.capra.core.adapters.Connection;
import org.eclipse.capra.core.adapters.TraceMetaModelAdapter;
import org.eclipse.capra.core.helpers.ExtensionPointHelper;
@@ -35,7 +36,7 @@
/**
* Provides generic functionality to deal with traceability meta models.
*/
-public class GenericMetaModelAdapter implements TraceMetaModelAdapter {
+public class GenericMetaModelAdapter extends AbstractMetaModelAdapter implements TraceMetaModelAdapter {
public GenericMetaModelAdapter() {
// TODO Auto-generated constructor stub
@@ -63,28 +64,24 @@
RelatedTo RelatedToTrace = (RelatedTo) trace;
RelatedToTrace.getItem().addAll(selection);
-
// String builder to build the name of the trace link so by adding the
// elements it connects so as to make it easy for a user to visually
// differentiate trace links
-
+
String name = "";
-
+
for (Object obj : selection) {
- name = name + " " + ExtensionPointHelper.getArtifactHandlers().stream()
- .map(handler -> handler.withCastedHandler(obj, (h, e) -> h.getDisplayName(e)))
- .filter(Optional::isPresent)
- .map(Optional::get)
- .findFirst()
- .orElseGet(obj::toString);
+ name = name + " "
+ + ExtensionPointHelper.getArtifactHandlers().stream()
+ .map(handler -> handler.withCastedHandler(obj, (h, e) -> h.getDisplayName(e)))
+ .filter(Optional::isPresent).map(Optional::get).findFirst().orElseGet(obj::toString);
}
-
+
RelatedToTrace.setName(name.toString());
TM.getTraces().add(RelatedToTrace);
return TM;
}
-
@Override
public boolean isThereATraceBetween(EObject firstElement, EObject secondElement, EObject traceModel) {
GenericTraceModel root = (GenericTraceModel) traceModel;
@@ -100,8 +97,9 @@
}
if (relevantLinks.size() > 0) {
return true;
- } else
- return false;
+ }
+
+ return this.isThereAnInternalTraceBetween(firstElement, secondElement, traceModel);
}
@Override
@@ -124,28 +122,56 @@
return connections;
}
+ @Override
+ public List<Connection> getConnectedElements(EObject element, EObject tracemodel,
+ List<String> selectedRelationshipTypes) {
+ GenericTraceModel root = (GenericTraceModel) tracemodel;
+ List<Connection> connections = new ArrayList<>();
+ List<RelatedTo> traces = root.getTraces();
+
+ if (selectedRelationshipTypes.size() == 0 || selectedRelationshipTypes
+ .contains(GenericTraceMetaModelPackage.eINSTANCE.getRelatedTo().getName())) {
+ if (element instanceof RelatedTo) {
+ RelatedTo trace = (RelatedTo) element;
+ connections.add(new Connection(element, trace.getItem(), trace));
+ } else {
+
+ for (RelatedTo trace : traces) {
+ if (trace.getItem().contains(element)) {
+ connections.add(new Connection(element, trace.getItem(), trace));
+ }
+ }
+ }
+ }
+ return connections;
+ }
+
private List<Connection> getTransitivelyConnectedElements(EObject element, EObject traceModel,
- List<Object> accumulator) {
+ ArrayList<Object> accumulator, int currentDepth, int maximumDepth) {
List<Connection> directElements = getConnectedElements(element, traceModel);
List<Connection> allElements = new ArrayList<>();
- directElements.forEach(connection -> {
+ int currDepth = currentDepth + 1;
+ for (Connection connection : directElements) {
if (!accumulator.contains(connection.getTlink())) {
allElements.add(connection);
accumulator.add(connection.getTlink());
- connection.getTargets().forEach(e -> {
- allElements.addAll(getTransitivelyConnectedElements(e, traceModel, accumulator));
- });
+ for (EObject e : connection.getTargets()) {
+ if (maximumDepth == 0 || currDepth <= maximumDepth) {
+ allElements.addAll(
+ getTransitivelyConnectedElements(e, traceModel, accumulator, currDepth, maximumDepth));
+ }
+ }
}
- });
+ }
return allElements;
}
@Override
- public List<Connection> getTransitivelyConnectedElements(EObject element, EObject traceModel) {
- List<Object> accumulator = new ArrayList<>();
- return getTransitivelyConnectedElements(element, traceModel, accumulator);
+ public List<Connection> getTransitivelyConnectedElements(EObject element, EObject traceModel, int maximumDepth) {
+ ArrayList<Object> accumulator = new ArrayList<>();
+ return getTransitivelyConnectedElements(element, traceModel, accumulator, -2, maximumDepth);
}
@Override
@@ -163,7 +189,7 @@
@Override
public void deleteTrace(List<Connection> toDelete, EObject traceModel) {
- if(traceModel instanceof GenericTraceModel) {
+ if (traceModel instanceof GenericTraceModel) {
GenericTraceModel TModel = (GenericTraceModel) traceModel;
EList<RelatedTo> links = TModel.getTraces();
ResourceSet resourceSet = new ResourceSetImpl();
@@ -175,13 +201,43 @@
URI traceModelURI = EcoreUtil.getURI(traceModel);
Resource resourceForTraces = resourceSet.createResource(traceModelURI);
resourceForTraces.getContents().add(newTraceModel);
-
+
try {
resourceForTraces.save(null);
- // TODO: Think of a way to let the developer handle such sitations (e.g., via an Exception)
+ // TODO: Think of a way to let the developer handle such
+ // sitations (e.g., via an Exception)
} catch (IOException e) {
e.printStackTrace();
}
+ }
}
+
+ @Override
+ public List<Connection> getTransitivelyConnectedElements(EObject element, EObject traceModel,
+ List<String> selectedRelationshipTypes, int maximumDepth) {
+ List<Object> accumulator = new ArrayList<>();
+ return getTransitivelyConnectedElements(element, traceModel, accumulator, selectedRelationshipTypes, -2,
+ maximumDepth);
+ }
+
+ private List<Connection> getTransitivelyConnectedElements(EObject element, EObject traceModel,
+ List<Object> accumulator, List<String> selectedRelationshipTypes, int currentDepth, int maximumDepth) {
+ List<Connection> directElements = getConnectedElements(element, traceModel, selectedRelationshipTypes);
+ List<Connection> allElements = new ArrayList<>();
+ int currDepth = currentDepth++;
+ for (Connection connection : directElements) {
+ if (!accumulator.contains(connection.getTlink())) {
+ allElements.add(connection);
+ accumulator.add(connection.getTlink());
+ for (EObject e : connection.getTargets()) {
+ if (maximumDepth == 0 || currDepth <= maximumDepth) {
+ allElements.addAll(getTransitivelyConnectedElements(e, traceModel, accumulator,
+ selectedRelationshipTypes, currDepth, maximumDepth));
+ }
+ }
+ }
+ }
+
+ return allElements;
}
}
diff --git a/org.eclipse.capra.handler.cdt/src/org/eclipse/capra/handler/cdt/CDTHandler.java b/org.eclipse.capra.handler.cdt/src/org/eclipse/capra/handler/cdt/CDTHandler.java
index 0b8117b..7b4ecef 100644
--- a/org.eclipse.capra.handler.cdt/src/org/eclipse/capra/handler/cdt/CDTHandler.java
+++ b/org.eclipse.capra.handler.cdt/src/org/eclipse/capra/handler/cdt/CDTHandler.java
@@ -10,8 +10,11 @@
*******************************************************************************/
package org.eclipse.capra.handler.cdt;
+import java.util.List;
+
import org.apache.http.client.utils.URIBuilder;
import org.eclipse.capra.core.adapters.ArtifactMetaModelAdapter;
+import org.eclipse.capra.core.adapters.Connection;
import org.eclipse.capra.core.handlers.AbstractArtifactHandler;
import org.eclipse.capra.core.handlers.AnnotationException;
import org.eclipse.capra.core.handlers.IAnnotateArtifact;
@@ -29,7 +32,8 @@
* Handler to allow tracing to and from elements of C such as files and
* functions. Uses CDT as the foundation.
* </p>
- * This handler encodes a locator to the C element in artifact URI:s in the following way:
+ * This handler encodes a locator to the C element in artifact URI:s in the
+ * following way:
* {@code platform:/Project_name/path/to/file.c#classOrStructName/memberName}
* <p/>
* {@code platform:/Project_name/path/to/file.c#functionClassOrStructName}.
@@ -39,25 +43,25 @@
@Override
public EObject createWrapper(ICElement element, EObject artifactModel) {
ICompositeType type = (ICompositeType) element.getParent().getAncestor(ICElement.C_CLASS);
- if (type == null) type = (ICompositeType) element.getParent().getAncestor(ICElement.C_STRUCT);
- if (type == null) type = (ICompositeType) element.getParent().getAncestor(ICElement.C_UNION);
-
+ if (type == null)
+ type = (ICompositeType) element.getParent().getAncestor(ICElement.C_STRUCT);
+ if (type == null)
+ type = (ICompositeType) element.getParent().getAncestor(ICElement.C_UNION);
+
// TODO: Will this be unique? I don't know.
String typePrefix = type == null ? "" : type.getName() + "/";
- // TODO: This does not take C++ function overloading on argument types into account when
+ // TODO: This does not take C++ function overloading on argument types
+ // into account when
// constructing the URI
- String uri = new URIBuilder()
- .setScheme("platform")
- .setPath("/resource" + element.getPath())
- .setFragment(typePrefix + element.getElementName())
- .toString();
+ String uri = new URIBuilder().setScheme("platform").setPath("/resource" + element.getPath())
+ .setFragment(typePrefix + element.getElementName()).toString();
- ArtifactMetaModelAdapter adapter = ExtensionPointHelper.getArtifactWrapperMetaModelAdapter().get();
- EObject wrapper = adapter.createArtifact(artifactModel, this.getClass().getName(),
- uri, element.getHandleIdentifier(), element.getElementName(), element.getPath().toString());
+ ArtifactMetaModelAdapter adapter = ExtensionPointHelper.getArtifactWrapperMetaModelAdapter().get();
+ EObject wrapper = adapter.createArtifact(artifactModel, this.getClass().getName(), uri,
+ element.getHandleIdentifier(), element.getElementName(), element.getPath().toString());
- return wrapper;
+ return wrapper;
}
@Override
@@ -74,11 +78,12 @@
@Override
public void annotateArtifact(EObject wrapper, String annotation) throws AnnotationException {
IEclipsePreferences preferences = CDTPreferences.getPreferences();
-
- if (!preferences.getBoolean(CDTPreferences.ANNOTATE_CDT, CDTPreferences.ANNOTATE_CDT_DEFAULT)) return;
-
+
+ if (!preferences.getBoolean(CDTPreferences.ANNOTATE_CDT, CDTPreferences.ANNOTATE_CDT_DEFAULT))
+ return;
+
ICElement handle = resolveWrapper(wrapper);
-
+
try {
CDTAnnotate.annotateArtifact(handle, annotation);
} catch (CoreException e) {
@@ -90,4 +95,17 @@
public String generateMarkerMessage(IResourceDelta delta, String wrapperUri) {
return null;
}
+
+ @Override
+ public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
+ List<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean isThereAnInternalTraceBetween(EObject first, EObject second, EObject traceModel) {
+ // TODO Auto-generated method stub
+ return false;
+ }
}
diff --git a/org.eclipse.capra.handler.emf/src/org/eclipse/capra/handler/emf/EMFHandler.java b/org.eclipse.capra.handler.emf/src/org/eclipse/capra/handler/emf/EMFHandler.java
index ffa88e8..bf16912 100644
--- a/org.eclipse.capra.handler.emf/src/org/eclipse/capra/handler/emf/EMFHandler.java
+++ b/org.eclipse.capra.handler.emf/src/org/eclipse/capra/handler/emf/EMFHandler.java
@@ -10,6 +10,9 @@
*******************************************************************************/
package org.eclipse.capra.handler.emf;
+import java.util.List;
+
+import org.eclipse.capra.core.adapters.Connection;
import org.eclipse.capra.core.handlers.AbstractArtifactHandler;
import org.eclipse.capra.core.helpers.EMFHelper;
import org.eclipse.core.resources.IResourceDelta;
@@ -39,4 +42,17 @@
public String generateMarkerMessage(IResourceDelta delta, String wrapperUri) {
return null;
}
+
+ @Override
+ public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
+ List<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean isThereAnInternalTraceBetween(EObject first, EObject second, EObject traceModel) {
+ // TODO Auto-generated method stub
+ return false;
+ }
}
diff --git a/org.eclipse.capra.handler.file/src/org/eclipse/capra/handler/file/IFileHandler.java b/org.eclipse.capra.handler.file/src/org/eclipse/capra/handler/file/IFileHandler.java
index 113aed2..c2c8a8c 100644
--- a/org.eclipse.capra.handler.file/src/org/eclipse/capra/handler/file/IFileHandler.java
+++ b/org.eclipse.capra.handler.file/src/org/eclipse/capra/handler/file/IFileHandler.java
@@ -10,13 +10,16 @@
*******************************************************************************/
package org.eclipse.capra.handler.file;
+import java.util.List;
+
import org.eclipse.capra.core.adapters.ArtifactMetaModelAdapter;
+import org.eclipse.capra.core.adapters.Connection;
import org.eclipse.capra.core.handlers.AbstractArtifactHandler;
import org.eclipse.capra.core.helpers.ExtensionPointHelper;
import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Path;
-import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.emf.ecore.EObject;
/**
@@ -52,4 +55,17 @@
+ " has been changed. Please check if associated trace links are still valid.";
}
+ @Override
+ public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
+ List<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean isThereAnInternalTraceBetween(EObject first, EObject second, EObject traceModel) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
}
diff --git a/org.eclipse.capra.handler.gef/src/org/eclipse/capra/handler/gef/GEFHandler.java b/org.eclipse.capra.handler.gef/src/org/eclipse/capra/handler/gef/GEFHandler.java
index 2341959..3f8b51d 100644
--- a/org.eclipse.capra.handler.gef/src/org/eclipse/capra/handler/gef/GEFHandler.java
+++ b/org.eclipse.capra.handler.gef/src/org/eclipse/capra/handler/gef/GEFHandler.java
@@ -10,6 +10,9 @@
*******************************************************************************/
package org.eclipse.capra.handler.gef;
+import java.util.List;
+
+import org.eclipse.capra.core.adapters.Connection;
import org.eclipse.capra.core.handlers.AbstractArtifactHandler;
import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.emf.ecore.EObject;
@@ -42,4 +45,17 @@
public String generateMarkerMessage(IResourceDelta delta, String wrapperUri) {
return null;
}
+
+ @Override
+ public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
+ List<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean isThereAnInternalTraceBetween(EObject first, EObject second, EObject traceModel) {
+ // TODO Auto-generated method stub
+ return false;
+ }
}
diff --git a/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/BuildElementHandler.java b/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/BuildElementHandler.java
index 8394364..85668e3 100644
--- a/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/BuildElementHandler.java
+++ b/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/BuildElementHandler.java
@@ -10,7 +10,10 @@
*******************************************************************************/
package org.eclipse.capra.handler.hudson;
+import java.util.List;
+
import org.eclipse.capra.core.adapters.ArtifactMetaModelAdapter;
+import org.eclipse.capra.core.adapters.Connection;
import org.eclipse.capra.core.handlers.AbstractArtifactHandler;
import org.eclipse.capra.core.helpers.ExtensionPointHelper;
import org.eclipse.core.resources.IResourceDelta;
@@ -18,8 +21,8 @@
import org.eclipse.mylyn.builds.internal.core.BuildElement;
/**
- * A handler to allow tracing to and from build elements handled by the continuous
- * integration server Hudson via the integrated Mylyn facilities.
+ * A handler to allow tracing to and from build elements handled by the
+ * continuous integration server Hudson via the integrated Mylyn facilities.
*/
public class BuildElementHandler extends AbstractArtifactHandler<BuildElement> {
@@ -48,4 +51,17 @@
return null;
}
+ @Override
+ public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
+ List<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean isThereAnInternalTraceBetween(EObject first, EObject second, EObject traceModel) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
}
diff --git a/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/TestElementHandler.java b/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/TestElementHandler.java
index a89a693..abd8fbc 100644
--- a/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/TestElementHandler.java
+++ b/org.eclipse.capra.handler.hudson/src/org/eclipse/capra/handler/hudson/TestElementHandler.java
@@ -10,7 +10,10 @@
*******************************************************************************/
package org.eclipse.capra.handler.hudson;
+import java.util.List;
+
import org.eclipse.capra.core.adapters.ArtifactMetaModelAdapter;
+import org.eclipse.capra.core.adapters.Connection;
import org.eclipse.capra.core.handlers.AbstractArtifactHandler;
import org.eclipse.capra.core.helpers.ExtensionPointHelper;
import org.eclipse.core.resources.IResourceDelta;
@@ -18,8 +21,8 @@
import org.eclipse.mylyn.builds.internal.core.TestElement;
/**
- * A handler to allow tracing to and from test elements handled by the continuous
- * integration server Hudson via the integrated Mylyn facilities.
+ * A handler to allow tracing to and from test elements handled by the
+ * continuous integration server Hudson via the integrated Mylyn facilities.
*/
public class TestElementHandler extends AbstractArtifactHandler<TestElement> {
@@ -49,4 +52,17 @@
return null;
}
+ @Override
+ public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
+ List<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean isThereAnInternalTraceBetween(EObject first, EObject second, EObject traceModel) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
}
diff --git a/org.eclipse.capra.handler.jdt/src/org/eclipse/capra/handler/jdt/JavaElementHandler.java b/org.eclipse.capra.handler.jdt/src/org/eclipse/capra/handler/jdt/JavaElementHandler.java
index a98b3ba..aa8f826 100644
--- a/org.eclipse.capra.handler.jdt/src/org/eclipse/capra/handler/jdt/JavaElementHandler.java
+++ b/org.eclipse.capra.handler.jdt/src/org/eclipse/capra/handler/jdt/JavaElementHandler.java
@@ -12,10 +12,12 @@
import java.io.BufferedReader;
import java.io.InputStreamReader;
+import java.util.List;
import java.util.stream.Collectors;
import org.apache.http.client.utils.URIBuilder;
import org.eclipse.capra.core.adapters.ArtifactMetaModelAdapter;
+import org.eclipse.capra.core.adapters.Connection;
import org.eclipse.capra.core.handlers.AbstractArtifactHandler;
import org.eclipse.capra.core.handlers.AnnotationException;
import org.eclipse.capra.core.handlers.IAnnotateArtifact;
@@ -38,7 +40,8 @@
* A handler to allow creating traces to and from java elements such as classes
* and methods based on JDT.
* </p>
- * This handler encodes a locator to the Java element in artifact URI:s in the following way:
+ * This handler encodes a locator to the Java element in artifact URI:s in the
+ * following way:
* {@code platform:/Project_name/path/to/file.java#com.pack.ClassName/methodName}.
*/
public class JavaElementHandler extends AbstractArtifactHandler<IJavaElement> implements IAnnotateArtifact {
@@ -46,34 +49,32 @@
@Override
public EObject createWrapper(IJavaElement element, EObject artifactModel) {
IType type = (IType) element.getParent().getAncestor(IJavaElement.TYPE);
-
+
String fragment;
if (type == null) {
if (element.getElementType() == IJavaElement.TYPE) {
// Top level classes get their fully qualified name
fragment = ((IType) element).getFullyQualifiedName();
} else {
- // This will probably never happen, if something doesn't
+ // This will probably never happen, if something doesn't
// have a type ancestor it is always a type itself
fragment = element.getElementName();
}
} else {
- // Case for members: A list of '/' separated type names, followed by a member name
+ // Case for members: A list of '/' separated type names, followed by
+ // a member name
fragment = type.getFullyQualifiedName().replaceAll("\\$", "/") + "/" + element.getElementName();
}
-
- URIBuilder uriBuilder = new URIBuilder()
- .setScheme("platform")
- .setPath("/resource" + element.getPath())
- .setFragment(fragment);
+
+ URIBuilder uriBuilder = new URIBuilder().setScheme("platform").setPath("/resource" + element.getPath())
+ .setFragment(fragment);
ArtifactMetaModelAdapter adapter = ExtensionPointHelper.getArtifactWrapperMetaModelAdapter().get();
String displayName = (type == null ? "" : (type.getElementName() + ".")) + element.getElementName();
-
- EObject wrapper = adapter.createArtifact(artifactModel, this.getClass().getName(),
- uriBuilder.toString(), element.getHandleIdentifier(),
- displayName, element.getPath().toString());
+
+ EObject wrapper = adapter.createArtifact(artifactModel, this.getClass().getName(), uriBuilder.toString(),
+ element.getHandleIdentifier(), displayName, element.getPath().toString());
return wrapper;
}
@@ -156,4 +157,17 @@
return message;
}
+
+ @Override
+ public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
+ List<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean isThereAnInternalTraceBetween(EObject first, EObject second, EObject traceModel) {
+ // TODO Auto-generated method stub
+ return false;
+ }
}
diff --git a/org.eclipse.capra.handler.mylyn/src/org/eclipse/capra/handler/mylyn/MylynHandler.java b/org.eclipse.capra.handler.mylyn/src/org/eclipse/capra/handler/mylyn/MylynHandler.java
index 0c3dc3d..797ed22 100644
--- a/org.eclipse.capra.handler.mylyn/src/org/eclipse/capra/handler/mylyn/MylynHandler.java
+++ b/org.eclipse.capra.handler.mylyn/src/org/eclipse/capra/handler/mylyn/MylynHandler.java
@@ -10,7 +10,10 @@
*******************************************************************************/
package org.eclipse.capra.handler.mylyn;
+import java.util.List;
+
import org.eclipse.capra.core.adapters.ArtifactMetaModelAdapter;
+import org.eclipse.capra.core.adapters.Connection;
import org.eclipse.capra.core.handlers.AbstractArtifactHandler;
import org.eclipse.capra.core.helpers.ExtensionPointHelper;
import org.eclipse.core.resources.IResourceDelta;
@@ -45,4 +48,17 @@
public String generateMarkerMessage(IResourceDelta delta, String wrapperUri) {
return null;
}
+
+ @Override
+ public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
+ List<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean isThereAnInternalTraceBetween(EObject first, EObject second, EObject traceModel) {
+ // TODO Auto-generated method stub
+ return false;
+ }
}
diff --git a/org.eclipse.capra.handler.office/src/org/eclipse/capra/handler/office/OfficeHandler.java b/org.eclipse.capra.handler.office/src/org/eclipse/capra/handler/office/OfficeHandler.java
index 6c68750..e2933b6 100644
--- a/org.eclipse.capra.handler.office/src/org/eclipse/capra/handler/office/OfficeHandler.java
+++ b/org.eclipse.capra.handler.office/src/org/eclipse/capra/handler/office/OfficeHandler.java
@@ -11,7 +11,10 @@
package org.eclipse.capra.handler.office;
+import java.util.List;
+
import org.eclipse.capra.core.adapters.ArtifactMetaModelAdapter;
+import org.eclipse.capra.core.adapters.Connection;
import org.eclipse.capra.core.handlers.AbstractArtifactHandler;
import org.eclipse.capra.core.helpers.ExtensionPointHelper;
import org.eclipse.capra.ui.office.model.CapraOfficeObject;
@@ -57,5 +60,17 @@
return null;
}
-
+ @Override
+ public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
+ List<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean isThereAnInternalTraceBetween(EObject first, EObject second, EObject traceModel) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
}
diff --git a/org.eclipse.capra.handler.papyrus/src/org/eclipse/capra/handler/papyrus/PapyrusHandler.java b/org.eclipse.capra.handler.papyrus/src/org/eclipse/capra/handler/papyrus/PapyrusHandler.java
index 03ddd4f..b5fcffe 100644
--- a/org.eclipse.capra.handler.papyrus/src/org/eclipse/capra/handler/papyrus/PapyrusHandler.java
+++ b/org.eclipse.capra.handler.papyrus/src/org/eclipse/capra/handler/papyrus/PapyrusHandler.java
@@ -10,6 +10,9 @@
*******************************************************************************/
package org.eclipse.capra.handler.papyrus;
+import java.util.List;
+
+import org.eclipse.capra.core.adapters.Connection;
import org.eclipse.capra.core.handlers.AbstractArtifactHandler;
import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.emf.ecore.EObject;
@@ -22,7 +25,6 @@
*/
public class PapyrusHandler extends AbstractArtifactHandler<EObjectTreeElement> {
-
@Override
public EObject createWrapper(EObjectTreeElement artifact, EObject artifactModel) {
// Returns the EObject corresponding to the input object if the input is
@@ -40,10 +42,23 @@
EObject sel = EMFHelper.getEObject(artifact);
return org.eclipse.capra.core.helpers.EMFHelper.getIdentifier(sel); // TODO
}
-
+
@Override
public String generateMarkerMessage(IResourceDelta delta, String wrapperUri) {
return null;
}
+ @Override
+ public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
+ List<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean isThereAnInternalTraceBetween(EObject first, EObject second, EObject traceModel) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
}
\ No newline at end of file
diff --git a/org.eclipse.capra.handler.php/src/org/eclipse/capra/handler/php/PhpHandler.java b/org.eclipse.capra.handler.php/src/org/eclipse/capra/handler/php/PhpHandler.java
index f4a52a0..f819447 100644
--- a/org.eclipse.capra.handler.php/src/org/eclipse/capra/handler/php/PhpHandler.java
+++ b/org.eclipse.capra.handler.php/src/org/eclipse/capra/handler/php/PhpHandler.java
@@ -1,6 +1,9 @@
package org.eclipse.capra.handler.php;
+import java.util.List;
+
import org.eclipse.capra.core.adapters.ArtifactMetaModelAdapter;
+import org.eclipse.capra.core.adapters.Connection;
import org.eclipse.capra.core.handlers.AbstractArtifactHandler;
import org.eclipse.capra.core.helpers.ExtensionPointHelper;
import org.eclipse.core.resources.IResourceDelta;
@@ -36,4 +39,17 @@
return null;
}
+ @Override
+ public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
+ List<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean isThereAnInternalTraceBetween(EObject first, EObject second, EObject traceModel) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
}
diff --git a/org.eclipse.capra.handler.reqIf/src/org/eclipse/capra/handler/reqif/ReqIfHandler.java b/org.eclipse.capra.handler.reqIf/src/org/eclipse/capra/handler/reqif/ReqIfHandler.java
index a02b640..18b1006 100644
--- a/org.eclipse.capra.handler.reqIf/src/org/eclipse/capra/handler/reqif/ReqIfHandler.java
+++ b/org.eclipse.capra.handler.reqIf/src/org/eclipse/capra/handler/reqif/ReqIfHandler.java
@@ -10,6 +10,9 @@
*******************************************************************************/
package org.eclipse.capra.handler.reqif;
+import java.util.List;
+
+import org.eclipse.capra.core.adapters.Connection;
import org.eclipse.capra.core.handlers.AbstractArtifactHandler;
import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.emf.ecore.EObject;
@@ -40,4 +43,17 @@
public String generateMarkerMessage(IResourceDelta delta, String wrapperUri) {
return null;
}
+
+ @Override
+ public void addInternalLinks(EObject investigatedElement, List<Connection> allElements,
+ List<Integer> duplicationCheck, List<String> selectedRelationshipTypes) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean isThereAnInternalTraceBetween(EObject first, EObject second, EObject traceModel) {
+ // TODO Auto-generated method stub
+ return false;
+ }
}
diff --git a/org.eclipse.capra.releng.target/org.eclipse.capra.releng.target.target b/org.eclipse.capra.releng.target/org.eclipse.capra.releng.target.target
index dcae9e4..18f362d 100644
--- a/org.eclipse.capra.releng.target/org.eclipse.capra.releng.target.target
+++ b/org.eclipse.capra.releng.target/org.eclipse.capra.releng.target.target
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target name="Neon" sequenceNumber="52">
+<?pde version="3.8"?><target name="Neon" sequenceNumber="53">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="net.sourceforge.plantuml.feature.feature.group" version="0.0.0"/>
@@ -31,13 +31,7 @@
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.php.feature.group" version="4.2.0.201611142355"/>
-<unit id="org.eclipse.mylyn.github.feature.feature.group" version="0.0.0"/>
<repository location="http://download.eclipse.org/releases/neon"/>
-<repository location="http://download.eclipse.org/egit/github/updates/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.mylyn.github.feature.feature.group" version="0.0.0"/>
-<repository location="http://download.eclipse.org/egit/github/updates/"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.apache.poi.ooxml" version="3.9.0.v201405241905"/>
@@ -55,18 +49,14 @@
<unit id="org.eclipse.mylyn.ide_feature.feature.group" version="3.21.0.v20160912-1820"/>
<unit id="org.eclipse.gef.sdk.feature.group" version="3.11.0.201606061308"/>
<unit id="org.eclipse.cdt.testsrunner.feature.feature.group" version="9.2.0.201612061315"/>
-<unit id="org.eclipse.mylyn.git.feature.group" version="1.13.0.v20160630-2022"/>
<unit id="org.eclipse.emf.emfstore.sdk.feature.feature.group" version="1.8.1.v20161125-1451"/>
-<unit id="org.eclipse.mylyn.wikitext_feature.feature.group" version="2.10.1.v20161129-1925"/>
<unit id="org.eclipse.emf.ecp.emfforms.sdk.feature.feature.group" version="1.11.0.20161205-1431"/>
<unit id="org.eclipse.papyrus.sdk.feature.feature.group" version="2.0.2.201612071107"/>
<unit id="org.eclipse.cdt.sdk.feature.group" version="9.2.0.201612061315"/>
<unit id="org.eclipse.emf.compare.ide.ui.feature.group" version="3.2.1.201608311750"/>
<unit id="org.eclipse.mylyn_feature.feature.group" version="3.21.0.v20160914-0252"/>
-<unit id="org.eclipse.cdt.mylyn.feature.group" version="5.17.0.v20160701-1337"/>
<unit id="org.eclipse.mylyn.hudson.feature.group" version="1.13.0.v20160806-1446"/>
<unit id="org.eclipse.emf.sdk.feature.group" version="2.12.0.v20160526-0356"/>
-<unit id="org.eclipse.mylyn.team_feature.feature.group" version="3.21.0.v20160701-1337"/>
<unit id="org.eclipse.xtext.sdk.feature.group" version="2.10.0.v201605250459"/>
<unit id="org.eclipse.zest.sdk.feature.group" version="1.7.0.201606061308"/>
<unit id="org.eclipse.mylyn.trac_feature.feature.group" version="3.21.0.v20160630-2019"/>
diff --git a/org.eclipse.capra.testsuite/src/org/eclipse/capra/testsuite/TestTraceabiltyMatrix.java b/org.eclipse.capra.testsuite/src/org/eclipse/capra/testsuite/TestTraceabiltyMatrix.java
index 4804400..e11a6fe 100644
--- a/org.eclipse.capra.testsuite/src/org/eclipse/capra/testsuite/TestTraceabiltyMatrix.java
+++ b/org.eclipse.capra.testsuite/src/org/eclipse/capra/testsuite/TestTraceabiltyMatrix.java
@@ -38,15 +38,15 @@
public class TestTraceabiltyMatrix {
private final static String EXPECTED_TEXT_FOR_SELECTED_PACKAGES_DIRECT = "@startuml\n" + "salt\n" + "{#\n"
- + ".|modelB : EPackage\n" + "modelA : EPackage |X\n" + "}\n" + "\n" + "@enduml\n";
+ + ".|modelB : EPackage\n" + "modelA : EPackage |\nX\t\n" + "}\n" + "\n" + "@enduml\n";
private final static String EXPECTED_TEXT_FOR_SELECTED_PACKAGES_TRANSITIVE = "@startuml\n" + "salt\n" + "{#\n"
- + ".|B : EClass|BB : EClass|modelB : EPackage\n" + "A : EClass |X|.|.\n" + "AA : EClass |.|X|.\n"
- + "modelA : EPackage |.|.|X\n" + "}\n" + "\n" + "@enduml\n";
+ + ".|B : EClass|BB : EClass|modelB : EPackage\n" + "A : EClass |\nX|\n.|\n.\t\n" + "AA : EClass |\n.|\nX|\n.\t\n"
+ + "modelA : EPackage |\n.|\n.|\nX\t\n" + "}\n" + "\n" + "@enduml\n";
private final static String EXPECTED_TEXT_FOR_SELECTED_CLASSES = "@startuml\n" + "salt\n" + "{#\n"
- + ".|A : EClass|B : EClass|AA : EClass|BB : EClass\n" + "A : EClass |.|X|.|.\n" + "B : EClass |X|.|.|.\n"
- + "AA : EClass |.|.|.|X\n" + "BB : EClass |.|.|X|.\n" + "}\n" + "\n" + "@enduml\n";
+ + ".|A : EClass|B : EClass|AA : EClass|BB : EClass\n" + "A : EClass |\n.|\nX|\n.|\n.\t\n" + "B : EClass |\nX|\n.|\n.|\n.\t\n"
+ + "AA : EClass |\n.|\n.|\n.|\nX\t\n" + "BB : EClass |\n.|\n.|\nX|\n.\t\n" + "}\n" + "\n" + "@enduml\n";
@Before
public void init() throws CoreException {
diff --git a/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/DiagramTextProviderHandler.java b/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/DiagramTextProviderHandler.java
index c6bb097..9576618 100644
--- a/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/DiagramTextProviderHandler.java
+++ b/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/DiagramTextProviderHandler.java
@@ -75,7 +75,9 @@
if (selectedModels.size() == 1) {
if (ToggleTransitivityHandler.isTraceViewTransitive()) {
- traces = metamodelAdapter.getTransitivelyConnectedElements(selectedObject, traceModel);
+ int transitivityDepth = 0;
+ //more to follow in the next commit
+ traces = metamodelAdapter.getTransitivelyConnectedElements(selectedObject, traceModel, transitivityDepth);
} else {
traces = metamodelAdapter.getConnectedElements(selectedObject, traceModel);
}
diff --git a/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/ToggleDisplayGraphHandler.java b/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/ToggleDisplayGraphHandler.java
index 051bf7e..1a760b9 100644
--- a/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/ToggleDisplayGraphHandler.java
+++ b/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/ToggleDisplayGraphHandler.java
@@ -44,7 +44,7 @@
public static boolean isDisplayGraph() {
Preferences graphDisplay = getPreference();
- return graphDisplay.get("option", "matrix").equals("matrix");
+ return graphDisplay.get("option", "graph").equals("matrix");
}
private static Preferences getPreference() {
diff --git a/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/VisualizationHelper.xtend b/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/VisualizationHelper.xtend
index adad9a5..3ba52f7 100644
--- a/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/VisualizationHelper.xtend
+++ b/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/VisualizationHelper.xtend
@@ -17,7 +17,8 @@
«IF firstElements != null»
.«FOR e : secondElements»|«Connections.getArtifactLabel(e)»«ENDFOR»
«FOR first : firstElements»
- «Connections.getArtifactLabel(first)» «FOR second : secondElements»|«IF traceAdapter.isThereATraceBetween(first, second, traceModel)»X«ELSE».«ENDIF»«ENDFOR»
+ «Connections.getArtifactLabel(first)» «FOR second : secondElements»|
+ «IF traceAdapter.isThereATraceBetween(first, second, traceModel)»X«ELSE».«ENDIF»«ENDFOR»
«ENDFOR»
«ELSE»
Choose two containers to show a traceability matrix of their contents.
diff --git a/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/.VisualizationHelper.xtendbin b/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/.VisualizationHelper.xtendbin
index 9c9cab4..f984179 100644
--- a/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/.VisualizationHelper.xtendbin
+++ b/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/.VisualizationHelper.xtendbin
Binary files differ
diff --git a/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/VisualizationHelper.java b/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/VisualizationHelper.java
index 7644e2c..c2020b1 100644
--- a/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/VisualizationHelper.java
+++ b/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/VisualizationHelper.java
@@ -45,6 +45,7 @@
{
for(final EObject second : secondElements) {
_builder.append("|");
+ _builder.newLineIfNotEmpty();
{
boolean _isThereATraceBetween = traceAdapter.isThereATraceBetween(first, second, traceModel);
if (_isThereATraceBetween) {
@@ -55,6 +56,7 @@
}
}
}
+ _builder.append("\t");
_builder.newLineIfNotEmpty();
}
}
diff --git a/org.eclipse.capra.ui.zest/src/org/eclipse/capra/ui/zest/TraceNodeContentProvider.java b/org.eclipse.capra.ui.zest/src/org/eclipse/capra/ui/zest/TraceNodeContentProvider.java
index 43a3e47..18993bd 100644
--- a/org.eclipse.capra.ui.zest/src/org/eclipse/capra/ui/zest/TraceNodeContentProvider.java
+++ b/org.eclipse.capra.ui.zest/src/org/eclipse/capra/ui/zest/TraceNodeContentProvider.java
@@ -76,7 +76,8 @@
List<EObject> nodes = new ArrayList<>();
if (currentSelection.get(0) instanceof EObject) {
EObject object = (EObject) currentSelection.get(0);
- connections = metaModelAdapter.getTransitivelyConnectedElements(object, traceModel);
+ int transitivityDepth = 0;
+ connections = metaModelAdapter.getTransitivelyConnectedElements(object, traceModel, transitivityDepth);
for (Connection c : connections) {
nodes.add(c.getOrigin());
nodes.addAll(c.getTargets());