From 7806821abce83aa74fb88dd04b5094311e7b50d0 Mon Sep 17 00:00:00 2001 From: cemal Date: Wed, 6 Dec 2023 10:30:10 +0100 Subject: [PATCH] BugFix importCSV --- src/main/kotlin/main/Main.kt | 58 +++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/src/main/kotlin/main/Main.kt b/src/main/kotlin/main/Main.kt index 32f196e..a8e2609 100644 --- a/src/main/kotlin/main/Main.kt +++ b/src/main/kotlin/main/Main.kt @@ -28,7 +28,6 @@ import kotlinx.serialization.json.put import java.io.File import java.io.FileWriter import java.io.IOException -import kotlinx.serialization.json.Json import kotlinx.serialization.encodeToString import kotlinx.serialization.json.JsonObject @@ -211,11 +210,11 @@ fun App() { fun exportToCSV(jsonFilePath: String, csvFilePath: String) { val glossary = readJsonFile(jsonFilePath) val csvContent = buildString { - appendLine("nom,description,contextePrincipal,contexte2,lieA,synonyme,antonyme") + appendLine("Mot;Description;Contexte principal;Contexte 2;Lié à;Synonyme;Antonyme;") glossary.forEach { entry -> appendLine( - "${entry["nom"]},${entry["description"]},${entry["contextePrincipal"]}," + - "${entry["contexte2"]},${entry["lieA"]},${entry["synonyme"]},${entry["antonyme"]}" + "${entry["nom"]};${entry["description"]};${entry["contextePrincipal"]};" + + "${entry["contexte2"]};${entry["lieA"]};${entry["synonyme"]};${entry["antonyme"]}" ) } } @@ -245,35 +244,40 @@ fun importCSV(cheminFichier: String) { val dataLines = lines.drop(1) dataLines.forEach { line -> - val values = line.split(";") - values.forEach { value -> - println(value) - } - val mot = header.zip(values).toMap().toMutableMap() - val nouveauMot = Mot( - nom = mot["Mot"]!!, - description = mot["Description"]!!, - contextePrincipal = mot["Contexte principal"]!!, - contexte2 = mot["Contexte 2"]!!, - lieA = mot["Lié à"]!!, - synonyme = mot["Synonyme"]!!, - antonyme = mot["Antonyme"]!! - ) + // Check if the line is not empty or blank + if (line.isNotBlank()) { + val values = line.replace("\r", "").replace("\n", "").split(";") - if(mot["Antonyme"] == "\r") { - mot["Antonyme"] = "" + values.forEach { value -> + println(value) + } + val mot = header.zip(values).toMap().toMutableMap() + val nouveauMot = Mot( + nom = mot["Mot"]!!, + description = mot["Description"]!!, + contextePrincipal = mot["Contexte principal"]!!, + contexte2 = mot["Contexte 2"]!!, + lieA = mot["Lié à"]!!, + synonyme = mot["Synonyme"]!!, + antonyme = mot["Antonyme"]!! + ) + + if (mot["Antonyme"] == "\r") { + mot["Antonyme"] = "" + } + if (mot["Mot"] == null || mot["Mot"] == "") { + return + } + if (!verifierChampsRequis(mot)) { + return + } + ajouterMotAuGlossaire(nouveauMot) } - if (mot["Mot"] == null || mot["Mot"] == "") { - return - } - if (!verifierChampsRequis(mot)) { - return - } - ajouterMotAuGlossaire(nouveauMot) } } + fun verifierChampsRequis(mot: Map): Boolean { //Vérifier que les headers sont égales aux champs requis val champsRequis = listOf(