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