From 9dfa627a01498fbb492a25d0e7f5016f792d2a5c Mon Sep 17 00:00:00 2001
From: Stefan Herrnleben <s.herrnleben@syslex.de>
Date: Thu, 27 Jul 2017 15:09:07 +0200
Subject: [PATCH] let performance specification inherit from identifier

---
 tools.descartes.dni.core/META-INF/MANIFEST.MF |   1 -
 tools.descartes.dni.core/model/DNIMM3.xcore   |   2 +-
 .../descartes/dni/dnimm3/DNIPackage.java      | 112 +++++++++++++++++-
 .../dni/dnimm3/PerformanceSpecification.java  |   4 +-
 .../dni/dnimm3/impl/DNIPackageImpl.java       |   1 +
 .../dni/dnimm3/impl/EndPerformanceImpl.java   |   4 +-
 .../impl/IntermediatePerformanceImpl.java     |   4 +-
 .../dni/dnimm3/impl/PerformanceLinkImpl.java  |   4 +-
 .../impl/PerformanceNetworkInterfaceImpl.java |   4 +-
 .../dnimm3/impl/PerformanceSdnNodeImpl.java   |   4 +-
 .../provider/EndPerformanceItemProvider.java  |  33 +-----
 .../IntermediatePerformanceItemProvider.java  |  33 +-----
 .../provider/PerformanceLinkItemProvider.java |  33 +-----
 ...rformanceNetworkInterfaceItemProvider.java |  34 +-----
 .../PerformanceSdnNodeItemProvider.java       |  33 +-----
 .../descartes/dni/dnimm3/util/DNISwitch.java  |   6 +
 16 files changed, 149 insertions(+), 163 deletions(-)

diff --git a/tools.descartes.dni.core/META-INF/MANIFEST.MF b/tools.descartes.dni.core/META-INF/MANIFEST.MF
index c55d481f..d104b205 100644
--- a/tools.descartes.dni.core/META-INF/MANIFEST.MF
+++ b/tools.descartes.dni.core/META-INF/MANIFEST.MF
@@ -10,7 +10,6 @@ Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Export-Package: tools.descartes.dni.dnimm3,
  tools.descartes.dni.dnimm3.impl,
- tools.descartes.dni.dnimm3.presentation,
  tools.descartes.dni.dnimm3.provider,
  tools.descartes.dni.dnimm3.util
 Require-Bundle: org.eclipse.emf.ecore;visibility:=reexport,
diff --git a/tools.descartes.dni.core/model/DNIMM3.xcore b/tools.descartes.dni.core/model/DNIMM3.xcore
index 39440a71..81dcf00d 100644
--- a/tools.descartes.dni.core/model/DNIMM3.xcore
+++ b/tools.descartes.dni.core/model/DNIMM3.xcore
@@ -272,7 +272,7 @@ class WaitAction extends AbstractAction {
 	contains Dependency[1] waitTime
 }
 
-interface PerformanceSpecification {
+interface PerformanceSpecification extends Identifier {
 }
 
 class PerformanceLink extends PerformanceSpecification {
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/DNIPackage.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/DNIPackage.java
index b75ec467..59f3a2c9 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/DNIPackage.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/DNIPackage.java
@@ -2583,6 +2583,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int PERFORMANCE_SPECIFICATION = 39;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERFORMANCE_SPECIFICATION__UID = IDENTIFIER__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERFORMANCE_SPECIFICATION__UID_GENERATED = IDENTIFIER__UID_GENERATED;
+
 	/**
 	 * The number of structural features of the '<em>Performance Specification</em>' class.
 	 * <!-- begin-user-doc -->
@@ -2590,7 +2608,7 @@ public interface DNIPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int PERFORMANCE_SPECIFICATION_FEATURE_COUNT = 0;
+	int PERFORMANCE_SPECIFICATION_FEATURE_COUNT = IDENTIFIER_FEATURE_COUNT + 0;
 
 	/**
 	 * The number of operations of the '<em>Performance Specification</em>' class.
@@ -2599,7 +2617,7 @@ public interface DNIPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int PERFORMANCE_SPECIFICATION_OPERATION_COUNT = 0;
+	int PERFORMANCE_SPECIFICATION_OPERATION_COUNT = IDENTIFIER_OPERATION_COUNT + 0;
 
 	/**
 	 * The meta object id for the '{@link tools.descartes.dni.dnimm3.impl.PerformanceLinkImpl <em>Performance Link</em>}' class.
@@ -2611,6 +2629,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int PERFORMANCE_LINK = 40;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERFORMANCE_LINK__UID = PERFORMANCE_SPECIFICATION__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERFORMANCE_LINK__UID_GENERATED = PERFORMANCE_SPECIFICATION__UID_GENERATED;
+
 	/**
 	 * The feature id for the '<em><b>Propagation Delay</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
@@ -2666,6 +2702,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int PERFORMANCE_NETWORK_INTERFACE = 41;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERFORMANCE_NETWORK_INTERFACE__UID = PERFORMANCE_SPECIFICATION__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERFORMANCE_NETWORK_INTERFACE__UID_GENERATED = PERFORMANCE_SPECIFICATION__UID_GENERATED;
+
 	/**
 	 * The feature id for the '<em><b>Is Up</b></em>' attribute.
 	 * <!-- begin-user-doc -->
@@ -3141,6 +3195,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int INTERMEDIATE_PERFORMANCE = 48;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERMEDIATE_PERFORMANCE__UID = PERFORMANCE_SPECIFICATION__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERMEDIATE_PERFORMANCE__UID_GENERATED = PERFORMANCE_SPECIFICATION__UID_GENERATED;
+
 	/**
 	 * The feature id for the '<em><b>Forwarding Latency</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
@@ -3205,6 +3277,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int END_PERFORMANCE = 49;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int END_PERFORMANCE__UID = PERFORMANCE_SPECIFICATION__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int END_PERFORMANCE__UID_GENERATED = PERFORMANCE_SPECIFICATION__UID_GENERATED;
+
 	/**
 	 * The feature id for the '<em><b>Software Layers Delay</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
@@ -3251,6 +3341,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int PERFORMANCE_SDN_NODE = 50;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERFORMANCE_SDN_NODE__UID = PERFORMANCE_SPECIFICATION__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERFORMANCE_SDN_NODE__UID_GENERATED = PERFORMANCE_SPECIFICATION__UID_GENERATED;
+
 	/**
 	 * The feature id for the '<em><b>Software Switching Performance</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/PerformanceSpecification.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/PerformanceSpecification.java
index 0ef1f178..2068da68 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/PerformanceSpecification.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/PerformanceSpecification.java
@@ -2,8 +2,6 @@
  */
 package tools.descartes.dni.dnimm3;
 
-import org.eclipse.emf.ecore.EObject;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Performance Specification</b></em>'.
@@ -14,5 +12,5 @@ import org.eclipse.emf.ecore.EObject;
  * @model interface="true" abstract="true"
  * @generated
  */
-public interface PerformanceSpecification extends EObject {
+public interface PerformanceSpecification extends Identifier {
 } // PerformanceSpecification
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/DNIPackageImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/DNIPackageImpl.java
index 50aa37a8..9fe7ab2c 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/DNIPackageImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/DNIPackageImpl.java
@@ -3055,6 +3055,7 @@ public class DNIPackageImpl extends EPackageImpl implements DNIPackage {
 		stopActionEClass.getESuperTypes().add(this.getAbstractAction());
 		transmitActionEClass.getESuperTypes().add(this.getAbstractAction());
 		waitActionEClass.getESuperTypes().add(this.getAbstractAction());
+		performanceSpecificationEClass.getESuperTypes().add(this.getIdentifier());
 		performanceLinkEClass.getESuperTypes().add(this.getPerformanceSpecification());
 		performanceNetworkInterfaceEClass.getESuperTypes().add(this.getPerformanceSpecification());
 		sdnControllerEClass.getESuperTypes().add(this.getCommunicatingApplication());
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/EndPerformanceImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/EndPerformanceImpl.java
index 8ce38eff..089c65f5 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/EndPerformanceImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/EndPerformanceImpl.java
@@ -9,8 +9,6 @@ import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
 import tools.descartes.dni.dnimm3.DNIPackage;
 import tools.descartes.dni.dnimm3.Dependency;
 import tools.descartes.dni.dnimm3.EndPerformance;
@@ -30,7 +28,7 @@ import tools.descartes.dni.dnimm3.EndPerformanceType;
  *
  * @generated
  */
-public class EndPerformanceImpl extends MinimalEObjectImpl.Container implements EndPerformance {
+public class EndPerformanceImpl extends IdentifierImpl implements EndPerformance {
 	/**
 	 * The cached value of the '{@link #getSoftwareLayersDelay() <em>Software Layers Delay</em>}' containment reference.
 	 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/IntermediatePerformanceImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/IntermediatePerformanceImpl.java
index 098831fb..0b60eadf 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/IntermediatePerformanceImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/IntermediatePerformanceImpl.java
@@ -9,8 +9,6 @@ import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
 import tools.descartes.dni.dnimm3.DNIPackage;
 import tools.descartes.dni.dnimm3.Dependency;
 import tools.descartes.dni.dnimm3.IntermediatePerformance;
@@ -32,7 +30,7 @@ import tools.descartes.dni.dnimm3.IntermediatePerformanceType;
  *
  * @generated
  */
-public class IntermediatePerformanceImpl extends MinimalEObjectImpl.Container implements IntermediatePerformance {
+public class IntermediatePerformanceImpl extends IdentifierImpl implements IntermediatePerformance {
 	/**
 	 * The cached value of the '{@link #getForwardingLatency() <em>Forwarding Latency</em>}' containment reference.
 	 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceLinkImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceLinkImpl.java
index a64fd027..9033b6a5 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceLinkImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceLinkImpl.java
@@ -9,8 +9,6 @@ import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
 import tools.descartes.dni.dnimm3.DNIPackage;
 import tools.descartes.dni.dnimm3.Dependency;
 import tools.descartes.dni.dnimm3.LinkPerformanceType;
@@ -31,7 +29,7 @@ import tools.descartes.dni.dnimm3.PerformanceLink;
  *
  * @generated
  */
-public class PerformanceLinkImpl extends MinimalEObjectImpl.Container implements PerformanceLink {
+public class PerformanceLinkImpl extends IdentifierImpl implements PerformanceLink {
 	/**
 	 * The cached value of the '{@link #getPropagationDelay() <em>Propagation Delay</em>}' containment reference.
 	 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceNetworkInterfaceImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceNetworkInterfaceImpl.java
index 305e2752..b71cb21a 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceNetworkInterfaceImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceNetworkInterfaceImpl.java
@@ -9,8 +9,6 @@ import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
 import tools.descartes.dni.dnimm3.DNIPackage;
 import tools.descartes.dni.dnimm3.Dependency;
 import tools.descartes.dni.dnimm3.NetworkInterfacePerformanceType;
@@ -34,7 +32,7 @@ import tools.descartes.dni.dnimm3.Variable;
  *
  * @generated
  */
-public class PerformanceNetworkInterfaceImpl extends MinimalEObjectImpl.Container implements PerformanceNetworkInterface {
+public class PerformanceNetworkInterfaceImpl extends IdentifierImpl implements PerformanceNetworkInterface {
 	/**
 	 * The default value of the '{@link #isIsUp() <em>Is Up</em>}' attribute.
 	 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceSdnNodeImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceSdnNodeImpl.java
index f9e0a612..fb4cef48 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceSdnNodeImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceSdnNodeImpl.java
@@ -9,8 +9,6 @@ import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
 import tools.descartes.dni.dnimm3.DNIPackage;
 import tools.descartes.dni.dnimm3.IntermediatePerformance;
 import tools.descartes.dni.dnimm3.PerformanceSdnNode;
@@ -31,7 +29,7 @@ import tools.descartes.dni.dnimm3.SdnNodePerformanceType;
  *
  * @generated
  */
-public class PerformanceSdnNodeImpl extends MinimalEObjectImpl.Container implements PerformanceSdnNode {
+public class PerformanceSdnNodeImpl extends IdentifierImpl implements PerformanceSdnNode {
 	/**
 	 * The cached value of the '{@link #getSoftwareSwitchingPerformance() <em>Software Switching Performance</em>}' containment reference.
 	 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/EndPerformanceItemProvider.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/EndPerformanceItemProvider.java
index c699b303..e74279f5 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/EndPerformanceItemProvider.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/EndPerformanceItemProvider.java
@@ -8,19 +8,10 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.common.util.ResourceLocator;
-
 import org.eclipse.emf.ecore.EStructuralFeature;
 
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
 import tools.descartes.dni.dnimm3.DNIFactory;
@@ -34,13 +25,7 @@ import tools.descartes.dni.dnimm3.EndPerformance;
  * @generated
  */
 public class EndPerformanceItemProvider 
-	extends ItemProviderAdapter
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends IdentifierItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
@@ -138,7 +123,10 @@ public class EndPerformanceItemProvider
 	 */
 	@Override
 	public String getText(Object object) {
-		return getString("_UI_EndPerformance_type");
+		String label = ((EndPerformance)object).getUid();
+		return label == null || label.length() == 0 ?
+			getString("_UI_EndPerformance_type") :
+			getString("_UI_EndPerformance_type") + " " + label;
 	}
 	
 
@@ -198,15 +186,4 @@ public class EndPerformanceItemProvider
 				 DNIFactory.eINSTANCE.createExponentialFunction()));
 	}
 
-	/**
-	 * Return the resource locator for this item provider's resources.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public ResourceLocator getResourceLocator() {
-		return Dnimm3EditPlugin.INSTANCE;
-	}
-
 }
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/IntermediatePerformanceItemProvider.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/IntermediatePerformanceItemProvider.java
index eca30900..30b03ae6 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/IntermediatePerformanceItemProvider.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/IntermediatePerformanceItemProvider.java
@@ -8,19 +8,10 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.common.util.ResourceLocator;
-
 import org.eclipse.emf.ecore.EStructuralFeature;
 
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
 import tools.descartes.dni.dnimm3.DNIFactory;
@@ -34,13 +25,7 @@ import tools.descartes.dni.dnimm3.IntermediatePerformance;
  * @generated
  */
 public class IntermediatePerformanceItemProvider 
-	extends ItemProviderAdapter
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends IdentifierItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
@@ -140,7 +125,10 @@ public class IntermediatePerformanceItemProvider
 	 */
 	@Override
 	public String getText(Object object) {
-		return getString("_UI_IntermediatePerformance_type");
+		String label = ((IntermediatePerformance)object).getUid();
+		return label == null || label.length() == 0 ?
+			getString("_UI_IntermediatePerformance_type") :
+			getString("_UI_IntermediatePerformance_type") + " " + label;
 	}
 	
 
@@ -276,15 +264,4 @@ public class IntermediatePerformanceItemProvider
 		return super.getCreateChildText(owner, feature, child, selection);
 	}
 
-	/**
-	 * Return the resource locator for this item provider's resources.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public ResourceLocator getResourceLocator() {
-		return Dnimm3EditPlugin.INSTANCE;
-	}
-
 }
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceLinkItemProvider.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceLinkItemProvider.java
index d6eb7ad1..6d8cec45 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceLinkItemProvider.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceLinkItemProvider.java
@@ -8,19 +8,10 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.common.util.ResourceLocator;
-
 import org.eclipse.emf.ecore.EStructuralFeature;
 
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
 import tools.descartes.dni.dnimm3.DNIFactory;
@@ -34,13 +25,7 @@ import tools.descartes.dni.dnimm3.PerformanceLink;
  * @generated
  */
 public class PerformanceLinkItemProvider 
-	extends ItemProviderAdapter
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends IdentifierItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
@@ -139,7 +124,10 @@ public class PerformanceLinkItemProvider
 	 */
 	@Override
 	public String getText(Object object) {
-		return getString("_UI_PerformanceLink_type");
+		String label = ((PerformanceLink)object).getUid();
+		return label == null || label.length() == 0 ?
+			getString("_UI_PerformanceLink_type") :
+			getString("_UI_PerformanceLink_type") + " " + label;
 	}
 	
 
@@ -248,15 +236,4 @@ public class PerformanceLinkItemProvider
 		return super.getCreateChildText(owner, feature, child, selection);
 	}
 
-	/**
-	 * Return the resource locator for this item provider's resources.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public ResourceLocator getResourceLocator() {
-		return Dnimm3EditPlugin.INSTANCE;
-	}
-
 }
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceNetworkInterfaceItemProvider.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceNetworkInterfaceItemProvider.java
index 4006a1de..41f7c674 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceNetworkInterfaceItemProvider.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceNetworkInterfaceItemProvider.java
@@ -8,20 +8,11 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.common.util.ResourceLocator;
-
 import org.eclipse.emf.ecore.EStructuralFeature;
 
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
 import tools.descartes.dni.dnimm3.DNIFactory;
@@ -35,13 +26,7 @@ import tools.descartes.dni.dnimm3.PerformanceNetworkInterface;
  * @generated
  */
 public class PerformanceNetworkInterfaceItemProvider 
-	extends ItemProviderAdapter
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends IdentifierItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
@@ -186,8 +171,10 @@ public class PerformanceNetworkInterfaceItemProvider
 	 */
 	@Override
 	public String getText(Object object) {
-		PerformanceNetworkInterface performanceNetworkInterface = (PerformanceNetworkInterface)object;
-		return getString("_UI_PerformanceNetworkInterface_type") + " " + performanceNetworkInterface.isIsUp();
+		String label = ((PerformanceNetworkInterface)object).getUid();
+		return label == null || label.length() == 0 ?
+			getString("_UI_PerformanceNetworkInterface_type") :
+			getString("_UI_PerformanceNetworkInterface_type") + " " + label;
 	}
 	
 
@@ -290,15 +277,4 @@ public class PerformanceNetworkInterfaceItemProvider
 		return super.getCreateChildText(owner, feature, child, selection);
 	}
 
-	/**
-	 * Return the resource locator for this item provider's resources.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public ResourceLocator getResourceLocator() {
-		return Dnimm3EditPlugin.INSTANCE;
-	}
-
 }
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceSdnNodeItemProvider.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceSdnNodeItemProvider.java
index 2bff971b..b82f1a61 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceSdnNodeItemProvider.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceSdnNodeItemProvider.java
@@ -8,19 +8,10 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.common.util.ResourceLocator;
-
 import org.eclipse.emf.ecore.EStructuralFeature;
 
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
 import tools.descartes.dni.dnimm3.DNIFactory;
@@ -34,13 +25,7 @@ import tools.descartes.dni.dnimm3.PerformanceSdnNode;
  * @generated
  */
 public class PerformanceSdnNodeItemProvider 
-	extends ItemProviderAdapter
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends IdentifierItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
@@ -139,7 +124,10 @@ public class PerformanceSdnNodeItemProvider
 	 */
 	@Override
 	public String getText(Object object) {
-		return getString("_UI_PerformanceSdnNode_type");
+		String label = ((PerformanceSdnNode)object).getUid();
+		return label == null || label.length() == 0 ?
+			getString("_UI_PerformanceSdnNode_type") :
+			getString("_UI_PerformanceSdnNode_type") + " " + label;
 	}
 	
 
@@ -208,15 +196,4 @@ public class PerformanceSdnNodeItemProvider
 		return super.getCreateChildText(owner, feature, child, selection);
 	}
 
-	/**
-	 * Return the resource locator for this item provider's resources.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public ResourceLocator getResourceLocator() {
-		return Dnimm3EditPlugin.INSTANCE;
-	}
-
 }
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/util/DNISwitch.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/util/DNISwitch.java
index 72672c60..9657509f 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/util/DNISwitch.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/util/DNISwitch.java
@@ -358,6 +358,7 @@ public class DNISwitch<T> extends Switch<T> {
 			case DNIPackage.PERFORMANCE_SPECIFICATION: {
 				PerformanceSpecification performanceSpecification = (PerformanceSpecification)theEObject;
 				T result = casePerformanceSpecification(performanceSpecification);
+				if (result == null) result = caseIdentifier(performanceSpecification);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -365,6 +366,7 @@ public class DNISwitch<T> extends Switch<T> {
 				PerformanceLink performanceLink = (PerformanceLink)theEObject;
 				T result = casePerformanceLink(performanceLink);
 				if (result == null) result = casePerformanceSpecification(performanceLink);
+				if (result == null) result = caseIdentifier(performanceLink);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -372,6 +374,7 @@ public class DNISwitch<T> extends Switch<T> {
 				PerformanceNetworkInterface performanceNetworkInterface = (PerformanceNetworkInterface)theEObject;
 				T result = casePerformanceNetworkInterface(performanceNetworkInterface);
 				if (result == null) result = casePerformanceSpecification(performanceNetworkInterface);
+				if (result == null) result = caseIdentifier(performanceNetworkInterface);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -425,6 +428,7 @@ public class DNISwitch<T> extends Switch<T> {
 				IntermediatePerformance intermediatePerformance = (IntermediatePerformance)theEObject;
 				T result = caseIntermediatePerformance(intermediatePerformance);
 				if (result == null) result = casePerformanceSpecification(intermediatePerformance);
+				if (result == null) result = caseIdentifier(intermediatePerformance);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -432,6 +436,7 @@ public class DNISwitch<T> extends Switch<T> {
 				EndPerformance endPerformance = (EndPerformance)theEObject;
 				T result = caseEndPerformance(endPerformance);
 				if (result == null) result = casePerformanceSpecification(endPerformance);
+				if (result == null) result = caseIdentifier(endPerformance);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -439,6 +444,7 @@ public class DNISwitch<T> extends Switch<T> {
 				PerformanceSdnNode performanceSdnNode = (PerformanceSdnNode)theEObject;
 				T result = casePerformanceSdnNode(performanceSdnNode);
 				if (result == null) result = casePerformanceSpecification(performanceSdnNode);
+				if (result == null) result = caseIdentifier(performanceSdnNode);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-- 
GitLab