From 5c6cf4c728361147f8d75cc1f7146724d8528317 Mon Sep 17 00:00:00 2001 From: devplant Date: Fri, 28 Oct 2022 13:32:31 +0300 Subject: [PATCH 1/2] RED-4543 - In fileAttributesController, support ASCII and ISO as Encoding Type - use encoding when import csv file --- .../resources/FileAttributesConfigResource.java | 2 +- .../controller/FileAttributesController.java | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/FileAttributesConfigResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/FileAttributesConfigResource.java index 463a3ef48..6c1ac4203 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/FileAttributesConfigResource.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/FileAttributesConfigResource.java @@ -32,7 +32,7 @@ public interface FileAttributesConfigResource { String UTF_ENCODING = "UTF-8"; String ASCII_ENCODING = "ASCII"; - String ISO_ENCODING = "ISO-8601"; + String ISO_ENCODING = "ISO"; @ResponseBody @ResponseStatus(HttpStatus.OK) diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileAttributesController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileAttributesController.java index 5613e4c44..d7009e9d9 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileAttributesController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileAttributesController.java @@ -4,6 +4,7 @@ import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStreamReader; +import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashMap; @@ -46,6 +47,8 @@ import com.opencsv.exceptions.CsvException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import static com.iqser.red.service.persistence.service.v1.api.resources.FileAttributesConfigResource.*; + @Slf4j @RestController @RequiredArgsConstructor @@ -71,7 +74,7 @@ public class FileAttributesController implements FileAttributesResource { .filter(f -> !f.isSoftOrHardDeleted()) .collect(Collectors.toMap(FileModel::getFilename, Function.identity())); - List> rows = getCsvRecords(importCsvRequest.getCsvFile(), generalConfiguration.getDelimiter()); + List> rows = getCsvRecords(importCsvRequest.getCsvFile(), generalConfiguration.getDelimiter(), generalConfiguration.getEncoding()); Iterator> rowIterator = rows.iterator(); @@ -138,7 +141,7 @@ public class FileAttributesController implements FileAttributesResource { @SuppressFBWarnings("RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE") - private List> getCsvRecords(byte[] csv, String delimiter) { + private List> getCsvRecords(byte[] csv, String delimiter, String encoding) { CSVParser parser = new CSVParserBuilder().withSeparator(delimiter.charAt(0)).build(); @@ -154,5 +157,13 @@ public class FileAttributesController implements FileAttributesResource { return records; } + private Charset parseEncoding(String encoding) { + if (ASCII_ENCODING.equalsIgnoreCase(encoding)) + return StandardCharsets.US_ASCII; + if (ISO_ENCODING.equalsIgnoreCase(encoding)) + return StandardCharsets.ISO_8859_1; + return StandardCharsets.UTF_8; + } + } From faa1037beada9349fcd3bee8be42d3cf06aaea9c Mon Sep 17 00:00:00 2001 From: devplant Date: Fri, 28 Oct 2022 13:34:59 +0300 Subject: [PATCH 2/2] RED-4543 - In fileAttributesController, support ASCII and ISO as Encoding Type - use private method create to parse encoding --- .../v1/server/controller/FileAttributesController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileAttributesController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileAttributesController.java index d7009e9d9..aaa0f1801 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileAttributesController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileAttributesController.java @@ -147,7 +147,7 @@ public class FileAttributesController implements FileAttributesResource { List> records = new ArrayList<>(); - try (CSVReader csvReader = new CSVReaderBuilder(new BufferedReader(new InputStreamReader(new ByteArrayInputStream(csv), StandardCharsets.UTF_8))).withCSVParser(parser) + try (CSVReader csvReader = new CSVReaderBuilder(new BufferedReader(new InputStreamReader(new ByteArrayInputStream(csv), parseEncoding(encoding)))).withCSVParser(parser) .build()) { records.addAll(csvReader.readAll().stream().map(Lists::newArrayList).collect(Collectors.toList())); } catch (IOException | CsvException e) {