From c5bbb462fad048bb862123a75994ea7cae626cea Mon Sep 17 00:00:00 2001
From: npedot <nicola.pedot@gmail.com>
Date: Mon, 16 Nov 2020 18:07:41 +0100
Subject: [PATCH] exposes schema addInclusion and addDoubeInclusion constraint

---
 .../domain/ddl/Schema.kt                      | 36 +++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Schema.kt b/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Schema.kt
index 03ade1b..7c3b8cd 100644
--- a/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Schema.kt
+++ b/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Schema.kt
@@ -138,6 +138,18 @@ class Schema () {
         return addMultivalued(tableName,setExpression)
     }
 
+    fun addInclusion(commandArgs:String): Schema {
+        val tableName:String = commandArgs.split(":")[0]
+        val setExpression: String= commandArgs.split(":")[1]
+        return addInclusion(tableName,setExpression)
+    }
+
+    fun addDoubleInclusion(commandArgs:String): Schema {
+        val tableName:String = commandArgs.split(":")[0]
+        val setExpression: String= commandArgs.split(":")[1]
+        return addDoubleInclusion(tableName,setExpression)
+    }
+
     fun addTable(commandArgs:String) : Schema {
         val table = SchemaCmdParser.parseTable(commandArgs)
         tables().add(table)
@@ -194,6 +206,30 @@ class Schema () {
         return this
     }
 
+    fun addInclusion(tableName:String, setExpression: String): Schema {
+        val constraintsToAdd = Constraint.set(setExpression)
+        for (constraint in constraintsToAdd) {
+            constraint.name=tableName+".included"
+            constraint.type=Constraint.TYPE.MULTIVALUED.name
+            constraint.source.table=tableName
+            constraint.target.table=tableName
+        }
+        constraints().addAll(constraintsToAdd)
+        return this
+    }
+
+    fun addDoubleInclusion(tableName:String, setExpression: String): Schema {
+        val constraintsToAdd = Constraint.set(setExpression)
+        for (constraint in constraintsToAdd) {
+            constraint.name=tableName+".doubleinc"
+            constraint.type=Constraint.TYPE.MULTIVALUED.name
+            constraint.source.table=tableName
+            constraint.target.table=tableName
+        }
+        constraints().addAll(constraintsToAdd)
+        return this
+    }
+
     fun addKey(commandArgs:String):Schema {
         val tableName:String = commandArgs.split(":")[0]
         val attributeNames = commandArgs.split(":")[1]
-- 
GitLab