Added display name and unique ID to the trace metamodel, updated
tracemetamodel interface to make it possible to use getDispalyName
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 27d7dde..018a3a4 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
@@ -53,7 +53,8 @@
* Objects to create the trace for
* @return root of trace model that now contains the newly created trace
*/
- EObject createTrace(EClass traceType, EObject traceModel, List<EObject> selection);
+ EObject createTrace(EClass traceType, EObject traceModel, List<EObject> selectionAsEcore,
+ List<Object> originalObject);
/**
* Used to delete a trace
diff --git a/org.eclipse.capra.generic.tracemodels/model/generictrace.xcore b/org.eclipse.capra.generic.tracemodels/model/generictrace.xcore
index edc4cb2..4fa6de3 100644
--- a/org.eclipse.capra.generic.tracemodels/model/generictrace.xcore
+++ b/org.eclipse.capra.generic.tracemodels/model/generictrace.xcore
@@ -1,10 +1,16 @@
package org.eclipse.capra.GenericTraceMetaModel
import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.util.EcoreUtil
+
class GenericTraceModel{
contains RelatedTo[0..*] traces
}
class RelatedTo {
+ derived String ID get {
+ EcoreUtil.generateUUID();
+ }
+ String name
refers EObject [0..*] item
}
\ No newline at end of file
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 a4e152a..75d6b4a 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
@@ -13,6 +13,7 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.stream.Collectors;
import org.eclipse.capra.GenericTraceMetaModel.GenericTraceMetaModelFactory;
import org.eclipse.capra.GenericTraceMetaModel.GenericTraceMetaModelPackage;
@@ -20,6 +21,8 @@
import org.eclipse.capra.GenericTraceMetaModel.RelatedTo;
import org.eclipse.capra.core.adapters.Connection;
import org.eclipse.capra.core.adapters.TraceMetaModelAdapter;
+import org.eclipse.capra.core.handlers.ArtifactHandler;
+import org.eclipse.capra.core.helpers.ExtensionPointHelper;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
@@ -48,13 +51,24 @@
}
@Override
- public EObject createTrace(EClass traceType, EObject traceModel, List<EObject> selection) {
+ public EObject createTrace(EClass traceType, EObject traceModel, List<EObject> selection,
+ List<Object> originalSelection) {
GenericTraceModel TM = (GenericTraceModel) traceModel;
EObject trace = GenericTraceMetaModelFactory.eINSTANCE.create(traceType);
RelatedTo RelatedToTrace = (RelatedTo) trace;
RelatedToTrace.getItem().addAll(selection);
+ String name = "";
+ Collection<ArtifactHandler> artifactHandlers = ExtensionPointHelper.getArtifactHandlers();
+ List<ArtifactHandler> availableHandlers = artifactHandlers.stream()
+ .filter(handler -> handler.canHandleSelection(originalSelection)).collect(Collectors.toList());
+ if (availableHandlers.size() > 1) {
+ name = name + " " + availableHandlers.get(0).getDisplayName(originalSelection);
+ } else
+ name = name + " " + originalSelection.toString();
+
+ RelatedToTrace.setName(name);
TM.getTraces().add(RelatedToTrace);
return TM;
}
diff --git a/org.eclipse.capra.ui/src/org/eclipse/capra/ui/handlers/TraceCreationHandler.java b/org.eclipse.capra.ui/src/org/eclipse/capra/ui/handlers/TraceCreationHandler.java
index 10d27a1..a68e088 100644
--- a/org.eclipse.capra.ui/src/org/eclipse/capra/ui/handlers/TraceCreationHandler.java
+++ b/org.eclipse.capra.ui/src/org/eclipse/capra/ui/handlers/TraceCreationHandler.java
@@ -66,7 +66,7 @@
Optional<EClass> chosenType = chooseTraceType.apply(traceTypes, selectionAsEObjects);
if (chosenType.isPresent()) {
- EObject root = traceAdapter.createTrace(chosenType.get(), traceModel, selectionAsEObjects);
+ EObject root = traceAdapter.createTrace(chosenType.get(), traceModel, selectionAsEObjects, selection);
persistenceAdapter.saveTracesAndArtifacts(root, artifactModel);
}
}