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.