From a6cad567e49fef4676472773b52374679e2e68ca Mon Sep 17 00:00:00 2001 From: npedot <nicola.pedot@gmail.com> Date: Wed, 1 Apr 2020 11:31:35 +0200 Subject: [PATCH] adds drop table, drop constraint --- .../domain/ddl/Schema.kt | 18 +++++++++++ .../domain/SchemaTest.kt | 30 +++++++++++++++++-- 2 files changed, 45 insertions(+), 3 deletions(-) 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 bd82e5d..aa729b7 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 @@ -120,6 +120,24 @@ class Schema () { return this } + fun dropTable(commandArgs:String) : Schema { + var tableNames = commandArgs.split(" ") + for (tableName in tableNames) { + var table = table(tableName) + tables().remove(table) + } + return this + } + + fun dropConstraint(commnadArgs:String) : Schema { + var constraintNames = commnadArgs.split(" ") + for (constraintName in constraintNames) { + var constraint = constraint(constraintName) + constraints().remove(constraint) + } + return this + } + fun addFunctional(tableName:String, setExpression: String): Schema { val constraintsToAdd = Constraint.set(setExpression) for (constraint in constraintsToAdd) { 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 a7693e5..c886928 100644 --- a/src/test/kotlin/unibz.cs.semint.kprime/domain/SchemaTest.kt +++ b/src/test/kotlin/unibz.cs.semint.kprime/domain/SchemaTest.kt @@ -3,9 +3,7 @@ package unibz.cs.semint.kprime.domain import junit.framework.TestCase.assertEquals import junit.framework.TestCase.assertTrue import org.junit.Test -import unibz.cs.semint.kprime.domain.ddl.Column -import unibz.cs.semint.kprime.domain.ddl.Constraint -import unibz.cs.semint.kprime.domain.ddl.Schema +import unibz.cs.semint.kprime.domain.ddl.* class SchemaTest { @@ -221,4 +219,30 @@ class SchemaTest { assertEquals(1,schema.doubleIncs().size) } + @Test + fun test_dropTable() { + // given + var schema = Schema() + schema.addTable("person:name,surname") + assertEquals(1,schema.tables().size) + // when + schema.dropTable("person") + // then + assertEquals(0, schema.tables().size) + + } + + @Test + fun test_dropConstraint() { + // given + var schema = Schema() + schema.addKey("person:id") + schema.addForeignKey("person:id-->employee:id") + assertEquals(2,schema.constraints().size) + // when + schema.dropConstraint("person.primaryKey") + schema.dropConstraint("person_employee.foreignKey") + // then + assertEquals(0,schema.constraints().size) + } } \ No newline at end of file -- GitLab