From 54529b4279f7c2f19be9da88a13ecb794877fb74 Mon Sep 17 00:00:00 2001 From: Chrissi <christopher@hbsc-werner.de> Date: Thu, 17 Oct 2019 12:17:41 +0200 Subject: [PATCH] remove bug because of to late setting the parent relation in the roles in the views --- .../model_sync/generator/acr_model/SClass.scala | 2 +- .../generator/sync/QueryGeneratingVisitor.scala | 1 + .../model_sync/generator/sync/ViewGeneratingVisitor.scala | 8 ++++++-- .../model_sync/generator/sync/ViewMethods.scala | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SClass.scala b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SClass.scala index 6d72049..8344eb7 100644 --- a/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SClass.scala +++ b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SClass.scala @@ -400,6 +400,6 @@ class SClass(_name: String, state.map(_.hashCode()).foldLeft(0)((a, b) => 31 * a + b) } - override def toString: String = s"SC: $getName($sPackage, ${attributes.map(_.getName).mkString(", ")}, $isAbstract, $isInterface)" + override def toString: String = s"SC: $getName($sPackage, ${attributes.map(_.getName).mkString(", ")} ## ${getOnlyDeepAttributes.map(_.getName).mkString(", ")} || $isAbstract, $isInterface)" } diff --git a/src/main/scala/org/rosi_project/model_sync/generator/sync/QueryGeneratingVisitor.scala b/src/main/scala/org/rosi_project/model_sync/generator/sync/QueryGeneratingVisitor.scala index 8b51551..2f7f50f 100644 --- a/src/main/scala/org/rosi_project/model_sync/generator/sync/QueryGeneratingVisitor.scala +++ b/src/main/scala/org/rosi_project/model_sync/generator/sync/QueryGeneratingVisitor.scala @@ -39,6 +39,7 @@ class QueryGeneratingVisitor extends SModelVisitor { viewCompartment.addInternalClass(internalClass) }) + //TODO: can be necessary to add all parents in one loop first //Now fill all natural internal roles with functionality newInternalRoles.foreach(inner => { val cls = inner.sumSource diff --git a/src/main/scala/org/rosi_project/model_sync/generator/sync/ViewGeneratingVisitor.scala b/src/main/scala/org/rosi_project/model_sync/generator/sync/ViewGeneratingVisitor.scala index 3faa3e4..c290a7a 100644 --- a/src/main/scala/org/rosi_project/model_sync/generator/sync/ViewGeneratingVisitor.scala +++ b/src/main/scala/org/rosi_project/model_sync/generator/sync/ViewGeneratingVisitor.scala @@ -32,7 +32,7 @@ class ViewGeneratingVisitor extends SModelVisitor { viewCompartment.addInternalClass(internalClass) }) - //Now fill all natural internal roles with functionality + //Now add the parents to all natural internal roles first newInternalRoles.foreach(inner => { val cls = inner.sumSource //set inheritance to abstract view role @@ -45,7 +45,11 @@ class ViewGeneratingVisitor extends SModelVisitor { if (!existing.isEmpty) { inner.addParent(existing.get) } - }) + }) + }) + + //add now the messages because they can depend on the parents + newInternalRoles.foreach(inner => { //add initialize method if necessary if (!inner.isAbstract && !inner.isInterface) { inner.addMethod(ViewMethods.getIsRelationalMethod(false)) diff --git a/src/main/scala/org/rosi_project/model_sync/generator/sync/ViewMethods.scala b/src/main/scala/org/rosi_project/model_sync/generator/sync/ViewMethods.scala index 7801577..ed616df 100644 --- a/src/main/scala/org/rosi_project/model_sync/generator/sync/ViewMethods.scala +++ b/src/main/scala/org/rosi_project/model_sync/generator/sync/ViewMethods.scala @@ -87,7 +87,7 @@ object ViewMethods { method.implementation = Seq(SMethodStatement(content = s"return new ${jcls.getName}(new ${jcls.base.getName}(" + s"${jcls.base.getAllConstructorParameters.map(HelperFunctions.initialAttributeDoing(_, nat.getDeepStructuralFeatures)).mkString(", ")}), new ${jcls.other.getName}(" + s"${jcls.other.getAllConstructorParameters.map(HelperFunctions.initialAttributeDoing(_, nat.getDeepStructuralFeatures)).mkString(", ")}))", usedTypes = Set(jcls.other, jcls.base))) - } else { + } else { method.implementation = Seq(SMethodStatement(content = s"return new ${nat.sumSource.getName}(" + s"${nat.sumSource.getAllConstructorParameters.map(HelperFunctions.initialAttributeDoing(_, nat.getDeepStructuralFeatures)).mkString(", ")})")) } -- GitLab