@@ -26,7 +26,6 @@ package com.github.mgramin.sqlboot.model.resourcetype.impl
2626
2727import com.github.mgramin.sqlboot.exceptions.BootException
2828import com.github.mgramin.sqlboot.model.connection.SimpleDbConnection
29- import com.github.mgramin.sqlboot.model.resource.DbResource
3029import com.github.mgramin.sqlboot.model.resourcetype.Metadata
3130import com.github.mgramin.sqlboot.model.resourcetype.ResourceType
3231import com.github.mgramin.sqlboot.model.resourcetype.wrappers.body.BodyWrapper
@@ -44,63 +43,49 @@ import java.nio.charset.StandardCharsets.UTF_8
4443/* *
4544 * Created by MGramin on 11.07.2017.
4645 */
47- class FsResourceType (
48- private val dbConnections : List <SimpleDbConnection >,
49- private val uri : Uri
50- ) : ResourceType {
46+ class FsResourceType (private val dbConnections : List <SimpleDbConnection >) : ResourceType {
5147
5248 private val resourceTypes: List <ResourceType > = walk(dbConnections.first().baseFolder!! .file.path)
5349
54- private fun walk (path : String ): List < ResourceType > {
55- return File (path)
56- .walkTopDown()
57- .filter { it.isFile }
58- .filter { it.extension.equals(" md" , true ) || it.extension.equals(" sql" , true ) }
59- .map { return @map if (it.extension.equals(" md" , true )) MarkdownFile (it.name, it.readText(UTF_8 )) else SimpleFile (it.name, it.readText(UTF_8 ).toByteArray()) }
60- .filter { it.content().isNotEmpty() }
61- .map {
62- return @map SelectWrapper (
63- SortWrapper (
64- BodyWrapper (
65- SqlResourceType (
66- aliases = listOf ( File (it.name()).nameWithoutExtension),
67- sql = it.content().toString( Charset .defaultCharset()),
68- connections = dbConnections),
69- templateGenerator = GroovyTemplateGenerator ( " [EMPTY BODY] " ))))
70- }
71- .toList()
72- }
50+ private fun walk (path : String ) =
51+ File (path)
52+ .walkTopDown()
53+ .filter { it.isFile }
54+ .filter { it.extension.equals(" md" , true ) || it.extension.equals(" sql" , true ) }
55+ .map { return @map if (it.extension.equals(" md" , true )) MarkdownFile (it.name, it.readText(UTF_8 )) else SimpleFile (it.name, it.readText(UTF_8 ).toByteArray()) }
56+ .filter { it.content().isNotEmpty() }
57+ .map { createQuery(it) }
58+ .toList()
59+
60+ private fun createQuery ( it : com.github.mgramin.sqlboot.tools.files.file. File ) =
61+ SelectWrapper (
62+ SortWrapper (
63+ BodyWrapper (
64+ SqlResourceType (
65+ aliases = listOf ( File (it.name()).nameWithoutExtension),
66+ sql = it.content().toString( Charset .defaultCharset()),
67+ connections = dbConnections),
68+ templateGenerator = GroovyTemplateGenerator ( " [EMPTY BODY] " ))))
7369
7470 @Deprecated(" " )
75- fun resourceTypes (): List <ResourceType > {
76- return resourceTypes
77- }
71+ fun resourceTypes () = resourceTypes
72+
73+ override fun aliases () = throw BootException (" Not implemented!" )
74+
75+ override fun path () = throw BootException (" Not implemented!" )
7876
79- override fun aliases (): List <String > {
80- throw BootException (" Not implemented!" )
81- }
77+ override fun read (uri : Uri ) =
78+ Flux .merge(
79+ resourceTypes
80+ .filter { it.name().matches(wildcardToRegex(uri)) }
81+ .map { it.read(uri) })
8282
83- override fun path (): List <String > {
84- throw BootException (" Not implemented!" )
85- }
8683
87- override fun read (uri : Uri ): Flux <DbResource > {
88- return Flux .merge(
89- resourceTypes
90- .filter { v -> v.name().matches(uri.type().replace(" ?" , " .?" ).replace(" *" , " .*?" ).toRegex()) }
91- .map { it.read(uri) }
92- .toList())
93- }
84+ override fun metaData (uri : Uri ): List <Metadata > =
85+ resourceTypes
86+ .filter { it.name().matches(wildcardToRegex(uri)) }
87+ .flatMap { it.metaData(uri) }
9488
95- override fun metaData (uri : Uri ): List <Metadata > {
96- try {
97- return resourceTypes
98- .asSequence()
99- .first { v -> v.name().equals(uri.type(), ignoreCase = true ) }
100- .metaData(uri)
101- } catch (e: Exception ) {
102- throw BootException (" Type not found" , 404 )
103- }
104- }
89+ private fun wildcardToRegex (uri : Uri ) = uri.type().replace(" ?" , " .?" ).replace(" *" , " .*?" ).toRegex()
10590
10691}
0 commit comments