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 aa729b7f8962208af570a95bf1d4a0cc8cff36d6..0264fcf51deb79f163186ef30e5e285f8efe2b5a 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 8da78288c42a1be6b20c01a538a8a8a012cbcf56..c2bf04e0b33b3b4d4f7d3c23c59a977b2ac4ddcb 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 }