Skip to content
Snippets Groups Projects
Commit 659e5013 authored by Chrissi's avatar Chrissi
Browse files

add new remove element from set in sync process

parent 52a69424
No related branches found
No related tags found
No related merge requests found
...@@ -5,7 +5,7 @@ import org.rosi_project.model_sync.generator.acr_model.types.PredefTypes ...@@ -5,7 +5,7 @@ import org.rosi_project.model_sync.generator.acr_model.types.PredefTypes
/** Add an element to a Set of elements. /** Add an element to a Set of elements.
* *
* @author Rico Bergmann * @author Christopher Werner
*/ */
class SSetterAdd(struc: SStructuralFeature, inner: STypedElement) extends SMethod( class SSetterAdd(struc: SStructuralFeature, inner: STypedElement) extends SMethod(
name = s"add${struc.getName.firstLetterToUpperCase}", name = s"add${struc.getName.firstLetterToUpperCase}",
......
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
/** Remove an element from a Set of elements.
*
* @author Christopher Werner
*/
class SSetterRemove(struc: SStructuralFeature, inner: STypedElement) extends SMethod(
name = s"remove${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
...@@ -23,6 +23,8 @@ class GetterSetterGeneratingVisitor extends SModelVisitor { ...@@ -23,6 +23,8 @@ class GetterSetterGeneratingVisitor extends SModelVisitor {
if (attr.getTypeElement.isInstanceOf[GenericSequence]) { if (attr.getTypeElement.isInstanceOf[GenericSequence]) {
val adder = new SSetterAdd(attr, attr.getTypeElement.asInstanceOf[GenericSequence].typeParam) val adder = new SSetterAdd(attr, attr.getTypeElement.asInstanceOf[GenericSequence].typeParam)
sClass.addMethod(adder) sClass.addMethod(adder)
val remover = new SSetterRemove(attr, attr.getTypeElement.asInstanceOf[GenericSequence].typeParam)
sClass.addMethod(remover)
} }
}) })
......
...@@ -2,7 +2,8 @@ package org.rosi_project.model_sync.generator.sync ...@@ -2,7 +2,8 @@ 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._
/** 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.
* *
* The following modifications are performed: * The following modifications are performed:
...@@ -42,7 +43,8 @@ class SyncEnhancingVisitor() extends SModelVisitor { ...@@ -42,7 +43,8 @@ class SyncEnhancingVisitor() extends SModelVisitor {
// pass // pass
} }
/** Tries to get the attribute's name from a setter method. /**
* Tries to get the attribute's name from a setter method.
* *
* A ''valid'' setter will have the following signature: `setXyz(x: T): Unit` (the parameter's * A ''valid'' setter will have the following signature: `setXyz(x: T): Unit` (the parameter's
* name does not matter). * name does not matter).
...@@ -61,6 +63,8 @@ class SyncEnhancingVisitor() extends SModelVisitor { ...@@ -61,6 +63,8 @@ class SyncEnhancingVisitor() extends SModelVisitor {
Option(attrName) Option(attrName)
case SyncEnhancingVisitor.Adder(attrName) => case SyncEnhancingVisitor.Adder(attrName) =>
Option(attrName) Option(attrName)
case SyncEnhancingVisitor.Remover(attrName) =>
Option(attrName)
case _ => case _ =>
None None
} }
...@@ -69,10 +73,12 @@ class SyncEnhancingVisitor() extends SModelVisitor { ...@@ -69,10 +73,12 @@ class SyncEnhancingVisitor() extends SModelVisitor {
} }
/** The companion contains some static values. /**
* The companion contains some static values.
*/ */
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 Adder = """add([A-Z][a-zA-z0-9]*)""".r
private val Remover = """remove([A-Z][a-zA-z0-9]*)""".r
private val PLAYER_SYNC_INIT = SMethodStatement("buildClass()") private val PLAYER_SYNC_INIT = SMethodStatement("buildClass()")
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment