From d62aadb95f689d709343740d1b6a381c9777ad72 Mon Sep 17 00:00:00 2001 From: Timo Bryant Date: Wed, 27 Dec 2023 16:28:51 +0100 Subject: [PATCH] move ProgressBarFactory to core api --- Writerside/topics/starter-topic.md | 5 +++++ app/src/main/kotlin/docthor/app/App.kt | 2 +- .../de/itkl/core_api/interfaces}/ProgressBarFactory.kt | 4 +--- .../kotlin/de/itkl/fileprocessing/ProcessingPipeline.kt | 1 + .../kotlin/de/itkl/fileprocessing/ProgressInputStream.kt | 4 +++- .../src/main/kotlin/de/itkl/fileprocessing/Resource.kt | 7 +------ .../main/kotlin/de/itkl/tfidf/InverseDocumentFrequency.kt | 2 +- .../kotlin/de/itkl/tfidf/TerminalProgressBarFactory.kt | 4 ++-- libraries/tui/build.gradle.kts | 1 + .../de/itkl/tui/implementation/TerminalProgressBar.kt | 8 +++++++- 10 files changed, 23 insertions(+), 15 deletions(-) rename libraries/{fileprocessing/src/main/kotlin/de/itkl/fileprocessing => core-api/src/main/kotlin/de/itkl/core_api/interfaces}/ProgressBarFactory.kt (73%) diff --git a/Writerside/topics/starter-topic.md b/Writerside/topics/starter-topic.md index 58b23bb..4338bde 100644 --- a/Writerside/topics/starter-topic.md +++ b/Writerside/topics/starter-topic.md @@ -24,4 +24,9 @@ Abstraction about reading/writing to resources (filesystem, http, s3, etc pp) Defines the core interfaces + +Provides tui capabilities. When applied as koin modules +the resources will automatically print a read/write progressbar +on terminal. + \ No newline at end of file diff --git a/app/src/main/kotlin/docthor/app/App.kt b/app/src/main/kotlin/docthor/app/App.kt index 4da6221..1837084 100644 --- a/app/src/main/kotlin/docthor/app/App.kt +++ b/app/src/main/kotlin/docthor/app/App.kt @@ -7,7 +7,7 @@ import com.github.ajalt.clikt.parameters.options.required import com.github.ajalt.clikt.parameters.types.enum import com.github.ajalt.clikt.parameters.types.file import de.itkl.core_api.coreApiModule -import de.itkl.fileprocessing.ProgressBarFactory +import de.itkl.core_api.interfaces.ProgressBarFactory import de.itkl.textprocessing.textProcessingModule import de.itkl.tfidf.Language import de.itkl.tfidf.TerminalProgressBarFactory diff --git a/libraries/fileprocessing/src/main/kotlin/de/itkl/fileprocessing/ProgressBarFactory.kt b/libraries/core-api/src/main/kotlin/de/itkl/core_api/interfaces/ProgressBarFactory.kt similarity index 73% rename from libraries/fileprocessing/src/main/kotlin/de/itkl/fileprocessing/ProgressBarFactory.kt rename to libraries/core-api/src/main/kotlin/de/itkl/core_api/interfaces/ProgressBarFactory.kt index 4e0c6d7..1abacae 100644 --- a/libraries/fileprocessing/src/main/kotlin/de/itkl/fileprocessing/ProgressBarFactory.kt +++ b/libraries/core-api/src/main/kotlin/de/itkl/core_api/interfaces/ProgressBarFactory.kt @@ -1,6 +1,4 @@ -package de.itkl.fileprocessing - -import de.itkl.core_api.interfaces.Resource +package de.itkl.core_api.interfaces interface ProgressBarFactory { fun new(resource: Resource): ProgressBar diff --git a/libraries/fileprocessing/src/main/kotlin/de/itkl/fileprocessing/ProcessingPipeline.kt b/libraries/fileprocessing/src/main/kotlin/de/itkl/fileprocessing/ProcessingPipeline.kt index 1a088e9..f62aa8f 100644 --- a/libraries/fileprocessing/src/main/kotlin/de/itkl/fileprocessing/ProcessingPipeline.kt +++ b/libraries/fileprocessing/src/main/kotlin/de/itkl/fileprocessing/ProcessingPipeline.kt @@ -1,6 +1,7 @@ package de.itkl.fileprocessing import de.itkl.core_api.interfaces.FileProcessor +import de.itkl.core_api.interfaces.ProgressBarFactory import io.github.oshai.kotlinlogging.KotlinLogging import org.koin.core.component.KoinComponent import org.koin.core.component.inject diff --git a/libraries/fileprocessing/src/main/kotlin/de/itkl/fileprocessing/ProgressInputStream.kt b/libraries/fileprocessing/src/main/kotlin/de/itkl/fileprocessing/ProgressInputStream.kt index 385a9b5..2d469dc 100644 --- a/libraries/fileprocessing/src/main/kotlin/de/itkl/fileprocessing/ProgressInputStream.kt +++ b/libraries/fileprocessing/src/main/kotlin/de/itkl/fileprocessing/ProgressInputStream.kt @@ -1,5 +1,6 @@ package de.itkl.fileprocessing +import de.itkl.core_api.interfaces.ProgressBar import java.io.InputStream /** @@ -11,7 +12,8 @@ import java.io.InputStream */ class ProgressInputStream( private val inputStream: InputStream, - private val progressBar: ProgressBar) : InputStream() { + private val progressBar: ProgressBar +) : InputStream() { @Volatile var bytesRead: Long = 0 private set(value) { diff --git a/libraries/fileprocessing/src/main/kotlin/de/itkl/fileprocessing/Resource.kt b/libraries/fileprocessing/src/main/kotlin/de/itkl/fileprocessing/Resource.kt index ab8f79f..2d2b6b8 100644 --- a/libraries/fileprocessing/src/main/kotlin/de/itkl/fileprocessing/Resource.kt +++ b/libraries/fileprocessing/src/main/kotlin/de/itkl/fileprocessing/Resource.kt @@ -1,13 +1,8 @@ package de.itkl.fileprocessing -import de.itkl.core_api.interfaces.AbstractResource +import de.itkl.core_api.interfaces.ProgressBarFactory import de.itkl.core_api.interfaces.Resource -import io.ktor.http.* -import java.io.File import java.io.InputStream -import java.nio.file.Files -import java.nio.file.Path -import kotlin.io.path.name class ProgressResource( private val resource: Resource, diff --git a/libraries/tfidf/src/main/kotlin/de/itkl/tfidf/InverseDocumentFrequency.kt b/libraries/tfidf/src/main/kotlin/de/itkl/tfidf/InverseDocumentFrequency.kt index 854edf8..b9dd243 100644 --- a/libraries/tfidf/src/main/kotlin/de/itkl/tfidf/InverseDocumentFrequency.kt +++ b/libraries/tfidf/src/main/kotlin/de/itkl/tfidf/InverseDocumentFrequency.kt @@ -3,7 +3,7 @@ package de.itkl.tfidf import com.github.doyaaaaaken.kotlincsv.dsl.csvWriter import de.itkl.core_api.interfaces.FileProcessor import de.itkl.core_api.interfaces.Resource -import de.itkl.fileprocessing.ProgressBarFactory +import de.itkl.core_api.interfaces.ProgressBarFactory import de.itkl.textprocessing.HistogramCsvStorage import org.koin.core.component.KoinComponent import org.koin.core.component.inject diff --git a/libraries/tfidf/src/main/kotlin/de/itkl/tfidf/TerminalProgressBarFactory.kt b/libraries/tfidf/src/main/kotlin/de/itkl/tfidf/TerminalProgressBarFactory.kt index 8d31d90..9a823d3 100644 --- a/libraries/tfidf/src/main/kotlin/de/itkl/tfidf/TerminalProgressBarFactory.kt +++ b/libraries/tfidf/src/main/kotlin/de/itkl/tfidf/TerminalProgressBarFactory.kt @@ -4,8 +4,8 @@ import com.github.ajalt.mordant.animation.ProgressAnimation import com.github.ajalt.mordant.animation.progressAnimation import com.github.ajalt.mordant.terminal.Terminal import de.itkl.core_api.interfaces.Resource -import de.itkl.fileprocessing.ProgressBar -import de.itkl.fileprocessing.ProgressBarFactory +import de.itkl.core_api.interfaces.ProgressBar +import de.itkl.core_api.interfaces.ProgressBarFactory class TerminalProgressBarFactory : ProgressBarFactory { private val terminal = Terminal() diff --git a/libraries/tui/build.gradle.kts b/libraries/tui/build.gradle.kts index f65fc07..2a1e6b3 100644 --- a/libraries/tui/build.gradle.kts +++ b/libraries/tui/build.gradle.kts @@ -1,3 +1,4 @@ dependencies { api(project(":libraries:core-api")) + implementation("com.github.ajalt.mordant:mordant:2.2.0") } \ No newline at end of file diff --git a/libraries/tui/src/main/kotlin/de/itkl/tui/implementation/TerminalProgressBar.kt b/libraries/tui/src/main/kotlin/de/itkl/tui/implementation/TerminalProgressBar.kt index 5f7dfc9..283af47 100644 --- a/libraries/tui/src/main/kotlin/de/itkl/tui/implementation/TerminalProgressBar.kt +++ b/libraries/tui/src/main/kotlin/de/itkl/tui/implementation/TerminalProgressBar.kt @@ -1,4 +1,10 @@ package de.itkl.tui.implementation -class TerminalProgressBar { +import de.itkl.core_api.interfaces.ResourceReadDecorator +import java.io.InputStream + +class TerminalProgressBar : ResourceReadDecorator { + override fun decorate(length: Long, inputStream: InputStream): InputStream { + TODO("Not yet implemented") + } } \ No newline at end of file