From d86bf9a053e23e90b8f33b17bd59b2961c38ddf6 Mon Sep 17 00:00:00 2001
From: Simon Barner <barner@fortiss.org>
Date: Fri, 26 Jan 2018 15:45:17 +0000
Subject: [PATCH] - generateMissingIDs() bug fix: generate missing ID also for
 given 'existingModel', not only for its offspring. refs 3067

---
 .../org/fortiss/tooling/kernel/utils/.ratings   |  2 +-
 .../tooling/kernel/utils/UniqueIDUtils.java     | 17 ++++++++++++-----
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/.ratings b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/.ratings
index b8a101a5b..7e07b0c16 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/.ratings
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/.ratings
@@ -12,4 +12,4 @@ MigrationUtils.java e54370b19148ff656d7563e8188baccd947c24d5 GREEN
 PrototypesUtils.java 538b5edbab06e95bc32e81309482e36a4bc64d1e GREEN
 ResourceUtils.java 8ab06ad3b72fdb2b1925e2ccbedcfea35e36cf24 GREEN
 TransformationUtils.java f159b17ac1ce2ce0d94c1a873d74e052ac2dc74b GREEN
-UniqueIDUtils.java f8b053bf64835d8a441192f7681fda0655a98469 YELLOW
+UniqueIDUtils.java 758dd39d869297fa074926ca9298ac82c012872e YELLOW
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/UniqueIDUtils.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/UniqueIDUtils.java
index e96bd49aa..99cf0934e 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/UniqueIDUtils.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/utils/UniqueIDUtils.java
@@ -34,6 +34,15 @@ import org.fortiss.tooling.kernel.service.IPersistencyService;
  * @author hoelzl
  */
 public class UniqueIDUtils {
+	/** Helper to implement {@link #generateMissingIDs(EObject, int)}. */
+	private static int setMissingId(EObject object, int currentMaxId) {
+		if(object instanceof IIdLabeled) {
+			if(((IIdLabeled)object).getId() <= 0) {
+				((IIdLabeled)object).setId((++currentMaxId));
+			}
+		}
+		return currentMaxId;
+	}
 
 	/**
 	 * Generates missing IDs of the given model starting from the given current
@@ -47,13 +56,11 @@ public class UniqueIDUtils {
 	 * @return The maximum ID after the generation of missing IDs.
 	 */
 	public static int generateMissingIDs(EObject existingModel, int currentMaxId) {
+		currentMaxId = setMissingId(existingModel, currentMaxId);
+
 		for(Iterator<EObject> i = existingModel.eAllContents(); i.hasNext();) {
 			EObject eo = i.next();
-			if(eo instanceof IIdLabeled) {
-				if(((IIdLabeled)eo).getId() <= 0) {
-					((IIdLabeled)eo).setId((++currentMaxId));
-				}
-			}
+			currentMaxId = setMissingId(eo, currentMaxId);
 		}
 		return currentMaxId;
 	}
-- 
GitLab