use getDisplayName method for the matrix and graphical PlantUML View
Change-Id: I630c892ba12847ebda329cf090203b9a358c06bf
diff --git a/org.eclipse.capra.ui.plantuml/META-INF/MANIFEST.MF b/org.eclipse.capra.ui.plantuml/META-INF/MANIFEST.MF
index cbbde6a..34847e6 100644
--- a/org.eclipse.capra.ui.plantuml/META-INF/MANIFEST.MF
+++ b/org.eclipse.capra.ui.plantuml/META-INF/MANIFEST.MF
@@ -15,7 +15,8 @@
org.eclipse.ui,
org.eclipse.core.resources,
org.eclipse.core.runtime;bundle-version="3.10.0",
- org.eclipse.capra.ui;bundle-version="0.7.0"
+ org.eclipse.capra.ui;bundle-version="0.7.0",
+ org.eclipse.capra.generic.tracemodels
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Export-Package: org.eclipse.capra.ui.plantuml
diff --git a/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/Connections.java b/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/Connections.java
index d36a491..f4efbe1 100644
--- a/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/Connections.java
+++ b/org.eclipse.capra.ui.plantuml/src/org/eclipse/capra/ui/plantuml/Connections.java
@@ -18,8 +18,11 @@
import java.util.Map;
import java.util.Set;
+import org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper;
import org.eclipse.capra.core.adapters.Connection;
+import org.eclipse.capra.core.handlers.ArtifactHandler;
import org.eclipse.capra.core.helpers.EMFHelper;
+import org.eclipse.capra.core.helpers.ExtensionPointHelper;
import org.eclipse.emf.ecore.EObject;
/**
@@ -30,6 +33,7 @@
*/
public class Connections {
+ private static final String CHARACTERS_TO_BE_REMOVED = "[\", \']";
private List<Connection> connections;
private EObject origin;
@@ -54,8 +58,7 @@
id2Label = new LinkedHashMap<>();
allObjects.forEach(o -> {
String id = object2Id.get(o);
- String label = EMFHelper.getIdentifier(o);
- id2Label.put(id, label);
+ id2Label.put(id, getArtifactLabel(o));
});
}
@@ -92,4 +95,42 @@
return arrows;
}
+
+ /**
+ * The method gets the label of the element to be used for display in the
+ * plant UML graph view and matrix view
+ *
+ * @param object
+ * The object for which the label is needed. This can be an EMF
+ * original representation or an artifact wrapper if the original
+ * object was not an EMF element
+ * @return The label to be displayed
+ */
+ public static String getArtifactLabel(EObject object) {
+ String artifactLabel = null;
+ if (object instanceof ArtifactWrapper) {
+ ArtifactWrapper wrapper = (ArtifactWrapper) object;
+ Collection<ArtifactHandler> artifactHandlers = ExtensionPointHelper.getArtifactHandlers();
+
+ for (ArtifactHandler handler : artifactHandlers) {
+ String handlerName = handler.toString().substring(0, handler.toString().indexOf('@'));
+ if (handlerName.equals(wrapper.getArtifactHandler())) {
+ Object originalObject = handler.resolveArtifact(object);
+ if (originalObject != null) {
+ String artifactName = handler.getDisplayName(originalObject);
+ // remove unwanted characters like ", '
+ artifactLabel = artifactName.replaceAll(CHARACTERS_TO_BE_REMOVED, "");
+ } else { // original object cannot be resolved
+ // therefore use the wrapper name
+ String label = EMFHelper.getIdentifier(object);
+ artifactLabel = label.substring(0, label.indexOf(':'));
+ }
+ }
+ }
+ } else {
+ artifactLabel = EMFHelper.getIdentifier(object);
+ }
+ return artifactLabel;
+
+ }
}
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 5e5262d..b22cfd6 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
@@ -4,7 +4,7 @@
import java.util.List
import org.eclipse.capra.core.adapters.Connection
import org.eclipse.capra.core.helpers.ExtensionPointHelper
-import org.eclipse.capra.core.helpers.EMFHelper
+
import org.eclipse.emf.ecore.EObject
class VisualizationHelper {
@@ -15,9 +15,9 @@
salt
{#
«IF firstElements != null»
- .«FOR e : secondElements»|«EMFHelper.getIdentifier(e)»«ENDFOR»
+ .«FOR e : secondElements»|«Connections.getArtifactLabel(e)»«ENDFOR»
«FOR first : firstElements»
- «EMFHelper.getIdentifier(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.