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 2358dba0672c0a5cb276b7974ed84b722257983a..bdb8639d12442d5184d6446c85d6d7cb2017db3e 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 ac679a190f8a59ea1e7c263675f7ce1a2b8dd446..03ade1bda12aa05111322d5aff675b1fa50f7033 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]