Skip to content
Snippets Groups Projects
Commit e4f77d86 authored by npedot's avatar npedot
Browse files

fixes rules template map compute

parent 8809c705
No related branches found
No related tags found
No related merge requests found
......@@ -14,10 +14,11 @@ class Xrule() {
var rule = ""
companion object {
fun toProperties(xrules: ArrayList<Xrule>): Properties {
var pros = Properties()
fun toListOfString(xrules: ArrayList<Xrule>): List<String> {
val pros = mutableListOf<String>()
for (xrule in xrules) {
pros[xrule.name]=xrule.rule
pros.add("${xrule.name}=${xrule.rule}")
}
return pros
}
......
......@@ -27,9 +27,7 @@ class XPathTransformUseCase {
:Database {
val vdecomposeFilePath = "/transformer/${trasformerName}/${trasformerDirection}/${trasformerName}_${trasformerDirection}_${trasformerVersion}.paths"
val vdecomposeTemplatePath = "transformer/${trasformerName}/${trasformerDirection}/${trasformerName}_${trasformerDirection}_${trasformerVersion}.template"
val personProperties = XPathTransformUseCase::class.java.getResourceAsStream(vdecomposeFilePath)
val xPaths = Properties()
xPaths.load(personProperties)
val xPaths = File(vdecomposeFilePath).readLines()
return transform(dbFilePath,vdecomposeTemplatePath,xPaths, tranformerParmeters)
}
......@@ -45,16 +43,14 @@ class XPathTransformUseCase {
:ChangeSet {
val vdecomposeFilePath = "/transformer/${trasformerName}/${trasformerDirection}/${trasformerName}_${trasformerDirection}_${trasformerVersion}.paths"
val vdecomposeTemplatePath = "transformer/${trasformerName}/${trasformerDirection}/${trasformerName}_changeset_${trasformerVersion}.template"
val personProperties = XPathTransformUseCase::class.java.getResourceAsStream(vdecomposeFilePath)
val xPaths = Properties()
xPaths.load(personProperties)
val xPaths = File(vdecomposeFilePath).readLines()
return compute(dbFilePath, vdecomposeTemplatePath, xPaths, tranformerParmeters)
}
fun transform(
dbFilePath: String,
templateFilePath: String,
xPaths: Properties,
xPaths: List<String>,
tranformerParmeters:
MutableMap<String, Any>)
: Database {
......@@ -122,7 +118,7 @@ class XPathTransformUseCase {
fun compute(
dbFilePath: String,
templateFilePath: String,
xPaths: Properties,
xPaths: List<String>,
tranformerParmeters: MutableMap<String, Any>)
: ChangeSet {
......@@ -171,7 +167,7 @@ class XPathTransformUseCase {
return changeSet
}
fun getTemplateModel(dbFilePath: String, xPaths: Properties, tranformerParmeters: MutableMap<String, Any>): Pair<MutableMap<String, List<String>>, String> {
fun getTemplateModel(dbFilePath: String, xPaths: List<String>, tranformerParmeters: MutableMap<String, Any>): Pair<MutableMap<String, List<String>>, String> {
val templModel = mutableMapOf<String, List<String>>()
// compute xpath lists
......@@ -180,11 +176,20 @@ class XPathTransformUseCase {
val doc = docBuilder.parse(dbInputStream)
val xpath = XPathFactory.newInstance().newXPath()
var violation = ""
for (entryNameas in xPaths.propertyNames()) {
val name = entryNameas as String
val pathTokens = xPaths.getProperty(name).split(" ")
for (xPathLine in xPaths) {
println("------------------------------------------")
val xPathTokens = xPathLine.split("==")
val name = xPathTokens[0]
println("name=|${name}|")
val rule = xPathTokens[1]
println("rule=|${rule}|")
val pathTokens = rule.split(" ")
val value = parametrized(pathTokens[0], tranformerParmeters)
if (!(value.startsWith("-") || value.startsWith("+"))) {
println("value=|${value}|")
if (value.startsWith("-") || value.startsWith("+")) {
templModel[name] = computeDerivedList(templModel, rule)
}
else {
templModel[name] = asValueList(xpath.compile(value).evaluate(doc, XPathConstants.NODESET) as NodeList)
println(" ${name} = ${value}")
println(" ${name} = ${templModel[name]}")
......@@ -195,9 +200,9 @@ class XPathTransformUseCase {
val pathCondition = pathTokens[1]
val pathSize = pathTokens[2].toInt()
if (pathCondition == ">")
if ((templModel[name])!!.size <= pathSize) violation = "violation: ${name}:${xPaths.getProperty(name)} ${templModel[name]} size <= ${pathSize}"
if ((templModel[name])!!.size <= pathSize) violation = "violation: ${name}:${rule} ${templModel[name]} size <= ${pathSize}"
if (pathCondition == "=")
if ((templModel[name])!!.size != pathSize) violation = "violation: ${name}:${xPaths.getProperty(name)} ${templModel[name]} size != ${pathSize}"
if ((templModel[name])!!.size != pathSize) violation = "violation: ${name}:${rule} ${templModel[name]} size != ${pathSize}"
}
}
}
......@@ -205,18 +210,6 @@ class XPathTransformUseCase {
for (parCouple in tranformerParmeters) {
templModel.put(parCouple.key, listOf(parCouple.value.toString()))
}
// compute derived list sum and minus
// if there are values in template model
if (!templModel.isEmpty()) {
for (entryNameas in xPaths.propertyNames()) {
val name = entryNameas as String
val value = xPaths.getProperty(name)
if (value.startsWith("-") || value.startsWith("+")) {
println(" ${name} = ${value}")
templModel[name] = computeDerivedList(templModel, value)
}
}
}
return Pair(templModel, violation)
}
}
\ No newline at end of file
......@@ -58,8 +58,7 @@ class TransformerXUseCase(
serializer.prettyDatabase(db), workingDir + "db_worked.xml")
println("Updated db file db_worked.xml")
val xPaths = Properties()
xPaths.load(FileReader(decoXPathsFilePath))
val xPaths = File(decoXPathsFilePath).readLines()
val tranformerParmeters = mutableMapOf<String,Any>()
tranformerParmeters.putAll(params)
val changeSet = xpathTransform.compute(
......@@ -88,8 +87,7 @@ class TransformerXUseCase(
override fun decomposeApplicable(db: Database, transformationStrategy: TransformationStrategy): Applicability {
val transformerParams = mutableMapOf<String,Any>()
val xPathProperties = Properties()
xPathProperties.load(FileInputStream(decoXPathsFilePath))
val xPathProperties = File(decoXPathsFilePath).readLines()
if (db.name.isEmpty()) return Applicability(false,"db name empty", transformerParams)
// lateinit var traceDir :String
......@@ -111,7 +109,7 @@ class TransformerXUseCase(
message = "decomposeApplicable ${violation.isEmpty()} ${violation}"
mutableMap = templateMap as MutableMap<String, Any>
} catch (e:Exception) {
message = e.localizedMessage
message = e.message.toString()
}
return Applicability(applicable, message, mutableMap)
}
......
......@@ -22,7 +22,7 @@ class PersonTransfomerScenarioTI {
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 xrules = Xrule.toListOfString(vTransfomer.splitter.xman.xrules)
println(templateFilePath)
// when
val newDb = XPathTransformUseCase().transform(dbFilePath, templateFilePath, xrules, tranformerParmeters)
......@@ -35,13 +35,6 @@ class PersonTransfomerScenarioTI {
println(newDb)
}
private fun toProperties(xrules: ArrayList<Xrule>): Properties {
val pros = Properties()
for (xrule in xrules) {
pros[xrule.name]=xrule.rule
}
return pros
}
@Test
// FIXME rimuovere attributi doppi dalla tabella
......@@ -57,7 +50,7 @@ class PersonTransfomerScenarioTI {
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 xrules = Xrule.toListOfString(vTransfomer.composer.xman.xrules)
println(templateFilePath)
// when
val newDb = XPathTransformUseCase().transform(dbFilePath, templateFilePath, xrules, tranformerParmeters)
......
......@@ -23,7 +23,7 @@ class SakilaTransfomerScenarioTI {
val transfomerXml = SakilaTransfomerScenarioTI::class.java.getResource("/transformer/verticalTransfomer.xml").readText()
val vTransfomer = XMLSerializeUseCase(XMLSerializerJacksonAdapter()).deserializeTransformer(transfomerXml).ok
val templateFilePath = vTransfomer!!.splitter.template.filename
val xrules = Xrule.toProperties(vTransfomer.splitter.xman.xrules)
val xrules = Xrule.toListOfString(vTransfomer.splitter.xman.xrules)
val tranformerParmeters = mutableMapOf<String,Any>()
tranformerParmeters["originTable"]="film"
tranformerParmeters["targetTable1"]="film1"
......@@ -63,7 +63,7 @@ class SakilaTransfomerScenarioTI {
val transfomerXml = SakilaTransfomerScenarioTI::class.java.getResource("/transformer/verticalTransfomer.xml").readText()
val vTransfomer = XMLSerializeUseCase(XMLSerializerJacksonAdapter()).deserializeTransformer(transfomerXml).ok!!
val templateFilePath = vTransfomer.splitter.template.filename
val xrules = Xrule.toProperties(vTransfomer.splitter.xman.xrules)
val xrules = Xrule.toListOfString(vTransfomer.splitter.xman.xrules)
val tranformerParmeters = mutableMapOf<String,Any>()
tranformerParmeters["originTable"]="film"
tranformerParmeters["targetTable1"]="film_core"
......@@ -100,7 +100,7 @@ class SakilaTransfomerScenarioTI {
val transfomerXml = SakilaTransfomerScenarioTI::class.java.getResource("/transformer/horizontalTransfomer.xml").readText()
val vTransfomer = XMLSerializeUseCase(XMLSerializerJacksonAdapter()).deserializeTransformer(transfomerXml).ok!!
val templateFilePath = vTransfomer.splitter.template.filename
val xrules = Xrule.toProperties(vTransfomer.splitter.xman.xrules)
val xrules = Xrule.toListOfString(vTransfomer.splitter.xman.xrules)
val tranformerParmeters = mutableMapOf<String,Any>()
tranformerParmeters["originTable"]="film"
tranformerParmeters["targetTable1"]="film_italiano"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment