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 6d72049eb945dae34de2160f15900234ea868ce4..8344eb7a214fe5c6e49f0bea675984bc107fb921 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 8b51551fe6bddf6c58fc6f9894c4648d2f5bd3ab..2f7f50fcc006cd92c12896e904db1f4b11545b29 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 3faa3e4272fdca44b2cc00ba74ed27fb4a4ac38a..c290a7add0719d5ce0ddc2e3bda469c1ac06747e 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 7801577c958e91796f56e60cd03980c5d2b9f518..ed616df0b225be8ec05e1b0b879399d424494c9e 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(", ")})")) }