From c6a162c40d0acd22accd305a6a3f1bf016cb170a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89lise=20Rubio?= <30841868+Lysoun@users.noreply.github.com> Date: Tue, 12 Jul 2022 16:58:41 +0200 Subject: [PATCH] :recycle: Extract report domain to module This extraction will be useful for creation of monitoring module, which will only depend on this domain module --- .../db/DatamaintainCliUpdateDbCommand.kt | 1 + .../app/update/db/MarkOneScriptAsExecuted.kt | 2 +- .../cli/app/update/db/UpdateDb.kt | 2 +- .../datamaintain/cli/update/db/UpdateDb.kt | 0 .../update/db/MarkOneScriptAsExecutedTest.kt | 2 +- .../cli/app/update/db/UpdateDbTest.kt | 4 +- modules/core/build.gradle.kts | 2 + .../main/kotlin/datamaintain/core/Context.kt | 3 +- .../kotlin/datamaintain/core/Datamaintain.kt | 2 +- .../core/config/DatamaintainConfig.kt | 4 +- .../core/db/driver/DatamaintainDriver.kt | 6 +- .../core/exception/DatamaintainException.kt | 4 +- .../DatamaintainScriptExecutionException.kt | 2 +- .../kotlin/datamaintain/core/report/Report.kt | 120 ++++++------------ .../datamaintain/core/script/FileScript.kt | 5 +- .../datamaintain/core/script/TagMatcher.kt | 1 + .../kotlin/datamaintain/core/step/Filter.kt | 6 +- .../kotlin/datamaintain/core/step/Pruner.kt | 4 +- .../kotlin/datamaintain/core/step/Scanner.kt | 4 +- .../datamaintain/core/step/check/Checker.kt | 6 +- .../rules/contracts/FullContextCheckRule.kt | 6 +- .../check/rules/contracts/ScriptCheckRule.kt | 4 +- .../contracts/ScriptWithContextCheckRule.kt | 6 +- .../implementations/AlwaysFailedCheck.kt | 4 +- .../implementations/AlwaysSucceedCheck.kt | 4 +- .../SameScriptsAsExecutedCheck.kt | 6 +- .../core/step/executor/Execution.kt | 2 +- .../core/step/executor/Executor.kt | 41 +++++- ...eparatorFreeAlphabeticalSortingStrategy.kt | 2 +- .../datamaintain/core/step/sort/Sorter.kt | 4 +- .../core/step/sort/SortingStrategy.kt | 2 +- .../test/kotlin/datamaintain/FilterTest.kt | 4 +- .../core/DatamaintainConfigTest.kt | 4 +- .../core/db/driver/FakeDatamaintainDriver.kt | 4 +- .../datamaintain/core/report/ReportTest.kt | 1 + .../core/script/InMemoryScript.kt | 3 + .../core/script/TagMatcherTest.kt | 1 + .../datamaintain/core/script/TagTest.kt | 1 + .../datamaintain/core/step/ExecutorTest.kt | 13 +- .../datamaintain/core/step/PrunerTest.kt | 4 + .../datamaintain/core/step/ScannerTest.kt | 4 +- .../SameScriptsAsExecutedCheckTest.kt | 7 +- ...atorFreeAlphabeticalSortingStrategyTest.kt | 8 +- .../test/DatamaintainConfigBuildingUtils.kt | 4 +- .../datamaintain/test/ScriptBuildingUtils.kt | 4 +- .../ScriptWithContentWithfixedHashCode.kt | 6 +- .../test/TestScriptWithContent.kt | 6 +- modules/domain-report/build.gradle.kts | 3 + .../kotlin/datamaintain/domain}/CheckRule.kt | 2 +- .../datamaintain/domain/report/Report.kt | 53 ++++++++ .../domain}/script/ExecutionStatus.kt | 2 +- .../datamaintain/domain}/script/Script.kt | 30 +---- .../domain}/script/ScriptAction.kt | 2 +- .../kotlin/datamaintain/domain}/script/Tag.kt | 2 +- .../datamaintain/db/driver/jdbc/JdbcDriver.kt | 2 +- .../db/driver/jdbc/InMemoryScript.kt | 6 +- .../db/driver/jdbc/JdbcDriverTest.kt | 6 +- .../driver/mongo/ExecutedScriptJsonParser.kt | 4 +- .../mongo/LightExecutedScriptJsonParser.kt | 2 +- .../db/driver/mongo/MongoDriver.kt | 6 +- .../driver/mongo/serialization/KJsonParser.kt | 8 +- .../db/driver/mongo/InMemoryScript.kt | 6 +- .../db/driver/mongo/MongoDriverTest.kt | 9 +- settings.gradle.kts | 1 + 64 files changed, 262 insertions(+), 217 deletions(-) create mode 100644 modules/cli/src/main/kotlin/datamaintain/cli/update/db/UpdateDb.kt create mode 100644 modules/domain-report/build.gradle.kts rename modules/{core/src/main/kotlin/datamaintain/core/step/check/rules => domain-report/src/main/kotlin/datamaintain/domain}/CheckRule.kt (81%) create mode 100644 modules/domain-report/src/main/kotlin/datamaintain/domain/report/Report.kt rename modules/{core/src/main/kotlin/datamaintain/core => domain-report/src/main/kotlin/datamaintain/domain}/script/ExecutionStatus.kt (56%) rename modules/{core/src/main/kotlin/datamaintain/core => domain-report/src/main/kotlin/datamaintain/domain}/script/Script.kt (80%) rename modules/{core/src/main/kotlin/datamaintain/core => domain-report/src/main/kotlin/datamaintain/domain}/script/ScriptAction.kt (95%) rename modules/{core/src/main/kotlin/datamaintain/core => domain-report/src/main/kotlin/datamaintain/domain}/script/Tag.kt (93%) diff --git a/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/DatamaintainCliUpdateDbCommand.kt b/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/DatamaintainCliUpdateDbCommand.kt index dacf8133..402fc8f4 100644 --- a/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/DatamaintainCliUpdateDbCommand.kt +++ b/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/DatamaintainCliUpdateDbCommand.kt @@ -4,6 +4,7 @@ import datamaintain.cli.app.DatamaintainCliCommand import datamaintain.core.Datamaintain import datamaintain.core.config.DatamaintainConfig import datamaintain.core.exception.DatamaintainException +import datamaintain.core.report.print import kotlin.system.exitProcess fun defaultUpdateDbRunner(config: DatamaintainConfig) { diff --git a/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/MarkOneScriptAsExecuted.kt b/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/MarkOneScriptAsExecuted.kt index f15df50f..6797c523 100644 --- a/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/MarkOneScriptAsExecuted.kt +++ b/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/MarkOneScriptAsExecuted.kt @@ -5,7 +5,7 @@ import com.github.ajalt.clikt.parameters.options.option import datamaintain.cli.app.utils.detailedOption import datamaintain.core.config.CoreConfigKey import datamaintain.core.config.DatamaintainConfig -import datamaintain.core.script.ScriptAction +import datamaintain.domain.script.ScriptAction import java.util.* class MarkOneScriptAsExecuted(runner: (DatamaintainConfig) -> Unit = ::defaultUpdateDbRunner) : diff --git a/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/UpdateDb.kt b/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/UpdateDb.kt index 07850106..c59cbf46 100644 --- a/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/UpdateDb.kt +++ b/modules/cli/src/main/kotlin/datamaintain/cli/app/update/db/UpdateDb.kt @@ -9,11 +9,11 @@ import datamaintain.cli.app.utils.detailedOption import datamaintain.core.config.CoreConfigKey import datamaintain.core.config.DatamaintainConfig import datamaintain.core.db.driver.DriverConfigKey -import datamaintain.core.script.ScriptAction import datamaintain.core.step.check.allCheckRuleNames import datamaintain.core.step.executor.ExecutionMode import datamaintain.db.driver.mongo.MongoConfigKey import datamaintain.db.driver.mongo.MongoShell +import datamaintain.domain.script.ScriptAction import java.util.* class UpdateDb(runner: (DatamaintainConfig) -> Unit = ::defaultUpdateDbRunner) : DatamaintainCliUpdateDbCommand( diff --git a/modules/cli/src/main/kotlin/datamaintain/cli/update/db/UpdateDb.kt b/modules/cli/src/main/kotlin/datamaintain/cli/update/db/UpdateDb.kt new file mode 100644 index 00000000..e69de29b diff --git a/modules/cli/src/test/kotlin/datamaintain/cli/app/update/db/MarkOneScriptAsExecutedTest.kt b/modules/cli/src/test/kotlin/datamaintain/cli/app/update/db/MarkOneScriptAsExecutedTest.kt index 53b4917a..b91cbf72 100644 --- a/modules/cli/src/test/kotlin/datamaintain/cli/app/update/db/MarkOneScriptAsExecutedTest.kt +++ b/modules/cli/src/test/kotlin/datamaintain/cli/app/update/db/MarkOneScriptAsExecutedTest.kt @@ -1,7 +1,7 @@ package datamaintain.cli.app.update.db import datamaintain.cli.app.BaseCliTest -import datamaintain.core.script.ScriptAction +import datamaintain.domain.script.ScriptAction import org.junit.jupiter.api.Nested import org.junit.jupiter.api.Test import strikt.api.expectThat diff --git a/modules/cli/src/test/kotlin/datamaintain/cli/app/update/db/UpdateDbTest.kt b/modules/cli/src/test/kotlin/datamaintain/cli/app/update/db/UpdateDbTest.kt index 382e8872..009ace68 100644 --- a/modules/cli/src/test/kotlin/datamaintain/cli/app/update/db/UpdateDbTest.kt +++ b/modules/cli/src/test/kotlin/datamaintain/cli/app/update/db/UpdateDbTest.kt @@ -2,12 +2,12 @@ package datamaintain.cli.app.update.db import datamaintain.cli.app.BaseCliTest import datamaintain.core.config.DatamaintainConfig -import datamaintain.core.script.ScriptAction -import datamaintain.core.script.Tag import datamaintain.core.script.TagMatcher import datamaintain.core.step.check.rules.implementations.SameScriptsAsExecutedCheck import datamaintain.db.driver.mongo.MongoDriverConfig import datamaintain.db.driver.mongo.MongoShell +import datamaintain.domain.script.ScriptAction +import datamaintain.domain.script.Tag import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.Nested import org.junit.jupiter.api.Test diff --git a/modules/core/build.gradle.kts b/modules/core/build.gradle.kts index 5e7a8d94..fdfb7429 100644 --- a/modules/core/build.gradle.kts +++ b/modules/core/build.gradle.kts @@ -24,6 +24,8 @@ publishing { } dependencies { + api(project(":modules:domain-report")) + "testImplementation"("ch.qos.logback:logback-classic:${Versions.logbackClassic}") } diff --git a/modules/core/src/main/kotlin/datamaintain/core/Context.kt b/modules/core/src/main/kotlin/datamaintain/core/Context.kt index a5bab392..bda52b0f 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/Context.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/Context.kt @@ -2,8 +2,7 @@ package datamaintain.core import datamaintain.core.config.DatamaintainConfig import datamaintain.core.db.driver.DatamaintainDriver -import datamaintain.core.report.Report -import datamaintain.core.report.ReportBuilder +import datamaintain.domain.report.ReportBuilder data class Context( val config: DatamaintainConfig, diff --git a/modules/core/src/main/kotlin/datamaintain/core/Datamaintain.kt b/modules/core/src/main/kotlin/datamaintain/core/Datamaintain.kt index 631e0e48..c506c214 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/Datamaintain.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/Datamaintain.kt @@ -1,7 +1,6 @@ package datamaintain.core import datamaintain.core.config.DatamaintainConfig -import datamaintain.core.report.Report import datamaintain.core.step.Filter import datamaintain.core.step.Pruner import datamaintain.core.step.Scanner @@ -9,6 +8,7 @@ import datamaintain.core.step.check.Checker import datamaintain.core.step.check.CheckerData import datamaintain.core.step.executor.Executor import datamaintain.core.step.sort.Sorter +import datamaintain.domain.report.Report import mu.KotlinLogging private val logger = KotlinLogging.logger {} diff --git a/modules/core/src/main/kotlin/datamaintain/core/config/DatamaintainConfig.kt b/modules/core/src/main/kotlin/datamaintain/core/config/DatamaintainConfig.kt index 2fc25113..7b471a94 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/config/DatamaintainConfig.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/config/DatamaintainConfig.kt @@ -4,10 +4,10 @@ import datamaintain.core.config.ConfigKey.Companion.overrideBySystemProperties import datamaintain.core.config.CoreConfigKey.* import datamaintain.core.db.driver.DatamaintainDriverConfig import datamaintain.core.exception.DatamaintainBuilderMandatoryException -import datamaintain.core.script.ScriptAction -import datamaintain.core.script.Tag import datamaintain.core.script.TagMatcher import datamaintain.core.step.executor.ExecutionMode +import datamaintain.domain.script.ScriptAction +import datamaintain.domain.script.Tag import mu.KotlinLogging import java.io.File import java.io.InputStream diff --git a/modules/core/src/main/kotlin/datamaintain/core/db/driver/DatamaintainDriver.kt b/modules/core/src/main/kotlin/datamaintain/core/db/driver/DatamaintainDriver.kt index 04e51200..1fbee8d9 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/db/driver/DatamaintainDriver.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/db/driver/DatamaintainDriver.kt @@ -1,9 +1,9 @@ package datamaintain.core.db.driver -import datamaintain.core.script.ExecutedScript -import datamaintain.core.script.LightExecutedScript -import datamaintain.core.script.ScriptWithContent import datamaintain.core.step.executor.Execution +import datamaintain.domain.script.ExecutedScript +import datamaintain.domain.script.LightExecutedScript +import datamaintain.domain.script.ScriptWithContent abstract class DatamaintainDriver(protected val uri: String) { diff --git a/modules/core/src/main/kotlin/datamaintain/core/exception/DatamaintainException.kt b/modules/core/src/main/kotlin/datamaintain/core/exception/DatamaintainException.kt index 6c633298..d5e4d855 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/exception/DatamaintainException.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/exception/DatamaintainException.kt @@ -1,8 +1,8 @@ package datamaintain.core.exception -import datamaintain.core.report.Report -import datamaintain.core.report.ReportBuilder import datamaintain.core.step.Step +import datamaintain.domain.report.Report +import datamaintain.domain.report.ReportBuilder class DatamaintainException( override val message: String, diff --git a/modules/core/src/main/kotlin/datamaintain/core/exception/DatamaintainScriptExecutionException.kt b/modules/core/src/main/kotlin/datamaintain/core/exception/DatamaintainScriptExecutionException.kt index 9bbc7008..998aa9b9 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/exception/DatamaintainScriptExecutionException.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/exception/DatamaintainScriptExecutionException.kt @@ -1,6 +1,6 @@ package datamaintain.core.exception -import datamaintain.core.script.ExecutedScript +import datamaintain.domain.script.ExecutedScript class DatamaintainScriptExecutionException ( executedScript: ExecutedScript diff --git a/modules/core/src/main/kotlin/datamaintain/core/report/Report.kt b/modules/core/src/main/kotlin/datamaintain/core/report/Report.kt index 10745f53..01c4229c 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/report/Report.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/report/Report.kt @@ -1,102 +1,60 @@ package datamaintain.core.report -import datamaintain.core.script.ReportExecutedScript -import datamaintain.core.script.ScriptWithContent import datamaintain.core.step.Step -import datamaintain.core.step.check.rules.CheckRule +import datamaintain.domain.report.Report import mu.KotlinLogging private val logger = KotlinLogging.logger {} -class Report @JvmOverloads constructor( - val scannedScripts: List = listOf(), - val filteredScripts: List = listOf(), - val prunedScripts: List = listOf(), - val executedScripts: List = listOf(), - val validatedCheckRules: List = listOf() -) { - fun print(verbose: Boolean, porcelain: Boolean = false) { - val stepWithMaxExecutionOrder: Step = Step.values().asSequence().maxByOrNull { step -> step.executionOrder }!! - print(verbose, porcelain, stepWithMaxExecutionOrder) - } +fun Report.print(verbose: Boolean, porcelain: Boolean = false) { + val stepWithMaxExecutionOrder: Step = Step.values().asSequence().maxByOrNull { step -> step.executionOrder }!! + print(verbose, porcelain, stepWithMaxExecutionOrder) +} - fun print(verbose: Boolean, porcelain: Boolean, maxStepToShow: Step) { - if (!porcelain) { - logger.info { "Summary => " } +fun Report.print(verbose: Boolean, porcelain: Boolean, maxStepToShow: Step) { + if (!porcelain) { + logger.info { "Summary => " } - // Scanner - logger.info { "- ${scannedScripts.size} files scanned" } - if (verbose) { - scannedScripts.forEach {logger.info { " -> ${it.name}" }} - } + // Scanner + logger.info { "- ${scannedScripts.size} files scanned" } + if (verbose) { + scannedScripts.forEach { logger.info { " -> ${it.name}" } } + } - if (Step.FILTER.isSameStepOrExecutedBefore(maxStepToShow)) { - logger.info { "- ${filteredScripts.size} files filtered" } - if (verbose) { - filteredScripts.forEach { logger.info { " -> ${it.name}" } } - } + if (Step.FILTER.isSameStepOrExecutedBefore(maxStepToShow)) { + logger.info { "- ${filteredScripts.size} files filtered" } + if (verbose) { + filteredScripts.forEach { logger.info { " -> ${it.name}" } } } + } - if (Step.PRUNE.isSameStepOrExecutedBefore(maxStepToShow)) { - logger.info { "- ${prunedScripts.size} files pruned" } - if (verbose) { - prunedScripts.forEach { logger.info { " -> ${it.name}" } } - } + if (Step.PRUNE.isSameStepOrExecutedBefore(maxStepToShow)) { + logger.info { "- ${prunedScripts.size} files pruned" } + if (verbose) { + prunedScripts.forEach { logger.info { " -> ${it.name}" } } } + } - if (Step.CHECK.isSameStepOrExecutedBefore(maxStepToShow)) { - logger.info { "- ${validatedCheckRules.size} check rules validated" } - if (verbose) { - validatedCheckRules.forEach { logger.info { " -> ${it.getName()}" } } - } + if (Step.CHECK.isSameStepOrExecutedBefore(maxStepToShow)) { + logger.info { "- ${validatedCheckRules.size} check rules validated" } + if (verbose) { + validatedCheckRules.forEach { logger.info { " -> ${it.getName()}" } } } } + } - if (Step.EXECUTE.isSameStepOrExecutedBefore(maxStepToShow)) { - if (!porcelain) { logger.info { "- ${executedScripts.size} files executed" } } - executedScripts.forEach { - logger.info { - if (!porcelain) { " -> ${it.name}" } else { "${it.porcelainName}" } + if (Step.EXECUTE.isSameStepOrExecutedBefore(maxStepToShow)) { + if (!porcelain) { + logger.info { "- ${executedScripts.size} files executed" } + } + executedScripts.forEach { + logger.info { + if (!porcelain) { + " -> ${it.name}" + } else { + "${it.porcelainName}" } } } } -} - - -class ReportBuilder @JvmOverloads constructor( - private val scannedScripts: MutableList = mutableListOf(), - private val filteredScripts: MutableList = mutableListOf(), - private val prunedScripts: MutableList = mutableListOf(), - private val executedScripts: MutableList = mutableListOf(), - private val validatedCheckRules: MutableList = mutableListOf() -) { - - fun addScannedScript(script: ScriptWithContent) { - scannedScripts.add(script) - } - - fun addFilteredScript(script: ScriptWithContent) { - filteredScripts.add(script) - } - - fun addPrunedScript(script: ScriptWithContent) { - prunedScripts.add(script) - } - - fun addReportExecutedScript(script: ReportExecutedScript) { - executedScripts.add(script) - } - - fun addValidatedCheckRules(checkRule: CheckRule) { - validatedCheckRules.add(checkRule) - } - - fun toReport() = Report( - scannedScripts, - filteredScripts, - prunedScripts, - executedScripts, - validatedCheckRules - ) -} +} \ No newline at end of file diff --git a/modules/core/src/main/kotlin/datamaintain/core/script/FileScript.kt b/modules/core/src/main/kotlin/datamaintain/core/script/FileScript.kt index cedd4067..1869f935 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/script/FileScript.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/script/FileScript.kt @@ -1,10 +1,13 @@ package datamaintain.core.script -import java.math.BigInteger import datamaintain.core.config.DatamaintainConfig import datamaintain.core.exception.DatamaintainFileIdentifierPatternException import datamaintain.core.util.extractRelativePath +import datamaintain.domain.script.ScriptAction +import datamaintain.domain.script.ScriptWithContent +import datamaintain.domain.script.Tag import java.io.File +import java.math.BigInteger import java.nio.file.Path import java.security.MessageDigest diff --git a/modules/core/src/main/kotlin/datamaintain/core/script/TagMatcher.kt b/modules/core/src/main/kotlin/datamaintain/core/script/TagMatcher.kt index 252e2b66..ecd32563 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/script/TagMatcher.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/script/TagMatcher.kt @@ -1,6 +1,7 @@ package datamaintain.core.script import datamaintain.core.exception.DatamaintainBaseException +import datamaintain.domain.script.Tag import java.nio.file.FileSystems import java.nio.file.Path import java.nio.file.PathMatcher diff --git a/modules/core/src/main/kotlin/datamaintain/core/step/Filter.kt b/modules/core/src/main/kotlin/datamaintain/core/step/Filter.kt index 36c84da0..373203a2 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/step/Filter.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/step/Filter.kt @@ -3,7 +3,7 @@ package datamaintain.core.step import datamaintain.core.Context import datamaintain.core.exception.DatamaintainBaseException import datamaintain.core.exception.DatamaintainException -import datamaintain.core.script.ScriptWithContent +import datamaintain.domain.script.ScriptWithContent import mu.KotlinLogging private val logger = KotlinLogging.logger {} @@ -11,7 +11,9 @@ private val logger = KotlinLogging.logger {} class Filter(private val context: Context) { fun filter(scripts: List): List { try { - if (!context.config.porcelain) { logger.info { "Filter scripts..." } } + if (!context.config.porcelain) { + logger.info { "Filter scripts..." } + } var filteredScripts = scripts if (context.config.whitelistedTags.isNotEmpty()) { diff --git a/modules/core/src/main/kotlin/datamaintain/core/step/Pruner.kt b/modules/core/src/main/kotlin/datamaintain/core/step/Pruner.kt index b71b10dc..b4416864 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/step/Pruner.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/step/Pruner.kt @@ -3,8 +3,8 @@ package datamaintain.core.step import datamaintain.core.Context import datamaintain.core.exception.DatamaintainBaseException import datamaintain.core.exception.DatamaintainException -import datamaintain.core.script.ScriptAction -import datamaintain.core.script.ScriptWithContent +import datamaintain.domain.script.ScriptAction +import datamaintain.domain.script.ScriptWithContent import mu.KotlinLogging private val logger = KotlinLogging.logger {} diff --git a/modules/core/src/main/kotlin/datamaintain/core/step/Scanner.kt b/modules/core/src/main/kotlin/datamaintain/core/step/Scanner.kt index 4668b138..8ccb48b9 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/step/Scanner.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/step/Scanner.kt @@ -5,8 +5,8 @@ import datamaintain.core.config.DatamaintainConfig import datamaintain.core.exception.DatamaintainBaseException import datamaintain.core.exception.DatamaintainException import datamaintain.core.script.FileScript -import datamaintain.core.script.ScriptWithContent -import datamaintain.core.script.Tag +import datamaintain.domain.script.ScriptWithContent +import datamaintain.domain.script.Tag import mu.KotlinLogging import java.io.File import java.nio.file.Path diff --git a/modules/core/src/main/kotlin/datamaintain/core/step/check/Checker.kt b/modules/core/src/main/kotlin/datamaintain/core/step/check/Checker.kt index fae57085..fdf905d6 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/step/check/Checker.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/step/check/Checker.kt @@ -4,16 +4,16 @@ import datamaintain.core.Context import datamaintain.core.exception.DatamaintainBaseException import datamaintain.core.exception.DatamaintainCheckRuleNotFoundException import datamaintain.core.exception.DatamaintainException -import datamaintain.core.script.ScriptWithContent import datamaintain.core.step.Step -import datamaintain.core.step.check.rules.CheckRule -import datamaintain.core.step.check.rules.ScriptType import datamaintain.core.step.check.rules.contracts.FullContextCheckRule import datamaintain.core.step.check.rules.contracts.ScriptCheckRule import datamaintain.core.step.check.rules.contracts.ScriptWithContextCheckRule import datamaintain.core.step.check.rules.implementations.AlwaysFailedCheck import datamaintain.core.step.check.rules.implementations.AlwaysSucceedCheck import datamaintain.core.step.check.rules.implementations.SameScriptsAsExecutedCheck +import datamaintain.domain.CheckRule +import datamaintain.domain.ScriptType +import datamaintain.domain.script.ScriptWithContent import mu.KotlinLogging private val logger = KotlinLogging.logger {} diff --git a/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/contracts/FullContextCheckRule.kt b/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/contracts/FullContextCheckRule.kt index 0c221f58..8b77ba5b 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/contracts/FullContextCheckRule.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/contracts/FullContextCheckRule.kt @@ -1,9 +1,9 @@ package datamaintain.core.step.check.rules.contracts import datamaintain.core.exception.DatamaintainCheckException -import datamaintain.core.script.LightExecutedScript -import datamaintain.core.script.ScriptWithContent -import datamaintain.core.step.check.rules.CheckRule +import datamaintain.domain.CheckRule +import datamaintain.domain.script.LightExecutedScript +import datamaintain.domain.script.ScriptWithContent abstract class FullContextCheckRule( val executedScripts: Sequence diff --git a/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/contracts/ScriptCheckRule.kt b/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/contracts/ScriptCheckRule.kt index 0483ce08..8215b653 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/contracts/ScriptCheckRule.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/contracts/ScriptCheckRule.kt @@ -1,8 +1,8 @@ package datamaintain.core.step.check.rules.contracts import datamaintain.core.exception.DatamaintainCheckException -import datamaintain.core.script.ScriptWithContent -import datamaintain.core.step.check.rules.CheckRule +import datamaintain.domain.CheckRule +import datamaintain.domain.script.ScriptWithContent abstract class ScriptCheckRule: CheckRule { /** diff --git a/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/contracts/ScriptWithContextCheckRule.kt b/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/contracts/ScriptWithContextCheckRule.kt index bb5b80c6..05c18ea8 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/contracts/ScriptWithContextCheckRule.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/contracts/ScriptWithContextCheckRule.kt @@ -1,9 +1,9 @@ package datamaintain.core.step.check.rules.contracts import datamaintain.core.exception.DatamaintainCheckException -import datamaintain.core.script.ExecutedScript -import datamaintain.core.script.ScriptWithContent -import datamaintain.core.step.check.rules.CheckRule +import datamaintain.domain.CheckRule +import datamaintain.domain.script.ExecutedScript +import datamaintain.domain.script.ScriptWithContent abstract class ScriptWithContextCheckRule( executedScripts: Sequence diff --git a/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/implementations/AlwaysFailedCheck.kt b/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/implementations/AlwaysFailedCheck.kt index 398f1d59..c16fe65a 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/implementations/AlwaysFailedCheck.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/implementations/AlwaysFailedCheck.kt @@ -1,9 +1,9 @@ package datamaintain.core.step.check.rules.implementations import datamaintain.core.exception.DatamaintainCheckException -import datamaintain.core.script.ScriptWithContent -import datamaintain.core.step.check.rules.ScriptType import datamaintain.core.step.check.rules.contracts.ScriptCheckRule +import datamaintain.domain.ScriptType +import datamaintain.domain.script.ScriptWithContent class AlwaysFailedCheck: ScriptCheckRule() { override fun check(script: ScriptWithContent) { diff --git a/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/implementations/AlwaysSucceedCheck.kt b/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/implementations/AlwaysSucceedCheck.kt index ce84b4a4..1ddd0bf8 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/implementations/AlwaysSucceedCheck.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/implementations/AlwaysSucceedCheck.kt @@ -1,8 +1,8 @@ package datamaintain.core.step.check.rules.implementations -import datamaintain.core.script.ScriptWithContent -import datamaintain.core.step.check.rules.ScriptType import datamaintain.core.step.check.rules.contracts.ScriptCheckRule +import datamaintain.domain.ScriptType +import datamaintain.domain.script.ScriptWithContent class AlwaysSucceedCheck: ScriptCheckRule() { override fun check(script: ScriptWithContent) { diff --git a/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/implementations/SameScriptsAsExecutedCheck.kt b/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/implementations/SameScriptsAsExecutedCheck.kt index 1d2a42dc..de17abcc 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/implementations/SameScriptsAsExecutedCheck.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/implementations/SameScriptsAsExecutedCheck.kt @@ -1,10 +1,10 @@ package datamaintain.core.step.check.rules.implementations import datamaintain.core.exception.DatamaintainCheckException -import datamaintain.core.script.LightExecutedScript -import datamaintain.core.script.ScriptWithContent -import datamaintain.core.step.check.rules.ScriptType import datamaintain.core.step.check.rules.contracts.FullContextCheckRule +import datamaintain.domain.ScriptType +import datamaintain.domain.script.LightExecutedScript +import datamaintain.domain.script.ScriptWithContent class SameScriptsAsExecutedCheck( executedScripts: Sequence diff --git a/modules/core/src/main/kotlin/datamaintain/core/step/executor/Execution.kt b/modules/core/src/main/kotlin/datamaintain/core/step/executor/Execution.kt index 7dde99be..5a69257e 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/step/executor/Execution.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/step/executor/Execution.kt @@ -1,5 +1,5 @@ package datamaintain.core.step.executor -import datamaintain.core.script.ExecutionStatus +import datamaintain.domain.script.ExecutionStatus data class Execution (val executionStatus: ExecutionStatus, val executionOutput: String? = null) \ No newline at end of file diff --git a/modules/core/src/main/kotlin/datamaintain/core/step/executor/Executor.kt b/modules/core/src/main/kotlin/datamaintain/core/step/executor/Executor.kt index a4d28b8a..08768d85 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/step/executor/Executor.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/step/executor/Executor.kt @@ -4,9 +4,9 @@ import datamaintain.core.Context import datamaintain.core.exception.DatamaintainBaseException import datamaintain.core.exception.DatamaintainException import datamaintain.core.exception.DatamaintainScriptExecutionException -import datamaintain.core.report.Report -import datamaintain.core.script.* import datamaintain.core.step.Step +import datamaintain.domain.report.Report +import datamaintain.domain.script.* import datamaintain.core.util.exception.DatamaintainQueryException import mu.KotlinLogging import kotlin.system.measureTimeMillis @@ -61,7 +61,7 @@ class Executor(private val context: Context) { execution = context.dbDriver.executeScript(script) } - val executedScript = ExecutedScript.build(script, execution, executionDurationInMillis, context.config.flags) + val executedScript = buildExecutedScript(script, execution, executionDurationInMillis, context.config.flags) if (executedScript.executionStatus == ExecutionStatus.OK) { markAsExecuted(executedScript) @@ -72,7 +72,7 @@ class Executor(private val context: Context) { } ScriptAction.MARK_AS_EXECUTED -> { logger.info {"start marking script ${script.name} as executed"} - val executedScript = ExecutedScript.build(script, Execution(ExecutionStatus.OK), context.config.flags) + val executedScript = buildExecutedScript(script, Execution(ExecutionStatus.OK), context.config.flags) try { markAsExecuted(executedScript) @@ -86,7 +86,7 @@ class Executor(private val context: Context) { } ScriptAction.OVERRIDE_EXECUTED -> { logger.info {"start overriding script ${script.name} execution"} - val executedScript = ExecutedScript.build(script, Execution(ExecutionStatus.OK), context.config.flags) + val executedScript = buildExecutedScript(script, Execution(ExecutionStatus.OK), context.config.flags) overrideExecuted(executedScript) if (!context.config.porcelain) { logger.info { "${executedScript.name} only marked as executed (so not executed)" } } @@ -104,7 +104,7 @@ class Executor(private val context: Context) { if (!context.config.porcelain) { logger.info { "${script.name} would have been only marked as executed (so not executed)" } } } - return ExecutedScript.simulateExecuted(script, ExecutionStatus.OK, context.config.flags) + return buildSimulatedExecutedScript(script, ExecutionStatus.OK, context.config.flags) } private fun markAsExecuted(it: ExecutedScript) { @@ -121,8 +121,35 @@ class Executor(private val context: Context) { try { context.dbDriver.overrideScript(it) } catch (e: Exception) { - if (!context.config.porcelain) { logger.error { "error during override of ${it.fullName()} " } } + if (!context.config.porcelain) { + logger.error { "error during override of ${it.fullName()} " } + } throw e } } } + +fun buildSimulatedExecutedScript(script: ScriptWithContent, executionStatus: ExecutionStatus, flags: List) = + ExecutedScript( + script.name, + script.checksum, + script.identifier, + executionStatus, + script.action, + flags = flags + ) + +fun buildExecutedScript(script: ScriptWithContent, execution: Execution, flags: List) = + buildSimulatedExecutedScript(script, execution.executionStatus, flags) + +fun buildExecutedScript(script: ScriptWithContent, execution: Execution, executionDurationInMillis: Long, flags: List) = + ExecutedScript( + script.name, + script.checksum, + script.identifier, + execution.executionStatus, + script.action, + executionDurationInMillis, + execution.executionOutput, + flags = flags + ) diff --git a/modules/core/src/main/kotlin/datamaintain/core/step/sort/ByCaseInsensitiveSeparatorFreeAlphabeticalSortingStrategy.kt b/modules/core/src/main/kotlin/datamaintain/core/step/sort/ByCaseInsensitiveSeparatorFreeAlphabeticalSortingStrategy.kt index cab64ed5..d766170f 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/step/sort/ByCaseInsensitiveSeparatorFreeAlphabeticalSortingStrategy.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/step/sort/ByCaseInsensitiveSeparatorFreeAlphabeticalSortingStrategy.kt @@ -1,6 +1,6 @@ package datamaintain.core.step.sort -import datamaintain.core.script.Script +import datamaintain.domain.script.Script import java.util.* /** diff --git a/modules/core/src/main/kotlin/datamaintain/core/step/sort/Sorter.kt b/modules/core/src/main/kotlin/datamaintain/core/step/sort/Sorter.kt index 5a10d273..018c802d 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/step/sort/Sorter.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/step/sort/Sorter.kt @@ -3,9 +3,9 @@ package datamaintain.core.step.sort import datamaintain.core.Context import datamaintain.core.exception.DatamaintainBaseException import datamaintain.core.exception.DatamaintainException -import datamaintain.core.script.Script -import datamaintain.core.script.ScriptWithContent import datamaintain.core.step.Step +import datamaintain.domain.script.Script +import datamaintain.domain.script.ScriptWithContent import mu.KotlinLogging private val logger = KotlinLogging.logger {} diff --git a/modules/core/src/main/kotlin/datamaintain/core/step/sort/SortingStrategy.kt b/modules/core/src/main/kotlin/datamaintain/core/step/sort/SortingStrategy.kt index fe151943..c4f9c68a 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/step/sort/SortingStrategy.kt +++ b/modules/core/src/main/kotlin/datamaintain/core/step/sort/SortingStrategy.kt @@ -1,6 +1,6 @@ package datamaintain.core.step.sort -import datamaintain.core.script.Script +import datamaintain.domain.script.Script abstract class SortingStrategy() { abstract fun sort(scripts: List, getter: (T) -> U): List diff --git a/modules/core/src/test/kotlin/datamaintain/FilterTest.kt b/modules/core/src/test/kotlin/datamaintain/FilterTest.kt index 3b6d661d..e9f9fae4 100644 --- a/modules/core/src/test/kotlin/datamaintain/FilterTest.kt +++ b/modules/core/src/test/kotlin/datamaintain/FilterTest.kt @@ -5,10 +5,10 @@ import datamaintain.core.config.DatamaintainConfig import datamaintain.core.db.driver.DatamaintainDriver import datamaintain.core.db.driver.FakeDriverConfig import datamaintain.core.script.FileScript -import datamaintain.core.script.ScriptAction -import datamaintain.core.script.Tag import datamaintain.core.step.Filter import datamaintain.core.step.executor.ExecutionMode +import datamaintain.domain.script.ScriptAction +import datamaintain.domain.script.Tag import io.mockk.mockk import org.junit.jupiter.api.Test import strikt.api.expectThat diff --git a/modules/core/src/test/kotlin/datamaintain/core/DatamaintainConfigTest.kt b/modules/core/src/test/kotlin/datamaintain/core/DatamaintainConfigTest.kt index e88ede9b..ebbc9857 100644 --- a/modules/core/src/test/kotlin/datamaintain/core/DatamaintainConfigTest.kt +++ b/modules/core/src/test/kotlin/datamaintain/core/DatamaintainConfigTest.kt @@ -4,10 +4,10 @@ import datamaintain.core.config.CoreConfigKey import datamaintain.core.config.DatamaintainConfig import datamaintain.core.db.driver.FakeDriverConfig import datamaintain.core.exception.DatamaintainBuilderMandatoryException -import datamaintain.core.script.ScriptAction -import datamaintain.core.script.Tag import datamaintain.core.script.TagMatcher import datamaintain.core.step.executor.ExecutionMode +import datamaintain.domain.script.ScriptAction +import datamaintain.domain.script.Tag import org.junit.jupiter.api.Nested import org.junit.jupiter.api.Test import strikt.api.expectThat diff --git a/modules/core/src/test/kotlin/datamaintain/core/db/driver/FakeDatamaintainDriver.kt b/modules/core/src/test/kotlin/datamaintain/core/db/driver/FakeDatamaintainDriver.kt index 8c97f25c..7c7c3772 100644 --- a/modules/core/src/test/kotlin/datamaintain/core/db/driver/FakeDatamaintainDriver.kt +++ b/modules/core/src/test/kotlin/datamaintain/core/db/driver/FakeDatamaintainDriver.kt @@ -1,8 +1,8 @@ package datamaintain.core.db.driver -import datamaintain.core.script.ExecutedScript -import datamaintain.core.script.ScriptWithContent import datamaintain.core.step.executor.Execution +import datamaintain.domain.script.ExecutedScript +import datamaintain.domain.script.ScriptWithContent class FakeDatamaintainDriver : DatamaintainDriver("") { diff --git a/modules/core/src/test/kotlin/datamaintain/core/report/ReportTest.kt b/modules/core/src/test/kotlin/datamaintain/core/report/ReportTest.kt index 21e2f608..f103e18b 100644 --- a/modules/core/src/test/kotlin/datamaintain/core/report/ReportTest.kt +++ b/modules/core/src/test/kotlin/datamaintain/core/report/ReportTest.kt @@ -1,6 +1,7 @@ package datamaintain.core.report import ch.qos.logback.classic.Logger +import datamaintain.domain.report.Report import datamaintain.core.step.Step import datamaintain.core.step.check.rules.implementations.AlwaysSucceedCheck import datamaintain.test.ScriptWithContentWithFixedChecksum diff --git a/modules/core/src/test/kotlin/datamaintain/core/script/InMemoryScript.kt b/modules/core/src/test/kotlin/datamaintain/core/script/InMemoryScript.kt index 3c08c0c0..ceb61fe2 100644 --- a/modules/core/src/test/kotlin/datamaintain/core/script/InMemoryScript.kt +++ b/modules/core/src/test/kotlin/datamaintain/core/script/InMemoryScript.kt @@ -1,6 +1,9 @@ package datamaintain.core.script import datamaintain.core.config.DatamaintainConfig +import datamaintain.domain.script.ScriptAction +import datamaintain.domain.script.ScriptWithContent +import datamaintain.domain.script.Tag import java.math.BigInteger import java.security.MessageDigest diff --git a/modules/core/src/test/kotlin/datamaintain/core/script/TagMatcherTest.kt b/modules/core/src/test/kotlin/datamaintain/core/script/TagMatcherTest.kt index 0954cbaf..f7d95f90 100644 --- a/modules/core/src/test/kotlin/datamaintain/core/script/TagMatcherTest.kt +++ b/modules/core/src/test/kotlin/datamaintain/core/script/TagMatcherTest.kt @@ -1,5 +1,6 @@ package datamaintain.core.script +import datamaintain.domain.script.Tag import org.junit.jupiter.api.Nested import org.junit.jupiter.api.Test import strikt.api.expectCatching diff --git a/modules/core/src/test/kotlin/datamaintain/core/script/TagTest.kt b/modules/core/src/test/kotlin/datamaintain/core/script/TagTest.kt index 1f003b75..6d131de0 100644 --- a/modules/core/src/test/kotlin/datamaintain/core/script/TagTest.kt +++ b/modules/core/src/test/kotlin/datamaintain/core/script/TagTest.kt @@ -1,5 +1,6 @@ package datamaintain.core.script +import datamaintain.domain.script.Tag import org.junit.jupiter.api.Nested import org.junit.jupiter.api.Test import java.nio.file.Paths diff --git a/modules/core/src/test/kotlin/datamaintain/core/step/ExecutorTest.kt b/modules/core/src/test/kotlin/datamaintain/core/step/ExecutorTest.kt index b3ba9250..85d818a9 100644 --- a/modules/core/src/test/kotlin/datamaintain/core/step/ExecutorTest.kt +++ b/modules/core/src/test/kotlin/datamaintain/core/step/ExecutorTest.kt @@ -6,17 +6,18 @@ import datamaintain.core.config.DatamaintainConfig import datamaintain.core.db.driver.DatamaintainDriver import datamaintain.core.db.driver.FakeDriverConfig import datamaintain.core.exception.DatamaintainException -import datamaintain.core.report.Report -import datamaintain.core.script.ExecutedScript -import datamaintain.core.script.ExecutionStatus.KO -import datamaintain.core.script.ExecutionStatus.OK import datamaintain.core.script.InMemoryScript -import datamaintain.core.script.ScriptAction import datamaintain.core.step.executor.Execution import datamaintain.core.step.executor.ExecutionMode import datamaintain.core.step.executor.Executor +import datamaintain.core.step.executor.buildExecutedScript import datamaintain.core.util.exception.DatamaintainQueryException import datamaintain.test.TestAppender +import datamaintain.domain.report.Report +import datamaintain.domain.script.ExecutedScript +import datamaintain.domain.script.ExecutionStatus.KO +import datamaintain.domain.script.ExecutionStatus.OK +import datamaintain.domain.script.ScriptAction import io.mockk.every import io.mockk.mockk import io.mockk.verify @@ -269,7 +270,7 @@ internal class ExecutorTest { script1.copy(action = ScriptAction.MARK_AS_EXECUTED) ) - val executedScript = ExecutedScript.build(scripts[0], Execution(OK), context.config.flags) + val executedScript = buildExecutedScript(scripts[0], Execution(OK), context.config.flags) // When val report: Report = executor.execute(scripts) diff --git a/modules/core/src/test/kotlin/datamaintain/core/step/PrunerTest.kt b/modules/core/src/test/kotlin/datamaintain/core/step/PrunerTest.kt index 6502369f..eeb6d8be 100644 --- a/modules/core/src/test/kotlin/datamaintain/core/step/PrunerTest.kt +++ b/modules/core/src/test/kotlin/datamaintain/core/step/PrunerTest.kt @@ -5,6 +5,10 @@ import datamaintain.core.config.DatamaintainConfig import datamaintain.core.db.driver.DatamaintainDriver import datamaintain.core.db.driver.FakeDriverConfig import datamaintain.core.script.* +import datamaintain.domain.script.ExecutedScript +import datamaintain.domain.script.ExecutionStatus +import datamaintain.domain.script.ScriptAction +import datamaintain.domain.script.Tag import io.mockk.every import io.mockk.mockk import org.junit.jupiter.api.Test diff --git a/modules/core/src/test/kotlin/datamaintain/core/step/ScannerTest.kt b/modules/core/src/test/kotlin/datamaintain/core/step/ScannerTest.kt index aa8ae12f..9a2bd8ec 100644 --- a/modules/core/src/test/kotlin/datamaintain/core/step/ScannerTest.kt +++ b/modules/core/src/test/kotlin/datamaintain/core/step/ScannerTest.kt @@ -2,9 +2,9 @@ package datamaintain.core.step import datamaintain.core.Context import datamaintain.core.db.driver.FakeDatamaintainDriver -import datamaintain.core.script.ScriptWithContent -import datamaintain.core.script.Tag import datamaintain.core.script.TagMatcher +import datamaintain.domain.script.ScriptWithContent +import datamaintain.domain.script.Tag import datamaintain.test.buildDatamaintainConfig import org.junit.jupiter.api.Nested import org.junit.jupiter.api.Test diff --git a/modules/core/src/test/kotlin/datamaintain/core/step/check/rules/implementations/SameScriptsAsExecutedCheckTest.kt b/modules/core/src/test/kotlin/datamaintain/core/step/check/rules/implementations/SameScriptsAsExecutedCheckTest.kt index 4b7c3860..21ae07c4 100644 --- a/modules/core/src/test/kotlin/datamaintain/core/step/check/rules/implementations/SameScriptsAsExecutedCheckTest.kt +++ b/modules/core/src/test/kotlin/datamaintain/core/step/check/rules/implementations/SameScriptsAsExecutedCheckTest.kt @@ -1,10 +1,9 @@ package datamaintain.core.step.check.rules.implementations import datamaintain.core.exception.DatamaintainCheckException -import datamaintain.core.exception.DatamaintainException -import datamaintain.core.script.ExecutedScript -import datamaintain.core.script.ExecutionStatus -import datamaintain.core.script.ScriptAction +import datamaintain.domain.script.ExecutedScript +import datamaintain.domain.script.ExecutionStatus +import datamaintain.domain.script.ScriptAction import datamaintain.test.ScriptWithContentWithFixedChecksum import org.junit.jupiter.api.Test import strikt.api.expectCatching diff --git a/modules/core/src/test/kotlin/datamaintain/core/step/sort/ByCaseInsensitiveSeparatorFreeAlphabeticalSortingStrategyTest.kt b/modules/core/src/test/kotlin/datamaintain/core/step/sort/ByCaseInsensitiveSeparatorFreeAlphabeticalSortingStrategyTest.kt index 225be1c1..7b9d7dc1 100644 --- a/modules/core/src/test/kotlin/datamaintain/core/step/sort/ByCaseInsensitiveSeparatorFreeAlphabeticalSortingStrategyTest.kt +++ b/modules/core/src/test/kotlin/datamaintain/core/step/sort/ByCaseInsensitiveSeparatorFreeAlphabeticalSortingStrategyTest.kt @@ -1,9 +1,9 @@ package datamaintain.core.step.sort -import datamaintain.core.script.ExecutedScript -import datamaintain.core.script.ExecutionStatus -import datamaintain.core.script.Script -import datamaintain.core.script.ScriptAction +import datamaintain.domain.script.ExecutedScript +import datamaintain.domain.script.ExecutionStatus +import datamaintain.domain.script.Script +import datamaintain.domain.script.ScriptAction import org.junit.jupiter.api.Test import strikt.api.expectThat import strikt.assertions.* diff --git a/modules/core/src/test/kotlin/datamaintain/test/DatamaintainConfigBuildingUtils.kt b/modules/core/src/test/kotlin/datamaintain/test/DatamaintainConfigBuildingUtils.kt index 0c981122..6fb1c78b 100644 --- a/modules/core/src/test/kotlin/datamaintain/test/DatamaintainConfigBuildingUtils.kt +++ b/modules/core/src/test/kotlin/datamaintain/test/DatamaintainConfigBuildingUtils.kt @@ -4,10 +4,10 @@ import datamaintain.core.config.CoreConfigKey import datamaintain.core.config.DatamaintainConfig import datamaintain.core.db.driver.DatamaintainDriverConfig import datamaintain.core.db.driver.FakeDriverConfig -import datamaintain.core.script.ScriptAction -import datamaintain.core.script.Tag import datamaintain.core.script.TagMatcher import datamaintain.core.step.executor.ExecutionMode +import datamaintain.domain.script.ScriptAction +import datamaintain.domain.script.Tag import java.nio.file.Path import java.nio.file.Paths diff --git a/modules/core/src/test/kotlin/datamaintain/test/ScriptBuildingUtils.kt b/modules/core/src/test/kotlin/datamaintain/test/ScriptBuildingUtils.kt index 8fb7b9ca..bcd80f44 100644 --- a/modules/core/src/test/kotlin/datamaintain/test/ScriptBuildingUtils.kt +++ b/modules/core/src/test/kotlin/datamaintain/test/ScriptBuildingUtils.kt @@ -1,7 +1,7 @@ package datamaintain.test -import datamaintain.core.script.ExecutionStatus -import datamaintain.core.script.ReportExecutedScript +import datamaintain.domain.script.ExecutionStatus +import datamaintain.domain.script.ReportExecutedScript fun buildReportExecutedScript(scriptName: String, porcelainName: String?) = ReportExecutedScript( diff --git a/modules/core/src/test/kotlin/datamaintain/test/ScriptWithContentWithfixedHashCode.kt b/modules/core/src/test/kotlin/datamaintain/test/ScriptWithContentWithfixedHashCode.kt index 8ccba2e0..80e41f88 100644 --- a/modules/core/src/test/kotlin/datamaintain/test/ScriptWithContentWithfixedHashCode.kt +++ b/modules/core/src/test/kotlin/datamaintain/test/ScriptWithContentWithfixedHashCode.kt @@ -1,8 +1,8 @@ package datamaintain.test -import datamaintain.core.script.ScriptAction -import datamaintain.core.script.ScriptWithContent -import datamaintain.core.script.Tag +import datamaintain.domain.script.ScriptAction +import datamaintain.domain.script.ScriptWithContent +import datamaintain.domain.script.Tag class ScriptWithContentWithFixedChecksum( override val name: String, diff --git a/modules/core/src/test/kotlin/datamaintain/test/TestScriptWithContent.kt b/modules/core/src/test/kotlin/datamaintain/test/TestScriptWithContent.kt index 5aa87a62..c747da96 100644 --- a/modules/core/src/test/kotlin/datamaintain/test/TestScriptWithContent.kt +++ b/modules/core/src/test/kotlin/datamaintain/test/TestScriptWithContent.kt @@ -1,8 +1,8 @@ package datamaintain.test -import datamaintain.core.script.ScriptAction -import datamaintain.core.script.ScriptWithContent -import datamaintain.core.script.Tag +import datamaintain.domain.script.ScriptAction +import datamaintain.domain.script.ScriptWithContent +import datamaintain.domain.script.Tag class TestScriptWithContent( override val name: String, diff --git a/modules/domain-report/build.gradle.kts b/modules/domain-report/build.gradle.kts new file mode 100644 index 00000000..3d0beb76 --- /dev/null +++ b/modules/domain-report/build.gradle.kts @@ -0,0 +1,3 @@ +plugins { + id("org.jetbrains.kotlin.jvm") +} \ No newline at end of file diff --git a/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/CheckRule.kt b/modules/domain-report/src/main/kotlin/datamaintain/domain/CheckRule.kt similarity index 81% rename from modules/core/src/main/kotlin/datamaintain/core/step/check/rules/CheckRule.kt rename to modules/domain-report/src/main/kotlin/datamaintain/domain/CheckRule.kt index b36970d4..395cb9cb 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/step/check/rules/CheckRule.kt +++ b/modules/domain-report/src/main/kotlin/datamaintain/domain/CheckRule.kt @@ -1,4 +1,4 @@ -package datamaintain.core.step.check.rules +package datamaintain.domain interface CheckRule { fun getName(): String diff --git a/modules/domain-report/src/main/kotlin/datamaintain/domain/report/Report.kt b/modules/domain-report/src/main/kotlin/datamaintain/domain/report/Report.kt new file mode 100644 index 00000000..17832cfe --- /dev/null +++ b/modules/domain-report/src/main/kotlin/datamaintain/domain/report/Report.kt @@ -0,0 +1,53 @@ +package datamaintain.domain.report + +import datamaintain.domain.CheckRule +import datamaintain.domain.script.ReportExecutedScript +import datamaintain.domain.script.ScriptWithContent + +class Report @JvmOverloads constructor( + val scannedScripts: List = listOf(), + val filteredScripts: List = listOf(), + val prunedScripts: List = listOf(), + val executedScripts: List = listOf(), + val validatedCheckRules: List = listOf() +) { + +} + + +class ReportBuilder @JvmOverloads constructor( + private val scannedScripts: MutableList = mutableListOf(), + private val filteredScripts: MutableList = mutableListOf(), + private val prunedScripts: MutableList = mutableListOf(), + private val executedScripts: MutableList = mutableListOf(), + private val validatedCheckRules: MutableList = mutableListOf() +) { + + fun addScannedScript(script: ScriptWithContent) { + scannedScripts.add(script) + } + + fun addFilteredScript(script: ScriptWithContent) { + filteredScripts.add(script) + } + + fun addPrunedScript(script: ScriptWithContent) { + prunedScripts.add(script) + } + + fun addReportExecutedScript(script: ReportExecutedScript) { + executedScripts.add(script) + } + + fun addValidatedCheckRules(checkRule: CheckRule) { + validatedCheckRules.add(checkRule) + } + + fun toReport() = Report( + scannedScripts, + filteredScripts, + prunedScripts, + executedScripts, + validatedCheckRules + ) +} diff --git a/modules/core/src/main/kotlin/datamaintain/core/script/ExecutionStatus.kt b/modules/domain-report/src/main/kotlin/datamaintain/domain/script/ExecutionStatus.kt similarity index 56% rename from modules/core/src/main/kotlin/datamaintain/core/script/ExecutionStatus.kt rename to modules/domain-report/src/main/kotlin/datamaintain/domain/script/ExecutionStatus.kt index 15204b51..e29b5da7 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/script/ExecutionStatus.kt +++ b/modules/domain-report/src/main/kotlin/datamaintain/domain/script/ExecutionStatus.kt @@ -1,4 +1,4 @@ -package datamaintain.core.script +package datamaintain.domain.script enum class ExecutionStatus { OK, diff --git a/modules/core/src/main/kotlin/datamaintain/core/script/Script.kt b/modules/domain-report/src/main/kotlin/datamaintain/domain/script/Script.kt similarity index 80% rename from modules/core/src/main/kotlin/datamaintain/core/script/Script.kt rename to modules/domain-report/src/main/kotlin/datamaintain/domain/script/Script.kt index b4af6e01..8ae492e0 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/script/Script.kt +++ b/modules/domain-report/src/main/kotlin/datamaintain/domain/script/Script.kt @@ -1,6 +1,4 @@ -package datamaintain.core.script - -import datamaintain.core.step.executor.Execution +package datamaintain.domain.script interface Script { val name: String @@ -52,32 +50,6 @@ open class ExecutedScript @JvmOverloads constructor( open val executionOutput: String? = null, open val flags: List = listOf() ) : LightExecutedScript(name, checksum, identifier) { - companion object { - fun simulateExecuted(script: ScriptWithContent, executionStatus: ExecutionStatus, flags: List) = - ExecutedScript( - script.name, - script.checksum, - script.identifier, - executionStatus, - script.action, - flags = flags - ) - - fun build(script: ScriptWithContent, execution: Execution, flags: List) = simulateExecuted(script, execution.executionStatus, flags) - - fun build(script: ScriptWithContent, execution: Execution, executionDurationInMillis: Long, flags: List) = - ExecutedScript( - script.name, - script.checksum, - script.identifier, - execution.executionStatus, - script.action, - executionDurationInMillis, - execution.executionOutput, - flags - ) - } - override fun equals(other: Any?): Boolean { if (this === other) return true if (javaClass != other?.javaClass) return false diff --git a/modules/core/src/main/kotlin/datamaintain/core/script/ScriptAction.kt b/modules/domain-report/src/main/kotlin/datamaintain/domain/script/ScriptAction.kt similarity index 95% rename from modules/core/src/main/kotlin/datamaintain/core/script/ScriptAction.kt rename to modules/domain-report/src/main/kotlin/datamaintain/domain/script/ScriptAction.kt index a0fc4b59..34dd60e5 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/script/ScriptAction.kt +++ b/modules/domain-report/src/main/kotlin/datamaintain/domain/script/ScriptAction.kt @@ -1,4 +1,4 @@ -package datamaintain.core.script +package datamaintain.domain.script enum class ScriptAction { diff --git a/modules/core/src/main/kotlin/datamaintain/core/script/Tag.kt b/modules/domain-report/src/main/kotlin/datamaintain/domain/script/Tag.kt similarity index 93% rename from modules/core/src/main/kotlin/datamaintain/core/script/Tag.kt rename to modules/domain-report/src/main/kotlin/datamaintain/domain/script/Tag.kt index 6911bfd7..c3b0ea94 100644 --- a/modules/core/src/main/kotlin/datamaintain/core/script/Tag.kt +++ b/modules/domain-report/src/main/kotlin/datamaintain/domain/script/Tag.kt @@ -1,4 +1,4 @@ -package datamaintain.core.script +package datamaintain.domain.script data class Tag( val name: String diff --git a/modules/driver-jdbc/src/main/kotlin/datamaintain/db/driver/jdbc/JdbcDriver.kt b/modules/driver-jdbc/src/main/kotlin/datamaintain/db/driver/jdbc/JdbcDriver.kt index 012a5bb0..b9ae4972 100644 --- a/modules/driver-jdbc/src/main/kotlin/datamaintain/db/driver/jdbc/JdbcDriver.kt +++ b/modules/driver-jdbc/src/main/kotlin/datamaintain/db/driver/jdbc/JdbcDriver.kt @@ -1,8 +1,8 @@ package datamaintain.db.driver.jdbc import datamaintain.core.db.driver.DatamaintainDriver -import datamaintain.core.script.* import datamaintain.core.step.executor.Execution +import datamaintain.domain.script.* import datamaintain.db.driver.jdbc.exception.JdbcQueryException import java.sql.Connection import java.sql.DriverManager diff --git a/modules/driver-jdbc/src/test/kotlin/datamaintain/db/driver/jdbc/InMemoryScript.kt b/modules/driver-jdbc/src/test/kotlin/datamaintain/db/driver/jdbc/InMemoryScript.kt index 29d547a1..4882c549 100644 --- a/modules/driver-jdbc/src/test/kotlin/datamaintain/db/driver/jdbc/InMemoryScript.kt +++ b/modules/driver-jdbc/src/test/kotlin/datamaintain/db/driver/jdbc/InMemoryScript.kt @@ -1,9 +1,9 @@ package datamaintain.db.driver.jdbc import datamaintain.core.config.DatamaintainConfig -import datamaintain.core.script.ScriptAction -import datamaintain.core.script.ScriptWithContent -import datamaintain.core.script.Tag +import datamaintain.domain.script.ScriptAction +import datamaintain.domain.script.ScriptWithContent +import datamaintain.domain.script.Tag import java.math.BigInteger import java.security.MessageDigest diff --git a/modules/driver-jdbc/src/test/kotlin/datamaintain/db/driver/jdbc/JdbcDriverTest.kt b/modules/driver-jdbc/src/test/kotlin/datamaintain/db/driver/jdbc/JdbcDriverTest.kt index cc3cb58c..cb04ba61 100644 --- a/modules/driver-jdbc/src/test/kotlin/datamaintain/db/driver/jdbc/JdbcDriverTest.kt +++ b/modules/driver-jdbc/src/test/kotlin/datamaintain/db/driver/jdbc/JdbcDriverTest.kt @@ -1,6 +1,10 @@ package datamaintain.db.driver.jdbc -import datamaintain.core.script.* +import datamaintain.core.script.FileScript +import datamaintain.domain.script.ExecutedScript +import datamaintain.domain.script.ExecutionStatus +import datamaintain.domain.script.LightExecutedScript +import datamaintain.domain.script.ScriptAction import datamaintain.db.driver.jdbc.exception.JdbcQueryException import io.mockk.every import io.mockk.spyk diff --git a/modules/driver-mongo/src/main/kotlin/datamaintain/db/driver/mongo/ExecutedScriptJsonParser.kt b/modules/driver-mongo/src/main/kotlin/datamaintain/db/driver/mongo/ExecutedScriptJsonParser.kt index abad0a9c..0462a3ad 100644 --- a/modules/driver-mongo/src/main/kotlin/datamaintain/db/driver/mongo/ExecutedScriptJsonParser.kt +++ b/modules/driver-mongo/src/main/kotlin/datamaintain/db/driver/mongo/ExecutedScriptJsonParser.kt @@ -1,8 +1,8 @@ package datamaintain.db.driver.mongo -import datamaintain.core.script.ExecutedScript +import datamaintain.domain.script.ExecutedScript interface ExecutedScriptJsonParser { // Serialize an ExecutedScript to a stringify json document - fun serializeExecutedScript(executedScript:ExecutedScript): String + fun serializeExecutedScript(executedScript: ExecutedScript): String } diff --git a/modules/driver-mongo/src/main/kotlin/datamaintain/db/driver/mongo/LightExecutedScriptJsonParser.kt b/modules/driver-mongo/src/main/kotlin/datamaintain/db/driver/mongo/LightExecutedScriptJsonParser.kt index ea12d5f8..163bf0f1 100644 --- a/modules/driver-mongo/src/main/kotlin/datamaintain/db/driver/mongo/LightExecutedScriptJsonParser.kt +++ b/modules/driver-mongo/src/main/kotlin/datamaintain/db/driver/mongo/LightExecutedScriptJsonParser.kt @@ -1,6 +1,6 @@ package datamaintain.db.driver.mongo -import datamaintain.core.script.LightExecutedScript +import datamaintain.domain.script.LightExecutedScript interface LightExecutedScriptJsonParser { // parse a stringify json array to an Array of LightExecutedScript diff --git a/modules/driver-mongo/src/main/kotlin/datamaintain/db/driver/mongo/MongoDriver.kt b/modules/driver-mongo/src/main/kotlin/datamaintain/db/driver/mongo/MongoDriver.kt index 4271adfd..2c3d1f1d 100644 --- a/modules/driver-mongo/src/main/kotlin/datamaintain/db/driver/mongo/MongoDriver.kt +++ b/modules/driver-mongo/src/main/kotlin/datamaintain/db/driver/mongo/MongoDriver.kt @@ -2,10 +2,14 @@ package datamaintain.db.driver.mongo import datamaintain.core.db.driver.DatamaintainDriver import datamaintain.core.exception.DatamaintainMongoQueryException -import datamaintain.core.script.* +import datamaintain.core.script.FileScript import datamaintain.core.step.executor.Execution import datamaintain.core.util.runProcess import datamaintain.db.driver.mongo.serialization.KJsonParser +import datamaintain.domain.script.ExecutedScript +import datamaintain.domain.script.ExecutionStatus +import datamaintain.domain.script.LightExecutedScript +import datamaintain.domain.script.ScriptWithContent import mu.KotlinLogging import java.io.InputStream import java.nio.file.Path diff --git a/modules/driver-mongo/src/main/kotlin/datamaintain/db/driver/mongo/serialization/KJsonParser.kt b/modules/driver-mongo/src/main/kotlin/datamaintain/db/driver/mongo/serialization/KJsonParser.kt index 5391e938..4b74369b 100644 --- a/modules/driver-mongo/src/main/kotlin/datamaintain/db/driver/mongo/serialization/KJsonParser.kt +++ b/modules/driver-mongo/src/main/kotlin/datamaintain/db/driver/mongo/serialization/KJsonParser.kt @@ -1,11 +1,11 @@ package datamaintain.db.driver.mongo.serialization -import datamaintain.core.script.ExecutedScript -import datamaintain.core.script.ExecutionStatus -import datamaintain.core.script.LightExecutedScript -import datamaintain.core.script.ScriptAction import datamaintain.db.driver.mongo.ExecutedScriptJsonParser import datamaintain.db.driver.mongo.LightExecutedScriptJsonParser +import datamaintain.domain.script.ExecutedScript +import datamaintain.domain.script.ExecutionStatus +import datamaintain.domain.script.LightExecutedScript +import datamaintain.domain.script.ScriptAction import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.decodeFromString diff --git a/modules/driver-mongo/src/test/kotlin/datamaintain/db/driver/mongo/InMemoryScript.kt b/modules/driver-mongo/src/test/kotlin/datamaintain/db/driver/mongo/InMemoryScript.kt index 110db1f8..cf9bd233 100644 --- a/modules/driver-mongo/src/test/kotlin/datamaintain/db/driver/mongo/InMemoryScript.kt +++ b/modules/driver-mongo/src/test/kotlin/datamaintain/db/driver/mongo/InMemoryScript.kt @@ -1,9 +1,9 @@ package datamaintain.db.driver.mongo import datamaintain.core.config.DatamaintainConfig -import datamaintain.core.script.ScriptAction -import datamaintain.core.script.ScriptWithContent -import datamaintain.core.script.Tag +import datamaintain.domain.script.ScriptAction +import datamaintain.domain.script.ScriptWithContent +import datamaintain.domain.script.Tag import java.math.BigInteger import java.security.MessageDigest diff --git a/modules/driver-mongo/src/test/kotlin/datamaintain/db/driver/mongo/MongoDriverTest.kt b/modules/driver-mongo/src/test/kotlin/datamaintain/db/driver/mongo/MongoDriverTest.kt index 92548792..3373d7e3 100644 --- a/modules/driver-mongo/src/test/kotlin/datamaintain/db/driver/mongo/MongoDriverTest.kt +++ b/modules/driver-mongo/src/test/kotlin/datamaintain/db/driver/mongo/MongoDriverTest.kt @@ -2,10 +2,15 @@ package datamaintain.db.driver.mongo import com.mongodb.client.model.Filters import datamaintain.core.exception.DatamaintainMongoQueryException -import datamaintain.core.script.* +import datamaintain.core.script.FileScript +import datamaintain.core.step.executor.buildExecutedScript import datamaintain.db.driver.mongo.serialization.ExecutedScriptDb import datamaintain.db.driver.mongo.serialization.toExecutedScriptDb import datamaintain.db.driver.mongo.test.AbstractMongoDbTest +import datamaintain.domain.script.ExecutedScript +import datamaintain.domain.script.ExecutionStatus +import datamaintain.domain.script.LightExecutedScript +import datamaintain.domain.script.ScriptAction import org.bson.Document import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.MethodSource @@ -333,7 +338,7 @@ internal class MongoDriverTest : AbstractMongoDbTest() { val execution = mongoDriver.executeScript(fileScript) // Then - expectCatching { mongoDriver.markAsExecuted(ExecutedScript.build(fileScript, execution, 0, listOf())) } + expectCatching { mongoDriver.markAsExecuted(buildExecutedScript(fileScript, execution, 0, listOf())) } .succeeded() } diff --git a/settings.gradle.kts b/settings.gradle.kts index 5992adbb..0b1a9b01 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -2,6 +2,7 @@ rootProject.name = "datamaintain" include( "modules:core", "modules:cli", + "modules:domain-report", "modules:driver-mongo", "modules:driver-jdbc", "modules:test",