Skip to content

Commit f908eab

Browse files
committed
1 parent 0ca3d1f commit f908eab

11 files changed

Lines changed: 34 additions & 30 deletions

File tree

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

src/main/kotlin/com/github/mgramin/sqlboot/model/resourcetype/impl/composite/FsResourceTypes.kt

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,10 @@ import com.github.mgramin.sqlboot.model.resourcetype.wrappers.header.SelectWrapp
3535
import com.github.mgramin.sqlboot.model.resourcetype.wrappers.list.SortWrapper
3636
import com.github.mgramin.sqlboot.model.uri.Uri
3737
import com.github.mgramin.sqlboot.template.generator.impl.GroovyTemplateGenerator
38+
import com.github.mgramin.sqlboot.tools.files.file.impl.SimpleFile
3839
import reactor.core.publisher.Flux
3940
import java.io.File
41+
import java.nio.charset.Charset
4042
import java.nio.charset.StandardCharsets.UTF_8
4143

4244
/**
@@ -47,36 +49,26 @@ class FsResourceTypes(
4749
private val uri: Uri
4850
) : ResourceType {
4951

50-
private val resourceTypes: List<ResourceType> = walk(dbConnections.first().baseFolder!!.file.path, uri, dbConnections.first())
52+
private val resourceTypes: List<ResourceType> = walk(dbConnections.first().baseFolder!!.file.path)
5153

52-
private fun walk(path: String, uri: Uri, connection: SimpleDbConnection): List<ResourceType> {
53-
val result = arrayListOf<ResourceType>()
54-
File(path)
55-
.listFiles()
56-
.asSequence()
57-
.filter { it.isDirectory }
58-
.onEach { result.addAll(walk(it.absolutePath, uri, connection)) }
59-
.filter { File(it, "README.md").exists() }
60-
.forEach { dir ->
61-
val map = MarkdownFile(File(dir, "README.md").readText(UTF_8)).parse()
62-
if (map.isNotEmpty()) {
63-
val sql = map[uri.action()] ?: map.entries.iterator().next().value
64-
val resourceType =
65-
// CacheWrapper(
66-
SelectWrapper(
67-
// PageWrapper(
68-
SortWrapper(
69-
BodyWrapper(
70-
SqlResourceType(
71-
aliases = listOf(dir.name),
72-
sql = sql,
73-
connections = dbConnections),
74-
templateGenerator = GroovyTemplateGenerator("[EMPTY BODY]"))))
75-
// )
76-
result.add(resourceType)
77-
}
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]"))))
7870
}
79-
return result
71+
.toList()
8072
}
8173

8274
@Deprecated("")

src/main/kotlin/com/github/mgramin/sqlboot/model/resourcetype/impl/composite/md/MarkdownFile.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
package com.github.mgramin.sqlboot.model.resourcetype.impl.composite.md
2626

27+
import com.github.mgramin.sqlboot.tools.files.file.File
2728
import org.commonmark.node.AbstractVisitor
2829
import org.commonmark.node.FencedCodeBlock
2930
import org.commonmark.node.Heading
@@ -36,8 +37,19 @@ import java.util.LinkedHashMap
3637
* @version $Id: d5d9fbccca9519bf74e3b6add53e46104ffa5931 $
3738
* @since 0.1
3839
*/
39-
class MarkdownFile(private val text: String) {
40+
class MarkdownFile(private val name: String, private val text: String) : File {
4041

42+
override fun name(): String {
43+
return name
44+
}
45+
46+
override fun content(): ByteArray {
47+
val visitor = CustomVisitor()
48+
Parser.builder().build().parse(text).accept(visitor)
49+
return visitor.getMap().iterator().next().value.toByteArray()
50+
}
51+
52+
@Deprecated("")
4153
fun parse(): Map<String, String> {
4254
val visitor = CustomVisitor()
4355
Parser.builder().build().parse(text).accept(visitor)

0 commit comments

Comments
 (0)