Skip to content
Snippets Groups Projects
ChangeSet.kt 2.34 KiB
Newer Older
package unibz.cs.semint.kprime.domain.dml

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement

fun initChangeSet(alfa:ChangeSet.()->Unit):ChangeSet {
    val changeSet = ChangeSet()
    return changeSet
}

@JacksonXmlRootElement(localName = "changeSet")
class ChangeSet() {


    @JacksonXmlProperty(isAttribute = true)
    var id: String = ""

    @JacksonXmlElementWrapper(useWrapping=false)
    var createView= ArrayList<CreateView>()

    @JacksonXmlElementWrapper(useWrapping=false)
    var createTable= ArrayList<CreateTable>()

    @JacksonXmlElementWrapper(useWrapping=false)
    var createConstraint= ArrayList<CreateConstraint>()

npedot's avatar
npedot committed
    @JacksonXmlElementWrapper(useWrapping=false)
    var createMapping= ArrayList<CreateMapping>()

    @JacksonXmlElementWrapper(useWrapping=false)
    var dropView= ArrayList<DropView>()

    @JacksonXmlElementWrapper(useWrapping=false)
    var dropTable= ArrayList<DropTable>()

    @JacksonXmlElementWrapper(useWrapping=false)
    var dropConstraint= ArrayList<DropConstraint>()

npedot's avatar
npedot committed
    @JacksonXmlElementWrapper(useWrapping=false)
    var dropMapping= ArrayList<DropMapping>()

    infix fun withId(id:String) = apply {
        this.id=id
    }

npedot's avatar
npedot committed
    infix fun plus(createView: CreateView)= apply{
        this.createView.add(createView)
    }
npedot's avatar
npedot committed
    infix fun plus(createTable: CreateTable)= apply{
        this.createTable.add(createTable)
    }
npedot's avatar
npedot committed
    infix fun plus(createConstraint: CreateConstraint)= apply{
        this.createConstraint.add(createConstraint)
    }
npedot's avatar
npedot committed
    infix fun plus(createMapping: CreateMapping)= apply{
        this.createMapping.add(createMapping)
    }
    infix fun minus(view: DropView)= apply{
        this.dropView.add(view)
    }
    infix fun minus(droptable:DropTable) = apply {
        this.dropTable.add(droptable)
    }
    infix fun minus(dropconstraint:DropConstraint) = apply {
        this.dropConstraint.add(dropconstraint)
    }
npedot's avatar
npedot committed
    infix fun minus(dropMapping: DropMapping) = apply {
        this.dropMapping.add(dropMapping)
    }
npedot's avatar
npedot committed
    fun size(): Int {
        return createView.size +createTable.size + createConstraint.size
            + dropView.size + dropTable.size + dropConstraint.size
npedot's avatar
npedot committed
            + dropMapping.size
npedot's avatar
npedot committed
    }