diff --git a/pom.xml b/pom.xml
index 40d368b..a004a53 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
fr.abes
kbart2kafka
- 1.0.0
+ 1.0.1-SNAPSHOT
jar
kbart2kafka
chargement d'un fichier kbart dans kafka
diff --git a/src/main/java/fr/abes/kbart2kafka/service/FileService.java b/src/main/java/fr/abes/kbart2kafka/service/FileService.java
index 0f5bb32..d6ee6ca 100644
--- a/src/main/java/fr/abes/kbart2kafka/service/FileService.java
+++ b/src/main/java/fr/abes/kbart2kafka/service/FileService.java
@@ -5,6 +5,7 @@
import fr.abes.kbart2kafka.dto.LigneKbartDto;
import fr.abes.kbart2kafka.exception.IllegalDateException;
import fr.abes.kbart2kafka.exception.IllegalFileFormatException;
+import fr.abes.kbart2kafka.utils.CheckFiles;
import fr.abes.kbart2kafka.utils.PUBLICATION_TYPE;
import fr.abes.kbart2kafka.utils.Utils;
import lombok.extern.slf4j.Slf4j;
@@ -71,6 +72,7 @@ private void executeMultiThread(File fichier) throws IllegalFileFormatException
ThreadContext.put("package", fichier.getName() + ";" + cpt.get());
String[] tsvElementsOnOneLine = ligneKbart.split("\t");
try {
+ CheckFiles.isValidUtf8(ligneKbart);
kbartsToSend.add(mapper.writeValueAsString(constructDto(tsvElementsOnOneLine, cpt.get(), nbLignesFichier)));
} catch (IllegalDateException | IllegalFileFormatException | JsonProcessingException e) {
log.error("Erreur dans le fichier en entrée à la ligne " + cpt.get() + " : " + e.getMessage());
diff --git a/src/main/java/fr/abes/kbart2kafka/utils/CheckFiles.java b/src/main/java/fr/abes/kbart2kafka/utils/CheckFiles.java
index d61ef76..45748e8 100644
--- a/src/main/java/fr/abes/kbart2kafka/utils/CheckFiles.java
+++ b/src/main/java/fr/abes/kbart2kafka/utils/CheckFiles.java
@@ -8,6 +8,9 @@
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
+import java.nio.charset.CharacterCodingException;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.StandardCharsets;
@Slf4j
public class CheckFiles {
@@ -94,4 +97,13 @@ public static void verifyFile(File file, String header) throws IllegalFileFormat
detectTabulations(file);
detectHeaderPresence(header, file, isBypassOptionPresent);
}
+
+ public static void isValidUtf8(String input) throws IllegalFileFormatException {
+ CharsetDecoder decoder = StandardCharsets.UTF_8.newDecoder();
+ try {
+ decoder.decode(java.nio.ByteBuffer.wrap(input.getBytes(StandardCharsets.UTF_8)));
+ } catch (CharacterCodingException e) {
+ throw new IllegalFileFormatException("le fichier contient des caracters qui ne sont pas en UTF8");
+ }
+ }
}