diff --git a/src/main/scala/org/rosi_project/model_sync/generator/PackageNames.scala b/src/main/scala/org/rosi_project/model_sync/generator/PackageNames.scala index 531bfc8d66d822c8d4bf0b2a6a0894db80ec6194..52bdcdbf2885539555ead5406a279391e1ab0339 100644 --- a/src/main/scala/org/rosi_project/model_sync/generator/PackageNames.scala +++ b/src/main/scala/org/rosi_project/model_sync/generator/PackageNames.scala @@ -2,7 +2,7 @@ package org.rosi_project.model_sync.generator object PackageNames { - var sourcePkgPrefix: String = "sum." + var sourcePkgPrefix: String = "sync." val viewPkgName: String = "view" val viewPostName: String = "View" diff --git a/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetterAdd.scala b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetterAdd.scala new file mode 100644 index 0000000000000000000000000000000000000000..3e03d5af0cfb3b0c67d1bfe2eb0dc332e60c174d --- /dev/null +++ b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetterAdd.scala @@ -0,0 +1,16 @@ +package org.rosi_project.model_sync.generator.acr_model + +import org.rosi_project.model_sync.generator.support.ExtendedString.stringToExtended +import org.rosi_project.model_sync.generator.acr_model.types.PredefTypes + +/** Add an element to a Set of elements. + * + * @author Rico Bergmann + */ +class SSetterAdd(struc: SStructuralFeature, inner: STypedElement) extends SMethod( + name = s"add${struc.getName.firstLetterToUpperCase}", + result = PredefTypes.Unit, + params = Seq(SMethodParameter(struc.getName.head.toString, inner)), + implementation = Seq(SMethodStatement(content = s"${struc.getName} += ${struc.getName.head}", usedTypes = Set(struc.getTypeElement)))) { + +} \ No newline at end of file diff --git a/src/main/scala/org/rosi_project/model_sync/generator/sync/GetterSetterGeneratingVisitor.scala b/src/main/scala/org/rosi_project/model_sync/generator/sync/GetterSetterGeneratingVisitor.scala index ce5e49ec7a63b18b3f6877fcddd9da1108ab1497..4a8802f05c7cfb3b8afb7189982fa13151347909 100644 --- a/src/main/scala/org/rosi_project/model_sync/generator/sync/GetterSetterGeneratingVisitor.scala +++ b/src/main/scala/org/rosi_project/model_sync/generator/sync/GetterSetterGeneratingVisitor.scala @@ -1,6 +1,7 @@ package org.rosi_project.model_sync.generator.sync import org.rosi_project.model_sync.generator.acr_model._ +import org.rosi_project.model_sync.generator.acr_model.types.GenericSequence /** Service to extend [[SClass SClasses]] with getter and setter methods for all attributes. * @@ -16,9 +17,13 @@ class GetterSetterGeneratingVisitor extends SModelVisitor { sClass.getStructuralFeatures.foreach(attr => { attr.setVisibility(MethodVisibility.protectedVis) val getter = new SGetter(attr) - val setter = new SSetter(attr) sClass.addMethod(getter) + val setter = new SSetter(attr) sClass.addMethod(setter) + if (attr.getTypeElement.isInstanceOf[GenericSequence]) { + val adder = new SSetterAdd(attr, attr.getTypeElement.asInstanceOf[GenericSequence].typeParam) + sClass.addMethod(adder) + } }) } diff --git a/src/main/scala/org/rosi_project/model_sync/generator/sync/SyncEnhancingVisitor.scala b/src/main/scala/org/rosi_project/model_sync/generator/sync/SyncEnhancingVisitor.scala index 4a307462b536df27f8696638ec18d8d7421fdf52..7fe5b4bdc9a397c61d21f4dd09749b36920cef4a 100644 --- a/src/main/scala/org/rosi_project/model_sync/generator/sync/SyncEnhancingVisitor.scala +++ b/src/main/scala/org/rosi_project/model_sync/generator/sync/SyncEnhancingVisitor.scala @@ -1,7 +1,6 @@ package org.rosi_project.model_sync.generator.sync import org.rosi_project.model_sync.generator.acr_model._ -import org.rosi_project.model_sync.sync.ISynchronizationCompartment /** Augments [[SClass SClasses]] with the necessary method calls to make it usable in a * synchronization context. @@ -60,6 +59,8 @@ class SyncEnhancingVisitor() extends SModelVisitor { sMethod.getName match { case SyncEnhancingVisitor.Setter(attrName) => Option(attrName) + case SyncEnhancingVisitor.Adder(attrName) => + Option(attrName) case _ => None } @@ -72,5 +73,6 @@ class SyncEnhancingVisitor() extends SModelVisitor { */ object SyncEnhancingVisitor { private val Setter = """set([A-Z][a-zA-z0-9]*)""".r + private val Adder = """add([A-Z][a-zA-z0-9]*)""".r private val PLAYER_SYNC_INIT = SMethodStatement("buildClass()") } diff --git a/src/main/scala/org/rosi_project/model_sync/generator/test/ApplicationTest.scala b/src/main/scala/org/rosi_project/model_sync/generator/test/ApplicationTest.scala index 549fabc00846ceabf7bb29133893f06e731ac83b..7ad2462687802819d5b0ecb36aa7d3336a9e6eb0 100644 --- a/src/main/scala/org/rosi_project/model_sync/generator/test/ApplicationTest.scala +++ b/src/main/scala/org/rosi_project/model_sync/generator/test/ApplicationTest.scala @@ -10,8 +10,8 @@ object ApplicationTest extends App { //runCombinedTest(Creation.rsum) //runShrinkingModel(Creation.rsum) - runTTC2019(Creation.rolecomb) - //runTTC2019(Creation.rolesync) + //runTTC2019(Creation.rolecomb) + runTTC2019(Creation.rolesync) //runAllTests(Creation.rsum)