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..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 @@ -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,13 +141,13 @@ 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(); 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) { @@ -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; + } + }