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
import unibz.cs.semint.kprime.usecase.service.FileIOService
import unibz.cs.semint.kprime.usecase.service.FileIOServiceI
import java.io.*
class FileIOAdapter : FileIOService {
class FileIOAdapter : FileIOServiceI {
override fun writeOnWorkingFilePath(db: String, fileName: String): String {
val writer = BufferedWriter(FileWriter(fileName));
writer.write(db);
......
......@@ -33,13 +33,13 @@ class MetaSchemaJdbcAdapter : IMetaSchemaRepository {
db.id=UUID.randomUUID().toString()
db.schema.name="sourceName"
db.schema.id=UUID.randomUUID().toString()
var tableNames :List<String>
var tableNames = mutableListOf<String>()
if (table!=null && table.isNotEmpty()) {
tableNames= listOf(table)
tableNames= mutableListOf(table)
} else {
tableNames = readTables(metaData,db)
tableNames.addAll(readTables(metaData,db))
}
readViews(metaData,db)
tableNames.addAll(readViews(metaData,db))
readColumns(metaData, tableNames,db)
readPrimaryKeys(metaData, tableNames,db)
readForeignKeys(metaData, tableNames,db)
......@@ -63,11 +63,12 @@ class MetaSchemaJdbcAdapter : IMetaSchemaRepository {
private fun readViews(metaData: DatabaseMetaData, db: Database):List<String> {
val views = metaData.getTables(null, null, null, arrayOf("VIEW"))
val viewNames = mutableListOf<String>()
println("++++++++++++++++++++++++++++++++++++++++++++++++")
QueryJdbcAdapter().printResultSet(views)
//println("++++++++++++++++++++++++++++++++++++++++++++++++")
//QueryJdbcAdapter().printResultSet(views)
println("++++++++++++++++++++++++++++++++++++++++++++++++")
while (views.next()) {
val viewName = "${views.getString("TABLE_NAME")}"
println(viewName)
viewNames.add(viewName)
val table = Table()
table.name=viewName
......
......@@ -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.dml.ChangeSet
import unibz.cs.semint.kprime.domain.dql.Query
import unibz.cs.semint.kprime.domain.dql.Select
import unibz.cs.semint.kprime.usecase.service.IXMLSerializerService
import unibz.cs.semint.kprime.usecase.service.SerializerServiceI
class XMLSerializerJacksonAdapter : IXMLSerializerService {
class XMLSerializerJacksonAdapter : SerializerServiceI {
// table
......
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 javax.xml.transform.OutputKeys
import javax.xml.transform.TransformerFactory
import javax.xml.transform.stream.StreamResult
import javax.xml.transform.stream.StreamSource
class XSLTransformerJaxpAdapter:IXSLTransformerService {
class XSLTransformerJaxpAdapter:XSLTransformerServiceI {
override fun trasform(xsl: String, xml: String, out: String) {
val tFactory = TransformerFactory.newInstance()
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
import unibz.cs.semint.kprime.domain.ddl.Constraint
import unibz.cs.semint.kprime.domain.ddl.Database
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.
*/
class ApplyChangeSetUseCase(serializer : IXMLSerializerService) {
class ApplyChangeSetUseCase(serializer : SerializerServiceI) {
val serializer = serializer
......
......@@ -4,7 +4,7 @@ import unibz.cs.semint.kprime.domain.*
import unibz.cs.semint.kprime.domain.ddl.Database
import unibz.cs.semint.kprime.usecase.UseCaseResult
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.*
......@@ -32,7 +32,7 @@ class MetaSchemaReadUseCase() {
""".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)
if (tokens.size<2) { return UseCaseResult("Usage:" + usage(), null);}
if (tokens[1] == "?") { return UseCaseResult(oneline(), null);}
......
......@@ -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.dml.ChangeSet
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
......
......@@ -7,7 +7,7 @@ import org.w3c.dom.NodeList
import unibz.cs.semint.kprime.adapter.service.XMLSerializerJacksonAdapter
import unibz.cs.semint.kprime.domain.ddl.Database
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.StringWriter
import javax.xml.parsers.DocumentBuilderFactory
......@@ -55,7 +55,7 @@ class XPathTransformUseCase {
val changeSet = compute(dbFilePath, templateFilePath, xPaths, tranformerParmeters)
//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 db = serializer.deserializeDatabase(dbXml)
val newdb = ApplyChangeSetUseCase(serializer).apply(db, changeSet)
......
package unibz.cs.semint.kprime.usecase.common
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> {
return UseCaseResult("done", transformer.trasform(xsl, xml, out))
......
......@@ -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.TransformerUseCase
import unibz.cs.semint.kprime.usecase.common.XPathTransformUseCase
import unibz.cs.semint.kprime.usecase.service.FileIOService
import unibz.cs.semint.kprime.usecase.service.IXMLSerializerService
import java.io.StringWriter
import unibz.cs.semint.kprime.usecase.service.FileIOServiceI
import unibz.cs.semint.kprime.usecase.service.SerializerServiceI
import java.time.LocalDateTime
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 {
val tranformerParmeters = mutableMapOf<String,Any>()
......
......@@ -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.common.ApplyChangeSetUseCase
import unibz.cs.semint.kprime.usecase.common.XPathTransformUseCase
import unibz.cs.semint.kprime.usecase.service.FileIOService
import unibz.cs.semint.kprime.usecase.service.IXMLSerializerService
import unibz.cs.semint.kprime.usecase.service.FileIOServiceI
import unibz.cs.semint.kprime.usecase.service.SerializerServiceI
import java.io.File
import java.io.FileInputStream
import java.io.FileReader
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.util.*
/**
* Usage e.g.:
......@@ -30,8 +27,8 @@ import java.util.*
*
*/
class TransformerXUseCase(
val serializer: IXMLSerializerService,
val fileIOAdapter: FileIOService,
val serializer: SerializerServiceI,
val fileIOAdapter: FileIOServiceI,
val workingDir:String,
val docoTemplateFilePath:String,
val decoXPathsFilePath:String,
......
......@@ -7,7 +7,7 @@ import java.io.FileInputStream
import java.io.InputStream
import java.nio.charset.StandardCharsets
interface FileIOService {
interface FileIOServiceI {
fun writeOnWorkingFilePath(db: String, fileName: String): String
companion object {
......
......@@ -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.dml.ChangeSet
interface IXMLSerializerService {
interface SerializerServiceI {
fun serializeTable(table: Table): String
fun deserializeTable(s: String): Table
fun prettyTable(table: Table): String
......
package unibz.cs.semint.kprime.usecase.service
interface IXSLTransformerService {
interface XSLTransformerServiceI {
fun trasform(xsl:String,xml:String,out:String)
}
\ No newline at end of file
......@@ -35,7 +35,6 @@ class ApplyChangeSetUseCaseTest {
val db = setUpPersonDb()
//db.mappings = mutableListOf()
val serializeDb = serializer.serializeDatabase(db)
println(serializeDb)
val newDb = serializer.deserializeDatabase(serializeDb)
//newDb.mappings = mutableListOf()
val serializeNewDb = serializer.serializeDatabase(newDb)
......
......@@ -101,7 +101,6 @@ class XMLDeserializerDatabaseTest {
FROM alias
""".trimIndent()))
println(serializer.prettyDatabase(db))
assertEquals(3, db.mappings().size)
assertNotNull(database.mapping("query2"))
assertEquals("*",deserialized!!.ok!!.mapping("query2")!!.select!!.attributes[0]?.name)
......
......@@ -52,7 +52,7 @@ class XStreamTest {
val db: Database = xstream.fromXML(dbxml) as Database
// then
val prettyDatabase = XMLSerializerJacksonAdapter().prettyDatabase(db)
println(prettyDatabase)
//println(prettyDatabase)
assertEquals(db.schema.tables().size,0)
}
}
\ No newline at end of file
......@@ -6,7 +6,6 @@ import org.junit.Test
import unibz.cs.semint.kprime.domain.ddl.Database
import unibz.cs.semint.kprime.domain.ddl.Schema
import unibz.cs.semint.kprime.domain.ddl.Table
import java.io.File
import java.io.StringWriter
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