Newer
Older
import org.junit.Test
import unibz.cs.semint.kprime.adapter.service.XMLSerializerJacksonAdapter
import unibz.cs.semint.kprime.domain.Xrule
import unibz.cs.semint.kprime.usecase.common.XMLSerializeUseCase
import unibz.cs.semint.kprime.usecase.common.XPathTransformUseCase
// given
val dbFilePath = "db/person.xml"
val tranformerParmeters = mutableMapOf<String,Any>()
tranformerParmeters["originTable"]="person"
tranformerParmeters["targetTable1"]="person1"
tranformerParmeters["targetTable2"]="person2"
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 newDb = XPathTransformUseCase().transform(dbFilePath, templateFilePath, xrules, tranformerParmeters, StringWriter())
val lineage = newDb.lineage("person1")
assertEquals(lineage.size,2)
assertEquals(lineage.last(),"person")
assertEquals(lineage.first(),"person1")
}
private fun toProperties(xrules: ArrayList<Xrule>): Properties {
var pros = Properties()
for (xrule in xrules) {
pros[xrule.name]=xrule.rule
}
return pros
}
@Test
// FIXME rimuovere attributi doppi dalla tabella
// FIXME drop della primary key person1
val dbFilePath = "db/person_splitted.xml"
tranformerParmeters["targetTable"]="person"
tranformerParmeters["originTable1"]="person1"
tranformerParmeters["originTable2"]="person2"
val transfomerXml = PersonTransfomerScenarioTI::class.java.getResource("/transformer/verticalTransfomer.xml").readText()
val vTransfomer = XMLSerializeUseCase(XMLSerializerJacksonAdapter()).deserializeTransformer(transfomerXml).ok
val templateFilePath = vTransfomer!!.composer.template.filename
val xrules = toProperties(vTransfomer!!.composer.xman.xrules)
val newDb = XPathTransformUseCase().transform(dbFilePath, templateFilePath, xrules, tranformerParmeters, StringWriter())
@Test
fun test_roundtrip_vertical_transformation() {
}