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

adds query printers for json and jsonld

parent 1223858b
No related branches found
No related tags found
No related merge requests found
......@@ -13,12 +13,18 @@ import java.util.*
class QueryJdbcAdapter {
fun query(datasource: DataSource, query: Query):String {
private var formatted=false
constructor() {}
constructor(formatted: Boolean) {
this.formatted = formatted
}
fun query(datasource: DataSource, query: Query, printer: (rs :ResultSet)->String) :String {
var sqlquery = SQLizeSelectUseCase().sqlize(query)
return query(datasource,sqlquery)
return query(datasource,sqlquery,printer)
}
fun query(datasource: DataSource, sqlquery: String):String {
fun query(datasource: DataSource, sqlquery: String, printer:(rs:ResultSet)->String):String {
val source = datasource
val user = source.user
val pass = source.pass
......@@ -37,7 +43,7 @@ class QueryJdbcAdapter {
val sqlnative = conn.nativeSQL(sqlquery)
val prepareStatement = conn.prepareStatement(sqlnative)
val resultSet = prepareStatement.executeQuery()
val result =printJsonResultSet(resultSet)
val result =printer(resultSet)
resultSet.close()
conn.close()
return result
......@@ -71,10 +77,38 @@ class QueryJdbcAdapter {
list.add(obj)
}
val mapper = ObjectMapper()
mapper.enable(SerializationFeature.INDENT_OUTPUT)
val stringWriter = StringWriter()
mapper.writeValue(stringWriter, list)
return stringWriter.toString()
val result = mapper.writeValueAsString(list)
println(result)
return result
}
fun printJsonLDResultSet(resultSet:ResultSet):String {
val list = mutableListOf<Map<String, String>>()
val metaData = resultSet.metaData
val columnCount = metaData.columnCount
val contextObj = LinkedHashMap<String, String>()
contextObj.put("ex","http://example.org/vocab#")
while( resultSet.next()) {
val obj = LinkedHashMap<String, String>()
obj.put("@id", "tableurl")
obj.put("@type", "tablename")
for (i in 1..columnCount) {
obj.put(metaData.getColumnName(i), resultSet.getString(i))
}
list.add(obj)
}
val graphObj = LinkedHashMap<String, Any>()
graphObj.put("@context", contextObj)
graphObj.put("@graph", list)
val mapper = ObjectMapper()
mapper.enable(SerializationFeature.WRAP_ROOT_VALUE)
val result = mapper.writeValueAsString(graphObj)
println(result)
return result
}
fun create(datasource: DataSource, sqlcreate: String) {
......
......@@ -24,8 +24,9 @@ class SakilaQueryTI {
fun test_read_sakila_query_string() {
//given
val sakilaSource = DataSource(type,name,driver,path,user,pass)
val adapter = QueryJdbcAdapter()
// when
val result = QueryJdbcAdapter().query(sakilaSource,"select * from film where film_id=1")
val result = adapter.query(sakilaSource,"select * from film where film_id=1",adapter::printResultSet)
// then
assertEquals("""
film_id: 1
......@@ -55,7 +56,8 @@ class SakilaQueryTI {
val sakilaSource = DataSource(type,name,driver,path,user,pass)
// when
val sqlquery = Query.build("film")
val result = QueryJdbcAdapter().query(sakilaSource, sqlquery)
val adapter = QueryJdbcAdapter()
val result = adapter.query(sakilaSource, sqlquery,adapter::printResultSet)
// then
//assertEquals("read-meta-schema done.","")
}
......@@ -68,7 +70,8 @@ class SakilaQueryTI {
// when
val condition = "language_id=2"
val sqlquery = Query.build("film",condition)
val result = QueryJdbcAdapter().query(sakilaSource, sqlquery)
val adapter = QueryJdbcAdapter()
val result = adapter.query(sakilaSource, sqlquery,adapter::printResultSet)
// then
//assertEquals("read-meta-schema done.","")
}
......
......@@ -48,8 +48,9 @@ class SakilaTransfomerScenarioTI {
val sqlize = SQLizeSelectUseCase().sqlize(simpleQueryMap1)
println(sqlize)
QueryJdbcAdapter().query(sakilaSource, simpleQueryMap1)
QueryJdbcAdapter().query(sakilaSource, simpleQueryMap2)
val adapter = QueryJdbcAdapter()
adapter.query(sakilaSource, simpleQueryMap1,adapter::printResultSet)
adapter.query(sakilaSource, simpleQueryMap2,adapter::printResultSet)
// print to console output
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment