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 dd34fa31d1242cf52670cb18fee0c22bc0f3eefb..bd82e5d4655c7c2678286f2cd87c5d8e5ab8241c 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 @@ -62,6 +62,10 @@ class Schema () { return constraints().filter { c -> c.type.equals(Constraint.TYPE.FOREIGN_KEY.name) } } + fun doubleIncs(): List<Constraint> { + return constraints().filter { c -> c.type.equals(Constraint.TYPE.DOUBLE_INCLUSION.name) } + } + fun functionalLHS(tableName: String): Set<Column> { var resultCols = mutableSetOf<Column>() val first = constraints().filter { c -> @@ -161,6 +165,26 @@ class Schema () { return this } + fun addDoubleInc(commandArgs:String):Schema { + val source:String = commandArgs.split("-->")[0] + val target:String = commandArgs.split("-->")[1] + + val sourceTableName:String = source.split(":")[0] + val sourceAttributeNames = source.split(":")[1] + + val targetTableName:String = target.split(":")[0] + val targetAttributeNames = target.split(":")[1] + + val constraint = doubleInclusion {} + constraint.name = "${sourceTableName}_${targetTableName}.doubleInc" + constraint.source.table=sourceTableName + constraint.target.table=targetTableName + constraint.source.columns.addAll(Column.set(sourceAttributeNames)) + constraint.target.columns.addAll(Column.set(targetAttributeNames)) + constraints().add(constraint) + return this + } + companion object { private fun <T> reducedPowerSet(originalSet: Set<T>): Set<Set<T>> { diff --git a/src/test/kotlin/unibz.cs.semint.kprime/domain/SchemaTest.kt b/src/test/kotlin/unibz.cs.semint.kprime/domain/SchemaTest.kt index 3b17318c0c689f4c3ef69f0a8b9f31024f45a734..a7693e539d2bbc1ce4697623673ed12c862a9975 100644 --- a/src/test/kotlin/unibz.cs.semint.kprime/domain/SchemaTest.kt +++ b/src/test/kotlin/unibz.cs.semint.kprime/domain/SchemaTest.kt @@ -208,4 +208,17 @@ class SchemaTest { // then assertEquals(1,schema.foreignKeys().size) } + + + @Test + fun test_addDoubleInc() { + // given + var schema = Schema() + assertEquals(0,schema.doubleIncs().size) + // when + schema.addDoubleInc("person:dep_id-->department:dep_id") + // then + assertEquals(1,schema.doubleIncs().size) + } + } \ No newline at end of file