From 082c98c06ecf9e92f74cc5c4e4dfc30742236378 Mon Sep 17 00:00:00 2001
From: Chrissi <christopher@hbsc-werner.de>
Date: Wed, 16 Oct 2019 14:28:24 +0200
Subject: [PATCH] remove error with enums in loader classes

---
 .../generator/sync/SumModelReadingVisitor.scala           | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/main/scala/org/rosi_project/model_sync/generator/sync/SumModelReadingVisitor.scala b/src/main/scala/org/rosi_project/model_sync/generator/sync/SumModelReadingVisitor.scala
index 8884148..30b2294 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/sync/SumModelReadingVisitor.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/sync/SumModelReadingVisitor.scala
@@ -20,9 +20,10 @@ class SumModelReadingVisitor(config: GeneratorConfig) extends SModelVisitor {
     val creatorSum = new SClass("Creation" + sModel.getName + "Sum", PackageNames.creationPkgName)
     val creatorSync = new SClass("Creation" + sModel.getName + "Sync", PackageNames.creationPkgName)
     val creatorInterface = new SClass("ICreation" + sModel.getName, PackageNames.creationPkgName, SClassType.normalTrait)
+    val loader = new SClass("Loader" + sModel.getName, PackageNames.creationPkgName)
+    
     creatorSum.addParent(creatorInterface)
     creatorSync.addParent(creatorInterface)
-    val loader = new SClass("Loader" + sModel.getName, PackageNames.creationPkgName)
 
     val loadEcore = new SMethod(
       name = "loadEcore",
@@ -108,13 +109,14 @@ class SumModelReadingVisitor(config: GeneratorConfig) extends SModelVisitor {
         overrides = true)
       creatorSync.addMethod(methodSync)
 
-      var s = c.getAttributeConstructorParameters.map(m => s"""obj.eGet(obj.eClass().getEStructuralFeature("${m.getName}"))${if (m.getTypeName == "String") ".toString()" else s".asInstanceOf[${m.getTypeName}]"} """).mkString(", ")
+      var types = c.getAttributeConstructorParameters.map(m => m.getType)
+      var s = c.getAttributeConstructorParameters.map(m => s"""obj.eGet(obj.eClass().getEStructuralFeature("${m.getName}"))${if (m.getTypeName == "String") ".toString()" else s".asInstanceOf[${m.getTypeName}${if(m.getType.isInstanceOf[SEnum]) ".Value" else ""}]"} """).mkString(", ")
       if (s.isEmpty()) {
         s = "obj"
       } else {
         s = s + ", obj"
       }
-      createObjImpl = createObjImpl :+ SMethodStatement(content = s"""case "${c.getName}" => creator.create${c.getName}(${s})""")
+      createObjImpl = createObjImpl :+ SMethodStatement(content = s"""case "${c.getName}" => creator.create${c.getName}(${s})""", types.toSet)
     })
 
     sModel.getRelationalCompartments.foreach(r => {
-- 
GitLab