From ce5b87c34e50ea9670df72ad206dc37c1e6139ce Mon Sep 17 00:00:00 2001 From: Katarina Date: Tue, 1 Jul 2025 12:54:56 +0200 Subject: [PATCH] Minor moddel adjustments --- .../config/model/ScrapeTargetFieldConfig.kt | 4 ++++ .../kotlin/com/rak/model/card/CardPrint.kt | 15 ++++++++----- .../kotlin/com/rak/model/set/RegionalSet.kt | 22 ------------------- .../model/transform/TransformationRegistry.kt | 2 +- .../extract/AbstractExtractionService.kt | 16 ++++++-------- 5 files changed, 22 insertions(+), 37 deletions(-) diff --git a/src/main/kotlin/com/rak/config/model/ScrapeTargetFieldConfig.kt b/src/main/kotlin/com/rak/config/model/ScrapeTargetFieldConfig.kt index 78c4cdf..6c618ea 100644 --- a/src/main/kotlin/com/rak/config/model/ScrapeTargetFieldConfig.kt +++ b/src/main/kotlin/com/rak/config/model/ScrapeTargetFieldConfig.kt @@ -1,11 +1,15 @@ package com.rak.config.model +import io.smallrye.config.WithDefault import io.smallrye.config.WithName import java.util.* interface ScrapeTargetFieldConfig : AbstractScrapeTargetFieldConfig { @WithName("type") fun getType(): String + @WithName("nullable") + @WithDefault("false") + fun isNullable(): Boolean @WithName("root") fun getRootConfig(): Optional @WithName("extractors") diff --git a/src/main/kotlin/com/rak/model/card/CardPrint.kt b/src/main/kotlin/com/rak/model/card/CardPrint.kt index a2547c9..4a9af94 100644 --- a/src/main/kotlin/com/rak/model/card/CardPrint.kt +++ b/src/main/kotlin/com/rak/model/card/CardPrint.kt @@ -1,9 +1,7 @@ package com.rak.model.card -import com.rak.model.set.RegionalSet - data class CardPrint( - val id: String, + var id: Int, val name: String, val regionalName: String? = null, val rarity: String @@ -11,10 +9,17 @@ data class CardPrint( companion object { fun fromMap(map: Map): CardPrint { + val regionalNameValue = map["regionalName"] + val regionalName = if (regionalNameValue == "") { + null + } else { + regionalNameValue + } + return CardPrint( - map["id"] ?: throw IllegalStateException("Parameter 'prefix' not found"), + map["id"]?.toInt() ?: throw IllegalStateException("Parameter 'prefix' not found"), map["name"] ?: throw IllegalStateException("Parameter 'region' not found"), - map["regionalName"], + regionalName, map["rarity"] ?: throw IllegalStateException("Parameter 'regionCode' not found"), ) } diff --git a/src/main/kotlin/com/rak/model/set/RegionalSet.kt b/src/main/kotlin/com/rak/model/set/RegionalSet.kt index bfe04f5..506f124 100644 --- a/src/main/kotlin/com/rak/model/set/RegionalSet.kt +++ b/src/main/kotlin/com/rak/model/set/RegionalSet.kt @@ -22,28 +22,6 @@ data class RegionalSet( ) } - fun flattenFromMemberLists( - idList: List, - languageList: List, - regionKeyAliasList: List, - ): MutableSet { - if (idList.size != languageList.size && idList.size != regionKeyAliasList.size) { - throw IllegalArgumentException("Lists have to be the same size") - } - - val regionalSetList: MutableSet = mutableSetOf() - for (index in 0..idList.size - 1) { - regionalSetList.add(RegionalSet( - prefix = idList[index], - region = languageList[index], - regionCode = regionKeyAliasList[index], - listOf(), - numberOfCards = -1 - )) - } - return regionalSetList - } - } } \ No newline at end of file diff --git a/src/main/kotlin/com/rak/model/transform/TransformationRegistry.kt b/src/main/kotlin/com/rak/model/transform/TransformationRegistry.kt index 5c5adee..2ab585b 100644 --- a/src/main/kotlin/com/rak/model/transform/TransformationRegistry.kt +++ b/src/main/kotlin/com/rak/model/transform/TransformationRegistry.kt @@ -11,7 +11,7 @@ class TransformationRegistry { init { register("trim") { it.trim() } - register("removeInnerQuotes") { it.replace("\"", "") } + register("removeInnerQuotes") { it.replace(Regex("^\""), "").replace(Regex("\"$"), "") } register("replace") { input, parameters -> require(parameters.size == 1 || parameters.size == 2) { "'replace' requires either 1 or 2 parameters" diff --git a/src/main/kotlin/com/rak/service/extract/AbstractExtractionService.kt b/src/main/kotlin/com/rak/service/extract/AbstractExtractionService.kt index 8e3bbbf..8f6b5b2 100644 --- a/src/main/kotlin/com/rak/service/extract/AbstractExtractionService.kt +++ b/src/main/kotlin/com/rak/service/extract/AbstractExtractionService.kt @@ -130,7 +130,11 @@ abstract class AbstractExtractionService { val extractedText = extractTextFromElementByTargetFieldConfig( rootElement, fieldConfig - ) ?: throw ElementNotFoundException("Could not find element for '$identifier'") + ) ?: if (fieldConfig.isNullable()) { + "" + } else { + throw ElementNotFoundException("Could not find element for '$identifier'") + } val mapToModify: MutableMap = try { resultList[index] @@ -224,14 +228,8 @@ abstract class AbstractExtractionService { } catch (ex: RuntimeException) { when (ex) { is ElementNotFoundException, - is IllegalStateException -> { -// if (extractionConfig.getFallbackConfiguration().isPresent) { -// intermediateResult = extractionConfig.getFallbackConfiguration().get().getOptionalDefaultValue() -// } else { -// throw ex -// } - } - is ValueValidationException -> Log.warn(ex.message) + is IllegalStateException, + is ValueValidationException -> Log.debug(ex.message) else -> throw ex } }