Skip to content
Snippets Groups Projects
PersonTransfomerScenarioTI.kt 2.5 KiB
Newer Older
npedot's avatar
npedot committed
package unibz.cs.semint.kprime.scenario

import org.junit.Test
import unibz.cs.semint.kprime.adapter.repository.QueryJdbcAdapter
npedot's avatar
npedot committed
import unibz.cs.semint.kprime.adapter.service.XMLSerializerJacksonAdapter
import unibz.cs.semint.kprime.domain.DataSource
npedot's avatar
npedot committed
import unibz.cs.semint.kprime.domain.Xrule
import unibz.cs.semint.kprime.domain.ddl.Database
import unibz.cs.semint.kprime.usecase.SQLizeUseCase
npedot's avatar
npedot committed
import unibz.cs.semint.kprime.usecase.XMLSerializeUseCase
import unibz.cs.semint.kprime.usecase.XPathTransformUseCase
import java.io.OutputStreamWriter
import java.io.StringWriter
npedot's avatar
npedot committed
import java.util.*
import kotlin.test.assertEquals
npedot's avatar
npedot committed

class PersonTransfomerScenarioTI {

    @Test
    fun test_xpath_vertical_decomposition_on_person_db(): Database {
npedot's avatar
npedot committed
        // given
        val dbFilePath = "db/person.xml"
        val transfomerXml = PersonTransfomerScenarioTI::class.java.getResource("/transformer/verticalTransfomer.xml").readText()
        val vTransfomer = XMLSerializeUseCase(XMLSerializerJacksonAdapter()).deserializeTransformer(transfomerXml).ok
        val templateFilePath = vTransfomer!!.splitter.template.filename
        val xrules = toProperties(vTransfomer!!.splitter.xman.xrules)
        val tranformerParmeters = mutableMapOf<String,Any>()
        tranformerParmeters["table"]="person"
        println(templateFilePath)
        // when
        val newDb = XPathTransformUseCase().transform(dbFilePath, templateFilePath, xrules, tranformerParmeters, StringWriter())
npedot's avatar
npedot committed
        // then
        val lineage = newDb.lineage("person1")
        assertEquals(lineage.size,2)
        assertEquals(lineage.last(),"person")
        assertEquals(lineage.first(),"person1")
npedot's avatar
npedot committed
        // print to console output
        return newDb
npedot's avatar
npedot committed
    }

    private fun toProperties(xrules: ArrayList<Xrule>): Properties {
        var pros = Properties()
        for (xrule in xrules) {
            pros[xrule.name]=xrule.rule
        }
        return pros
    }

    @Test
    fun test_xpath_horizontal_decomposition_on_person_db() {
        /*
        // given
        val dbFilePath = "db/person.xml"
        val trasformerName = "horizontal"
        val trasformerDirection = "decompose"
        val trasformerVersion = "1"
        val tranformerParmeters = mutableMapOf<String,Any>()
        tranformerParmeters["table"]="person"
        // when
        XPathTransformUseCase().transform(dbFilePath, trasformerName, trasformerDirection, trasformerVersion,tranformerParmeters,OutputStreamWriter(System.out))
        // then
        // print to console output
         */
    }


}