From 2525b9b415c4a1df4206cdc9dd889f0e9d290896 Mon Sep 17 00:00:00 2001
From: Chrissi <christopher@hbsc-werner.de>
Date: Tue, 9 Jul 2019 15:46:36 +0200
Subject: [PATCH] =?UTF-8?q?erweitern=20der=20Setter=20Methoden=20um=20die?=
 =?UTF-8?q?=20eingehenden=20Elemente=20zu=20pr=C3=BCfen?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../rosi_project/model_sync/generator/acr_model/SSetter.scala | 3 ++-
 .../model_sync/generator/acr_model/SSetterAdd.scala           | 4 +++-
 .../model_sync/generator/acr_model/SSetterRemove.scala        | 4 +++-
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetter.scala b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetter.scala
index 33d2055..55939bb 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetter.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetter.scala
@@ -11,6 +11,7 @@ class SSetter(struc: SStructuralFeature) extends SMethod(
   name = s"set${struc.getName.firstLetterToUpperCase}",
   result = PredefTypes.Unit,
   params = Seq(SMethodParameter(struc.getName.head.toString, struc.getTypeElement)),
-  implementation = Seq(SMethodStatement(content = s"${struc.getName} = ${struc.getName.head}", usedTypes = Set(struc.getTypeElement)))) {
+  implementation = Seq(SMethodStatement(content = s"require(${struc.getName.head} != null)"),
+      SMethodStatement(content = s"${struc.getName} = ${struc.getName.head}", usedTypes = Set(struc.getTypeElement)))) {
 
 }
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
index 061a85c..f5b69db 100644
--- 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
@@ -11,6 +11,8 @@ class SSetterAdd(struc: SStructuralFeature, inner: STypedElement) extends SMetho
   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)))) {
+  implementation = Seq(SMethodStatement(content = s"require(${struc.getName.head} != null)"),
+      SMethodStatement(content = s"require(!${struc.getName}.contains(${struc.getName.head}))"),
+      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/acr_model/SSetterRemove.scala b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetterRemove.scala
index 7a5c3d5..646fc79 100644
--- a/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetterRemove.scala
+++ b/src/main/scala/org/rosi_project/model_sync/generator/acr_model/SSetterRemove.scala
@@ -11,6 +11,8 @@ class SSetterRemove(struc: SStructuralFeature, inner: STypedElement) extends SMe
   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)))) {
+  implementation = Seq(SMethodStatement(content = s"require(${struc.getName.head} != null)"),
+      SMethodStatement(content = s"require(${struc.getName}.contains(${struc.getName.head}))"),
+      SMethodStatement(content = s"${struc.getName} -= ${struc.getName.head}", usedTypes = Set(struc.getTypeElement)))) {
 
 }
\ No newline at end of file
-- 
GitLab