From dabe9b9bb03e5f4d582992c9f4a25a8bbdbe908a Mon Sep 17 00:00:00 2001 From: npedot <nicola.pedot@gmail.com> Date: Mon, 16 Nov 2020 15:18:37 +0100 Subject: [PATCH] adds multivalued dependency to schema --- .../domain/ddl/Constraint.kt | 1 + .../domain/ddl/Schema.kt | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Constraint.kt b/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Constraint.kt index 2358dba..bdb8639 100644 --- a/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Constraint.kt +++ b/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Constraint.kt @@ -24,6 +24,7 @@ class Constraint(): Labelled { CANDIDATE_KEY, SURROGATE_KEY, FUNCTIONAL, + MULTIVALUED, DOUBLE_INCLUSION, INCLUSION, PARTITION, 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 ac679a1..03ade1b 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 @@ -132,6 +132,12 @@ class Schema () { return addFunctional(tableName,setExpression) } + fun addMultivalued(commandArgs:String): Schema { + val tableName:String = commandArgs.split(":")[0] + val setExpression: String= commandArgs.split(":")[1] + return addMultivalued(tableName,setExpression) + } + fun addTable(commandArgs:String) : Schema { val table = SchemaCmdParser.parseTable(commandArgs) tables().add(table) @@ -176,6 +182,18 @@ class Schema () { return this } + fun addMultivalued(tableName:String, setExpression: String): Schema { + val constraintsToAdd = Constraint.set(setExpression) + for (constraint in constraintsToAdd) { + constraint.name=tableName+".multivalued" + 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