Skip to content
Snippets Groups Projects
Commit 52a69424 authored by Chrissi's avatar Chrissi
Browse files

Add a new add method for sync generation of sets of elements

parent 12f32c2f
No related branches found
No related tags found
No related merge requests found
...@@ -2,7 +2,7 @@ package org.rosi_project.model_sync.generator ...@@ -2,7 +2,7 @@ package org.rosi_project.model_sync.generator
object PackageNames { object PackageNames {
var sourcePkgPrefix: String = "sum." var sourcePkgPrefix: String = "sync."
val viewPkgName: String = "view" val viewPkgName: String = "view"
val viewPostName: String = "View" val viewPostName: String = "View"
......
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
package org.rosi_project.model_sync.generator.sync 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._
import org.rosi_project.model_sync.generator.acr_model.types.GenericSequence
/** Service to extend [[SClass SClasses]] with getter and setter methods for all attributes. /** Service to extend [[SClass SClasses]] with getter and setter methods for all attributes.
* *
...@@ -16,9 +17,13 @@ class GetterSetterGeneratingVisitor extends SModelVisitor { ...@@ -16,9 +17,13 @@ class GetterSetterGeneratingVisitor extends SModelVisitor {
sClass.getStructuralFeatures.foreach(attr => { sClass.getStructuralFeatures.foreach(attr => {
attr.setVisibility(MethodVisibility.protectedVis) attr.setVisibility(MethodVisibility.protectedVis)
val getter = new SGetter(attr) val getter = new SGetter(attr)
val setter = new SSetter(attr)
sClass.addMethod(getter) sClass.addMethod(getter)
val setter = new SSetter(attr)
sClass.addMethod(setter) sClass.addMethod(setter)
if (attr.getTypeElement.isInstanceOf[GenericSequence]) {
val adder = new SSetterAdd(attr, attr.getTypeElement.asInstanceOf[GenericSequence].typeParam)
sClass.addMethod(adder)
}
}) })
} }
......
package org.rosi_project.model_sync.generator.sync 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._
import org.rosi_project.model_sync.sync.ISynchronizationCompartment
/** Augments [[SClass SClasses]] with the necessary method calls to make it usable in a /** Augments [[SClass SClasses]] with the necessary method calls to make it usable in a
* synchronization context. * synchronization context.
...@@ -60,6 +59,8 @@ class SyncEnhancingVisitor() extends SModelVisitor { ...@@ -60,6 +59,8 @@ class SyncEnhancingVisitor() extends SModelVisitor {
sMethod.getName match { sMethod.getName match {
case SyncEnhancingVisitor.Setter(attrName) => case SyncEnhancingVisitor.Setter(attrName) =>
Option(attrName) Option(attrName)
case SyncEnhancingVisitor.Adder(attrName) =>
Option(attrName)
case _ => case _ =>
None None
} }
...@@ -72,5 +73,6 @@ class SyncEnhancingVisitor() extends SModelVisitor { ...@@ -72,5 +73,6 @@ class SyncEnhancingVisitor() extends SModelVisitor {
*/ */
object SyncEnhancingVisitor { object SyncEnhancingVisitor {
private val Setter = """set([A-Z][a-zA-z0-9]*)""".r 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()") private val PLAYER_SYNC_INIT = SMethodStatement("buildClass()")
} }
...@@ -10,8 +10,8 @@ object ApplicationTest extends App { ...@@ -10,8 +10,8 @@ object ApplicationTest extends App {
//runCombinedTest(Creation.rsum) //runCombinedTest(Creation.rsum)
//runShrinkingModel(Creation.rsum) //runShrinkingModel(Creation.rsum)
runTTC2019(Creation.rolecomb) //runTTC2019(Creation.rolecomb)
//runTTC2019(Creation.rolesync) runTTC2019(Creation.rolesync)
//runAllTests(Creation.rsum) //runAllTests(Creation.rsum)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment