From 89d8921d32a5745bec9319f1f79068bca9978c03 Mon Sep 17 00:00:00 2001 From: GOKULRAJ136 <110164849+GOKULRAJ136@users.noreply.github.com> Date: Mon, 22 Sep 2025 15:10:43 +0530 Subject: [PATCH] [MOSIP-27141] & [MOSIP-28564] Fixed the bulk upload issues Signed-off-by: GOKULRAJ136 <110164849+GOKULRAJ136@users.noreply.github.com> --- .../constant/BulkUploadErrorCode.java | 3 ++- .../impl/BulkDataUploadServiceImpl.java | 27 +++++++++++++++---- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/constant/BulkUploadErrorCode.java b/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/constant/BulkUploadErrorCode.java index 89ade478b8a..ec17a4b8282 100644 --- a/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/constant/BulkUploadErrorCode.java +++ b/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/constant/BulkUploadErrorCode.java @@ -17,7 +17,8 @@ public enum BulkUploadErrorCode { EMPTY_FILE("ADM-BLK-006", "Empty file is not acceptable please provide valid file"), NO_FILE("ADM-BLK-007", "No file uploaded"), ENTRY_EXISTS_SAME_IDENTIFIER("ADM-BLK-008", "Entry found with same primary key values"), - BATCH_ERROR("ADM-BLK-009", "Failed to process entry"); + BATCH_ERROR("ADM-BLK-009", "Failed to process entry"), + INVALID_DELIMITER("ADM-BLK-010","Invalid delimiter used"); private final String errorCode; diff --git a/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/service/impl/BulkDataUploadServiceImpl.java b/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/service/impl/BulkDataUploadServiceImpl.java index 0a9a08f00fb..af31b543ff6 100644 --- a/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/service/impl/BulkDataUploadServiceImpl.java +++ b/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/service/impl/BulkDataUploadServiceImpl.java @@ -16,6 +16,9 @@ import io.mosip.admin.packetstatusupdater.util.AuditUtil; import io.mosip.admin.packetstatusupdater.util.EventEnum; import io.mosip.kernel.core.util.EmptyCheckUtils; +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityManagerFactory; +import jakarta.validation.Validator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.batch.core.Job; @@ -57,11 +60,9 @@ import org.springframework.web.client.RestTemplate; import org.springframework.web.multipart.MultipartFile; -import jakarta.persistence.EntityManager; -import jakarta.persistence.EntityManagerFactory; -import javax.sql.DataSource; -import jakarta.validation.Validator; +import java.io.BufferedReader; import java.io.IOException; +import java.io.InputStreamReader; import java.sql.Timestamp; import java.time.LocalDate; import java.time.LocalDateTime; @@ -252,16 +253,30 @@ private BulkDataResponseDto importDataFromFile(String tableName, String operatio try { logger.info("Is file empty ? {}, file-size :{}", file.isEmpty(), file.getSize()); if (file.isEmpty()) { + bulkUploadTranscation.setStatusCode("FAILED"); + updateBulkUploadTransaction(bulkUploadTranscation); throw new RequestException(BulkUploadErrorCode.EMPTY_FILE.getErrorCode(), BulkUploadErrorCode.EMPTY_FILE.getErrorMessage()); } if (!file.getOriginalFilename().endsWith(".csv") && !file.getOriginalFilename().endsWith(".xls") && !file.getOriginalFilename().endsWith(".xlsx")) { + bulkUploadTranscation.setStatusCode("FAILED"); + updateBulkUploadTransaction(bulkUploadTranscation); throw new RequestException(BulkUploadErrorCode.INVALID_FILE_FORMAT.getErrorCode(), BulkUploadErrorCode.INVALID_FILE_FORMAT.getErrorMessage()); } Boolean isCSV = file.getOriginalFilename().endsWith(".csv"); + + try (BufferedReader reader = new BufferedReader(new InputStreamReader(file.getInputStream()))) { + String firstLine = reader.readLine(); + if (firstLine != null && !firstLine.contains(lineDelimiter)) { + bulkUploadTranscation.setStatusCode("FAILED"); + updateBulkUploadTransaction(bulkUploadTranscation); + throw new RequestException(BulkUploadErrorCode.INVALID_DELIMITER.getErrorCode(), + "Invalid delimiter used. Expected delimiter: " + lineDelimiter); + } + } auditUtil.setAuditRequestDto(EventEnum.getEventEnumWithValue(EventEnum.BULKDATA_UPLOAD_CSV, operation + " from " + file.getOriginalFilename()),null); @@ -318,7 +333,9 @@ public BulkDataResponseDto bulkDataOperation(String tableName, String operation, private void updateBulkUploadTransaction(BulkUploadTranscation bulkUploadTranscation) { - bulkUploadTranscation.setStatusCode("COMPLETED"); + if (bulkUploadTranscation.getStatusCode() == null || !bulkUploadTranscation.getStatusCode().equalsIgnoreCase("FAILED")) { + bulkUploadTranscation.setStatusCode("COMPLETED"); + } bulkUploadTranscation.setUploadedDateTime(Timestamp.valueOf(LocalDateTime.now(ZoneId.of("UTC")))); bulkUploadTranscation.setUpdatedBy("JOB"); bulkTranscationRepo.save(bulkUploadTranscation);