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 b6563cf5b4ed961c6f977a2a13a7055f5dc73117..2778d202422fd9570f6fae872a4f76a052e8086c 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 @@ -41,7 +41,17 @@ class Schema () { fun constraint(name: String): Constraint? { if (constraints().isEmpty()) return null - return constraints().filter { c -> c.name==name}.firstOrNull() + return constraints().filter { c -> c.name==name }.firstOrNull() + } + + fun constraintById(id: String): Constraint? { + if (constraints().isEmpty()) return null + return constraints().filter { c -> c.id==id }.firstOrNull() + } + + fun constraintByTable(name: String): Constraint? { + if (constraints().isEmpty()) return null + return constraints().filter { c -> c.source.table==name || c.target.table==name }.firstOrNull() } fun keys(tableName: String): List<Constraint> { diff --git a/src/main/kotlin/unibz.cs.semint.kprime/domain/dml/DropConstraint.kt b/src/main/kotlin/unibz.cs.semint.kprime/domain/dml/DropConstraint.kt index 98789080fbf26d0453f8d883de9dae8d74351cb1..f8be907e70e6efd5f2dedcb4d72df1e919adc264 100644 --- a/src/main/kotlin/unibz.cs.semint.kprime/domain/dml/DropConstraint.kt +++ b/src/main/kotlin/unibz.cs.semint.kprime/domain/dml/DropConstraint.kt @@ -23,15 +23,15 @@ class DropConstraint() { this.schemaName = schemaName } - infix fun name(constraintName: String) = apply { + infix fun name(constraintName: String) = apply { this.constraintName = constraintName } - infix fun type(type:String) { + infix fun type(type:String) = apply { this.type = type } - infix fun table(table:String) { + infix fun table(table:String) = apply { this.tableName = table } } \ No newline at end of file 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 8c3b4ec7e528ac631dfbce9c2ea50efebcc3dea4..a13982a244ce5e5600df79b118f5b9d8501ea7b0 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 @@ -113,14 +113,19 @@ class ApplyChangeSetUseCase(val serializer: SerializerServiceI) { fun dropConstraint(db:Database, dropConstraint: DropConstraint):Database { if (db.schema.constraints().isEmpty()) return db - val c = db.schema.constraint(dropConstraint.constraintName) - .let { it -> if(it !=null) db.schema.constraints().remove(it)} + if (dropConstraint.tableName.isNotEmpty()) { + db.schema.constraintByTable(dropConstraint.tableName) + .let { it -> if (it != null) db.schema.constraints().remove(it) } + } else { + db.schema.constraint(dropConstraint.constraintName) + .let { it -> if (it != null) db.schema.constraints().remove(it) } + } return db } fun dropMapping(db:Database, dropMapping: DropMapping):Database { if (db.mappings == null || db.mappings!!.isEmpty()) return db - val c = db.mapping(dropMapping.name) + db.mapping(dropMapping.name) .let { it -> if(it !=null) db.mappings!!.remove(it)} return db }