From 74c62d66e20d37d3981f1eb60dd9741dca4283a9 Mon Sep 17 00:00:00 2001 From: npedot <nicola.pedot@gmail.com> Date: Wed, 1 Apr 2020 15:13:14 +0200 Subject: [PATCH] adds contraint remove with table remove, and apply change use schema exposed methods dropTable --- .../unibz.cs.semint.kprime/domain/ddl/Schema.kt | 12 ++++++++++-- .../usecase/common/ApplyChangeSetUseCase.kt | 6 ++++-- 2 files changed, 14 insertions(+), 4 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 aa729b7..0264fcf 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 @@ -123,8 +123,16 @@ class Schema () { fun dropTable(commandArgs:String) : Schema { var tableNames = commandArgs.split(" ") for (tableName in tableNames) { - var table = table(tableName) - tables().remove(table) + val t= table(tableName) + if (t!=null){ tables().remove(t)} + val toRemove = mutableListOf<Constraint>() + for (constr in constraints()) { + if (constr.source.table.equals(tableName)) + toRemove.add(constr) + if (constr.target.table.equals(tableName)) + toRemove.add(constr) + } + constraints().removeAll(toRemove) } return this } diff --git a/src/main/kotlin/unibz.cs.semint.kprime/usecase/common/ApplyChangeSetUseCase.kt b/src/main/kotlin/unibz.cs.semint.kprime/usecase/common/ApplyChangeSetUseCase.kt index 8da7828..c2bf04e 100644 --- a/src/main/kotlin/unibz.cs.semint.kprime/usecase/common/ApplyChangeSetUseCase.kt +++ b/src/main/kotlin/unibz.cs.semint.kprime/usecase/common/ApplyChangeSetUseCase.kt @@ -1,5 +1,6 @@ package unibz.cs.semint.kprime.usecase.common +import unibz.cs.semint.kprime.domain.ddl.Constraint import unibz.cs.semint.kprime.domain.ddl.Database import unibz.cs.semint.kprime.domain.dml.* import unibz.cs.semint.kprime.usecase.service.IXMLSerializerService @@ -32,15 +33,16 @@ class ApplyChangeSetUseCase(serializer : IXMLSerializerService) { db.schema.tables().add(createTable) return db } + fun createConstraint(db:Database, createConstraint: CreateConstraint): Database { db.schema.constraints().add(createConstraint) return db } + fun dropTable(db:Database, dropTable: DropTable):Database { if (db.schema.tables().isEmpty()) return db if (db.schema==null) return db - val t= db.schema.table(dropTable.tableName) - if (t!=null){ db.schema.tables().remove(t)} + db.schema.dropTable(dropTable.tableName) return db } -- GitLab