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 88841489d71994758398b2aa5bcb632e51fd6bdb..30b22945d4735762505011b3159c7da2f643dd92 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 => {