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

adds yaml serializer, meta views to db

parent 3d6cffc0
No related branches found
No related tags found
No related merge requests found
Showing
with 106 additions and 41 deletions
package unibz.cs.semint.kprime.adapter.file package unibz.cs.semint.kprime.adapter.file
import unibz.cs.semint.kprime.usecase.service.FileIOService import unibz.cs.semint.kprime.usecase.service.FileIOServiceI
import java.io.* import java.io.*
class FileIOAdapter : FileIOService { class FileIOAdapter : FileIOServiceI {
override fun writeOnWorkingFilePath(db: String, fileName: String): String { override fun writeOnWorkingFilePath(db: String, fileName: String): String {
val writer = BufferedWriter(FileWriter(fileName)); val writer = BufferedWriter(FileWriter(fileName));
writer.write(db); writer.write(db);
......
...@@ -33,13 +33,13 @@ class MetaSchemaJdbcAdapter : IMetaSchemaRepository { ...@@ -33,13 +33,13 @@ class MetaSchemaJdbcAdapter : IMetaSchemaRepository {
db.id=UUID.randomUUID().toString() db.id=UUID.randomUUID().toString()
db.schema.name="sourceName" db.schema.name="sourceName"
db.schema.id=UUID.randomUUID().toString() db.schema.id=UUID.randomUUID().toString()
var tableNames :List<String> var tableNames = mutableListOf<String>()
if (table!=null && table.isNotEmpty()) { if (table!=null && table.isNotEmpty()) {
tableNames= listOf(table) tableNames= mutableListOf(table)
} else { } else {
tableNames = readTables(metaData,db) tableNames.addAll(readTables(metaData,db))
} }
readViews(metaData,db) tableNames.addAll(readViews(metaData,db))
readColumns(metaData, tableNames,db) readColumns(metaData, tableNames,db)
readPrimaryKeys(metaData, tableNames,db) readPrimaryKeys(metaData, tableNames,db)
readForeignKeys(metaData, tableNames,db) readForeignKeys(metaData, tableNames,db)
...@@ -63,11 +63,12 @@ class MetaSchemaJdbcAdapter : IMetaSchemaRepository { ...@@ -63,11 +63,12 @@ class MetaSchemaJdbcAdapter : IMetaSchemaRepository {
private fun readViews(metaData: DatabaseMetaData, db: Database):List<String> { private fun readViews(metaData: DatabaseMetaData, db: Database):List<String> {
val views = metaData.getTables(null, null, null, arrayOf("VIEW")) val views = metaData.getTables(null, null, null, arrayOf("VIEW"))
val viewNames = mutableListOf<String>() val viewNames = mutableListOf<String>()
println("++++++++++++++++++++++++++++++++++++++++++++++++") //println("++++++++++++++++++++++++++++++++++++++++++++++++")
QueryJdbcAdapter().printResultSet(views) //QueryJdbcAdapter().printResultSet(views)
println("++++++++++++++++++++++++++++++++++++++++++++++++") println("++++++++++++++++++++++++++++++++++++++++++++++++")
while (views.next()) { while (views.next()) {
val viewName = "${views.getString("TABLE_NAME")}" val viewName = "${views.getString("TABLE_NAME")}"
println(viewName)
viewNames.add(viewName) viewNames.add(viewName)
val table = Table() val table = Table()
table.name=viewName table.name=viewName
......
...@@ -10,10 +10,9 @@ import unibz.cs.semint.kprime.domain.ddl.Database ...@@ -10,10 +10,9 @@ import unibz.cs.semint.kprime.domain.ddl.Database
import unibz.cs.semint.kprime.domain.ddl.Table import unibz.cs.semint.kprime.domain.ddl.Table
import unibz.cs.semint.kprime.domain.dml.ChangeSet import unibz.cs.semint.kprime.domain.dml.ChangeSet
import unibz.cs.semint.kprime.domain.dql.Query import unibz.cs.semint.kprime.domain.dql.Query
import unibz.cs.semint.kprime.domain.dql.Select import unibz.cs.semint.kprime.usecase.service.SerializerServiceI
import unibz.cs.semint.kprime.usecase.service.IXMLSerializerService
class XMLSerializerJacksonAdapter : IXMLSerializerService { class XMLSerializerJacksonAdapter : SerializerServiceI {
// table // table
......
package unibz.cs.semint.kprime.adapter.service package unibz.cs.semint.kprime.adapter.service
import unibz.cs.semint.kprime.usecase.service.IXSLTransformerService import unibz.cs.semint.kprime.usecase.service.XSLTransformerServiceI
import java.io.FileOutputStream import java.io.FileOutputStream
import javax.xml.transform.OutputKeys import javax.xml.transform.OutputKeys
import javax.xml.transform.TransformerFactory import javax.xml.transform.TransformerFactory
import javax.xml.transform.stream.StreamResult import javax.xml.transform.stream.StreamResult
import javax.xml.transform.stream.StreamSource import javax.xml.transform.stream.StreamSource
class XSLTransformerJaxpAdapter:IXSLTransformerService { class XSLTransformerJaxpAdapter:XSLTransformerServiceI {
override fun trasform(xsl: String, xml: String, out: String) { override fun trasform(xsl: String, xml: String, out: String) {
val tFactory = TransformerFactory.newInstance() val tFactory = TransformerFactory.newInstance()
val fileOutputStream = FileOutputStream(out) val fileOutputStream = FileOutputStream(out)
......
package unibz.cs.semint.kprime.adapter.service
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory
import unibz.cs.semint.kprime.domain.Transformer
import unibz.cs.semint.kprime.domain.ddl.Constraint
import unibz.cs.semint.kprime.domain.ddl.Database
import unibz.cs.semint.kprime.domain.ddl.Table
import unibz.cs.semint.kprime.domain.dml.ChangeSet
import unibz.cs.semint.kprime.usecase.service.SerializerServiceI
import java.io.StringWriter
class YAMLSerializerJacksonAdapter : SerializerServiceI {
override fun serializeTable(table: Table): String {
TODO("Not yet implemented")
}
override fun deserializeTable(s: String): Table {
TODO("Not yet implemented")
}
override fun prettyTable(table: Table): String {
TODO("Not yet implemented")
}
override fun serializeDatabase(database: Database): String {
TODO("Not yet implemented")
}
override fun deserializeDatabase(s: String): Database {
TODO("Not yet implemented")
}
override fun prettyDatabase(db: Database): String {
val objectMapper = ObjectMapper(YAMLFactory())
val outWriter = StringWriter()
objectMapper.writeValue(outWriter,db)
return outWriter.toString()
}
override fun serializeConstraint(constraint: Constraint): String {
TODO("Not yet implemented")
}
override fun deserializeConstraint(s: String): Constraint {
TODO("Not yet implemented")
}
override fun serializeChangeSet(changeset: ChangeSet): String {
TODO("Not yet implemented")
}
override fun deserializeChangeSet(changeset: String): ChangeSet {
TODO("Not yet implemented")
}
override fun prettyChangeSet(table: ChangeSet): String {
TODO("Not yet implemented")
}
override fun serializeTransfomer(transformer: Transformer): String {
TODO("Not yet implemented")
}
override fun deserializeTransformer(transformer: String): Transformer {
TODO("Not yet implemented")
}
override fun deepclone(database: Database): Database {
TODO("Not yet implemented")
}
}
\ No newline at end of file
...@@ -4,12 +4,12 @@ import unibz.cs.semint.kprime.domain.ddl.Column ...@@ -4,12 +4,12 @@ import unibz.cs.semint.kprime.domain.ddl.Column
import unibz.cs.semint.kprime.domain.ddl.Constraint import unibz.cs.semint.kprime.domain.ddl.Constraint
import unibz.cs.semint.kprime.domain.ddl.Database import unibz.cs.semint.kprime.domain.ddl.Database
import unibz.cs.semint.kprime.domain.dml.* import unibz.cs.semint.kprime.domain.dml.*
import unibz.cs.semint.kprime.usecase.service.IXMLSerializerService import unibz.cs.semint.kprime.usecase.service.SerializerServiceI
/** /**
* Given a Databse will apply changes following a given changeSet modification. * Given a Databse will apply changes following a given changeSet modification.
*/ */
class ApplyChangeSetUseCase(serializer : IXMLSerializerService) { class ApplyChangeSetUseCase(serializer : SerializerServiceI) {
val serializer = serializer val serializer = serializer
......
...@@ -4,7 +4,7 @@ import unibz.cs.semint.kprime.domain.* ...@@ -4,7 +4,7 @@ import unibz.cs.semint.kprime.domain.*
import unibz.cs.semint.kprime.domain.ddl.Database import unibz.cs.semint.kprime.domain.ddl.Database
import unibz.cs.semint.kprime.usecase.UseCaseResult import unibz.cs.semint.kprime.usecase.UseCaseResult
import unibz.cs.semint.kprime.usecase.repository.IMetaSchemaRepository import unibz.cs.semint.kprime.usecase.repository.IMetaSchemaRepository
import unibz.cs.semint.kprime.usecase.service.IXMLSerializerService import unibz.cs.semint.kprime.usecase.service.SerializerServiceI
import java.util.* import java.util.*
...@@ -32,7 +32,7 @@ class MetaSchemaReadUseCase() { ...@@ -32,7 +32,7 @@ class MetaSchemaReadUseCase() {
""".trimIndent() """.trimIndent()
} }
fun doit(datasource: DataSource,line: String, metaSchemaRepository: IMetaSchemaRepository, xmlSerializer:IXMLSerializerService) : UseCaseResult<Database> { fun doit(datasource: DataSource,line: String, metaSchemaRepository: IMetaSchemaRepository, xmlSerializer:SerializerServiceI) : UseCaseResult<Database> {
val tokens = tokenize(line) val tokens = tokenize(line)
if (tokens.size<2) { return UseCaseResult("Usage:" + usage(), null);} if (tokens.size<2) { return UseCaseResult("Usage:" + usage(), null);}
if (tokens[1] == "?") { return UseCaseResult(oneline(), null);} if (tokens[1] == "?") { return UseCaseResult(oneline(), null);}
......
...@@ -6,9 +6,9 @@ import unibz.cs.semint.kprime.domain.ddl.Database ...@@ -6,9 +6,9 @@ import unibz.cs.semint.kprime.domain.ddl.Database
import unibz.cs.semint.kprime.domain.ddl.Table import unibz.cs.semint.kprime.domain.ddl.Table
import unibz.cs.semint.kprime.domain.dml.ChangeSet import unibz.cs.semint.kprime.domain.dml.ChangeSet
import unibz.cs.semint.kprime.usecase.UseCaseResult import unibz.cs.semint.kprime.usecase.UseCaseResult
import unibz.cs.semint.kprime.usecase.service.IXMLSerializerService import unibz.cs.semint.kprime.usecase.service.SerializerServiceI
class XMLSerializeUseCase(val xmlSerializerService: IXMLSerializerService) { class XMLSerializeUseCase(val xmlSerializerService: SerializerServiceI) {
// table // table
......
...@@ -7,7 +7,7 @@ import org.w3c.dom.NodeList ...@@ -7,7 +7,7 @@ import org.w3c.dom.NodeList
import unibz.cs.semint.kprime.adapter.service.XMLSerializerJacksonAdapter import unibz.cs.semint.kprime.adapter.service.XMLSerializerJacksonAdapter
import unibz.cs.semint.kprime.domain.ddl.Database import unibz.cs.semint.kprime.domain.ddl.Database
import unibz.cs.semint.kprime.domain.dml.ChangeSet import unibz.cs.semint.kprime.domain.dml.ChangeSet
import unibz.cs.semint.kprime.usecase.service.FileIOService import unibz.cs.semint.kprime.usecase.service.FileIOServiceI
import java.io.File import java.io.File
import java.io.StringWriter import java.io.StringWriter
import javax.xml.parsers.DocumentBuilderFactory import javax.xml.parsers.DocumentBuilderFactory
...@@ -55,7 +55,7 @@ class XPathTransformUseCase { ...@@ -55,7 +55,7 @@ class XPathTransformUseCase {
val changeSet = compute(dbFilePath, templateFilePath, xPaths, tranformerParmeters) val changeSet = compute(dbFilePath, templateFilePath, xPaths, tranformerParmeters)
//val dbXml = XPathTransformUseCase::class.java.getResource("/${dbFilePath}").readText() //val dbXml = XPathTransformUseCase::class.java.getResource("/${dbFilePath}").readText()
val dbXml = FileIOService.readString(FileIOService.inputStreamFromPath(dbFilePath)) val dbXml = FileIOServiceI.readString(FileIOServiceI.inputStreamFromPath(dbFilePath))
val serializer = XMLSerializerJacksonAdapter() val serializer = XMLSerializerJacksonAdapter()
val db = serializer.deserializeDatabase(dbXml) val db = serializer.deserializeDatabase(dbXml)
val newdb = ApplyChangeSetUseCase(serializer).apply(db, changeSet) val newdb = ApplyChangeSetUseCase(serializer).apply(db, changeSet)
......
package unibz.cs.semint.kprime.usecase.common package unibz.cs.semint.kprime.usecase.common
import unibz.cs.semint.kprime.usecase.UseCaseResult import unibz.cs.semint.kprime.usecase.UseCaseResult
import unibz.cs.semint.kprime.usecase.service.IXSLTransformerService import unibz.cs.semint.kprime.usecase.service.XSLTransformerServiceI
class XSLTrasformUseCase (val transformer:IXSLTransformerService){ class XSLTrasformUseCase (val transformer:XSLTransformerServiceI){
fun transform(xsl: String, xml: String, out: String): UseCaseResult<Unit> { fun transform(xsl: String, xml: String, out: String): UseCaseResult<Unit> {
return UseCaseResult("done", transformer.trasform(xsl, xml, out)) return UseCaseResult("done", transformer.trasform(xsl, xml, out))
......
...@@ -7,13 +7,12 @@ import unibz.cs.semint.kprime.domain.ddl.Database ...@@ -7,13 +7,12 @@ import unibz.cs.semint.kprime.domain.ddl.Database
import unibz.cs.semint.kprime.usecase.common.ApplyChangeSetUseCase import unibz.cs.semint.kprime.usecase.common.ApplyChangeSetUseCase
import unibz.cs.semint.kprime.usecase.TransformerUseCase import unibz.cs.semint.kprime.usecase.TransformerUseCase
import unibz.cs.semint.kprime.usecase.common.XPathTransformUseCase import unibz.cs.semint.kprime.usecase.common.XPathTransformUseCase
import unibz.cs.semint.kprime.usecase.service.FileIOService import unibz.cs.semint.kprime.usecase.service.FileIOServiceI
import unibz.cs.semint.kprime.usecase.service.IXMLSerializerService import unibz.cs.semint.kprime.usecase.service.SerializerServiceI
import java.io.StringWriter
import java.time.LocalDateTime import java.time.LocalDateTime
import java.time.format.DateTimeFormatter import java.time.format.DateTimeFormatter
class TransformerVUseCase(val serializer: IXMLSerializerService, val fileIOAdapter: FileIOService) : TransformerUseCase { class TransformerVUseCase(val serializer: SerializerServiceI, val fileIOAdapter: FileIOServiceI) : TransformerUseCase {
override fun decompose(db: Database, params:Map<String,Any>): Transformation { override fun decompose(db: Database, params:Map<String,Any>): Transformation {
val tranformerParmeters = mutableMapOf<String,Any>() val tranformerParmeters = mutableMapOf<String,Any>()
......
...@@ -7,14 +7,11 @@ import unibz.cs.semint.kprime.domain.ddl.Database ...@@ -7,14 +7,11 @@ import unibz.cs.semint.kprime.domain.ddl.Database
import unibz.cs.semint.kprime.usecase.TransformerUseCase import unibz.cs.semint.kprime.usecase.TransformerUseCase
import unibz.cs.semint.kprime.usecase.common.ApplyChangeSetUseCase import unibz.cs.semint.kprime.usecase.common.ApplyChangeSetUseCase
import unibz.cs.semint.kprime.usecase.common.XPathTransformUseCase import unibz.cs.semint.kprime.usecase.common.XPathTransformUseCase
import unibz.cs.semint.kprime.usecase.service.FileIOService import unibz.cs.semint.kprime.usecase.service.FileIOServiceI
import unibz.cs.semint.kprime.usecase.service.IXMLSerializerService import unibz.cs.semint.kprime.usecase.service.SerializerServiceI
import java.io.File import java.io.File
import java.io.FileInputStream
import java.io.FileReader
import java.time.LocalDateTime import java.time.LocalDateTime
import java.time.format.DateTimeFormatter import java.time.format.DateTimeFormatter
import java.util.*
/** /**
* Usage e.g.: * Usage e.g.:
...@@ -30,8 +27,8 @@ import java.util.* ...@@ -30,8 +27,8 @@ import java.util.*
* *
*/ */
class TransformerXUseCase( class TransformerXUseCase(
val serializer: IXMLSerializerService, val serializer: SerializerServiceI,
val fileIOAdapter: FileIOService, val fileIOAdapter: FileIOServiceI,
val workingDir:String, val workingDir:String,
val docoTemplateFilePath:String, val docoTemplateFilePath:String,
val decoXPathsFilePath:String, val decoXPathsFilePath:String,
......
...@@ -7,7 +7,7 @@ import java.io.FileInputStream ...@@ -7,7 +7,7 @@ import java.io.FileInputStream
import java.io.InputStream import java.io.InputStream
import java.nio.charset.StandardCharsets import java.nio.charset.StandardCharsets
interface FileIOService { interface FileIOServiceI {
fun writeOnWorkingFilePath(db: String, fileName: String): String fun writeOnWorkingFilePath(db: String, fileName: String): String
companion object { companion object {
......
...@@ -6,7 +6,7 @@ import unibz.cs.semint.kprime.domain.ddl.Database ...@@ -6,7 +6,7 @@ import unibz.cs.semint.kprime.domain.ddl.Database
import unibz.cs.semint.kprime.domain.ddl.Table import unibz.cs.semint.kprime.domain.ddl.Table
import unibz.cs.semint.kprime.domain.dml.ChangeSet import unibz.cs.semint.kprime.domain.dml.ChangeSet
interface IXMLSerializerService { interface SerializerServiceI {
fun serializeTable(table: Table): String fun serializeTable(table: Table): String
fun deserializeTable(s: String): Table fun deserializeTable(s: String): Table
fun prettyTable(table: Table): String fun prettyTable(table: Table): String
......
package unibz.cs.semint.kprime.usecase.service package unibz.cs.semint.kprime.usecase.service
interface IXSLTransformerService { interface XSLTransformerServiceI {
fun trasform(xsl:String,xml:String,out:String) fun trasform(xsl:String,xml:String,out:String)
} }
\ No newline at end of file
...@@ -35,7 +35,6 @@ class ApplyChangeSetUseCaseTest { ...@@ -35,7 +35,6 @@ class ApplyChangeSetUseCaseTest {
val db = setUpPersonDb() val db = setUpPersonDb()
//db.mappings = mutableListOf() //db.mappings = mutableListOf()
val serializeDb = serializer.serializeDatabase(db) val serializeDb = serializer.serializeDatabase(db)
println(serializeDb)
val newDb = serializer.deserializeDatabase(serializeDb) val newDb = serializer.deserializeDatabase(serializeDb)
//newDb.mappings = mutableListOf() //newDb.mappings = mutableListOf()
val serializeNewDb = serializer.serializeDatabase(newDb) val serializeNewDb = serializer.serializeDatabase(newDb)
......
...@@ -101,7 +101,6 @@ class XMLDeserializerDatabaseTest { ...@@ -101,7 +101,6 @@ class XMLDeserializerDatabaseTest {
FROM alias FROM alias
""".trimIndent())) """.trimIndent()))
println(serializer.prettyDatabase(db))
assertEquals(3, db.mappings().size) assertEquals(3, db.mappings().size)
assertNotNull(database.mapping("query2")) assertNotNull(database.mapping("query2"))
assertEquals("*",deserialized!!.ok!!.mapping("query2")!!.select!!.attributes[0]?.name) assertEquals("*",deserialized!!.ok!!.mapping("query2")!!.select!!.attributes[0]?.name)
......
...@@ -52,7 +52,7 @@ class XStreamTest { ...@@ -52,7 +52,7 @@ class XStreamTest {
val db: Database = xstream.fromXML(dbxml) as Database val db: Database = xstream.fromXML(dbxml) as Database
// then // then
val prettyDatabase = XMLSerializerJacksonAdapter().prettyDatabase(db) val prettyDatabase = XMLSerializerJacksonAdapter().prettyDatabase(db)
println(prettyDatabase) //println(prettyDatabase)
assertEquals(db.schema.tables().size,0) assertEquals(db.schema.tables().size,0)
} }
} }
\ No newline at end of file
...@@ -6,7 +6,6 @@ import org.junit.Test ...@@ -6,7 +6,6 @@ import org.junit.Test
import unibz.cs.semint.kprime.domain.ddl.Database import unibz.cs.semint.kprime.domain.ddl.Database
import unibz.cs.semint.kprime.domain.ddl.Schema import unibz.cs.semint.kprime.domain.ddl.Schema
import unibz.cs.semint.kprime.domain.ddl.Table import unibz.cs.semint.kprime.domain.ddl.Table
import java.io.File
import java.io.StringWriter import java.io.StringWriter
import kotlin.test.assertEquals import kotlin.test.assertEquals
......
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