From 22ffa4d74af14757ad665e0fbc7a14463a96ca90 Mon Sep 17 00:00:00 2001 From: Tejaswini Date: Tue, 1 Aug 2023 11:51:20 +0530 Subject: [PATCH 1/3] commit for FileStorageUpdation2 --- .../controller/FileStorageController.java | 22 +++++++++++++++++ .../registry/service/FileStorageService.java | 24 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/java/registry/src/main/java/dev/sunbirdrc/registry/controller/FileStorageController.java b/java/registry/src/main/java/dev/sunbirdrc/registry/controller/FileStorageController.java index a937650be..0170e4ddf 100644 --- a/java/registry/src/main/java/dev/sunbirdrc/registry/controller/FileStorageController.java +++ b/java/registry/src/main/java/dev/sunbirdrc/registry/controller/FileStorageController.java @@ -3,6 +3,7 @@ import dev.sunbirdrc.registry.helper.RegistryHelper; import dev.sunbirdrc.registry.model.dto.DocumentsResponse; import dev.sunbirdrc.registry.service.FileStorageService; +import io.minio.errors.*; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -11,6 +12,10 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.rmi.ServerException; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; import java.util.List; // TODO: Get should be viewed by both attestor and reviewer @@ -56,6 +61,23 @@ public ResponseEntity deleteMultipleFiles(@PathVariable Strin return new ResponseEntity<>(documentsResponse, HttpStatus.OK); } + @PutMapping("/api/v1/{entity}/{entityId}/{property}/documents/{documentId}") + public ResponseEntity update(@RequestParam MultipartFile[] files, + @PathVariable String entity, + @PathVariable String entityId, + @PathVariable String documentId, + @PathVariable String property, + HttpServletRequest httpServletRequest) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException { + try { + registryHelper.authorize(entity, entityId, httpServletRequest); + } catch (Exception e) { + e.printStackTrace(); + return new ResponseEntity<>(HttpStatus.FORBIDDEN); + } + DocumentsResponse documentsResponse = fileStorageService.updateFiles(files, httpServletRequest.getRequestURI()); + return new ResponseEntity<>(documentsResponse, HttpStatus.OK); + } + @DeleteMapping(value = "/api/v1/{entity}/{entityId}/{property}/documents/{documentId}") public ResponseEntity deleteAFile(@PathVariable String entity, @PathVariable String entityId, diff --git a/java/registry/src/main/java/dev/sunbirdrc/registry/service/FileStorageService.java b/java/registry/src/main/java/dev/sunbirdrc/registry/service/FileStorageService.java index a2541025b..ac2563a04 100644 --- a/java/registry/src/main/java/dev/sunbirdrc/registry/service/FileStorageService.java +++ b/java/registry/src/main/java/dev/sunbirdrc/registry/service/FileStorageService.java @@ -139,4 +139,28 @@ public ComponentHealthInfo getHealthInfo() { return new ComponentHealthInfo(getServiceName(), false, CONNECTION_FAILURE, e.getMessage()); } } + public DocumentsResponse updateFiles(MultipartFile[] files, String requestedURI) { + String objectPath = getDirectoryPath(requestedURI); + DocumentsResponse documentsResponse = new DocumentsResponse(); + for (MultipartFile file : files) { + String fileName = getFileName(file.getOriginalFilename()); + try { + boolean objectExists = minioClient.statObject( + StatObjectArgs.builder().bucket(bucketName).object(objectPath).build() + ) != null; + + if (objectExists) { + save(file.getInputStream(),objectPath); + documentsResponse.addDocumentLocation(objectPath); + return documentsResponse; + } + } catch (Exception e) { + documentsResponse.addError(file.getOriginalFilename()); + logger.error("Error has occurred while trying to save the file {}", fileName); + e.printStackTrace(); + } + } + return documentsResponse; + } } + From 4978b7ed5454fdc174be5cd1b7ba2a62d4880a19 Mon Sep 17 00:00:00 2001 From: Tejaswini Date: Wed, 11 Oct 2023 16:27:37 +0530 Subject: [PATCH 2/3] updated file in Minio --- .../registry/controller/FileStorageController.java | 12 ++++++++---- .../registry/service/FileStorageService.java | 6 +++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/java/registry/src/main/java/dev/sunbirdrc/registry/controller/FileStorageController.java b/java/registry/src/main/java/dev/sunbirdrc/registry/controller/FileStorageController.java index 0170e4ddf..99f635c1b 100644 --- a/java/registry/src/main/java/dev/sunbirdrc/registry/controller/FileStorageController.java +++ b/java/registry/src/main/java/dev/sunbirdrc/registry/controller/FileStorageController.java @@ -4,6 +4,9 @@ import dev.sunbirdrc.registry.model.dto.DocumentsResponse; import dev.sunbirdrc.registry.service.FileStorageService; import io.minio.errors.*; +import org.apache.commons.lang3.exception.ExceptionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -24,6 +27,7 @@ public class FileStorageController { private final FileStorageService fileStorageService; private final RegistryHelper registryHelper; + private static final Logger logger = LoggerFactory.getLogger(FileStorageController.class); FileStorageController(FileStorageService fileStorageService, RegistryHelper registryHelper) { this.fileStorageService = fileStorageService; this.registryHelper = registryHelper; @@ -61,17 +65,17 @@ public ResponseEntity deleteMultipleFiles(@PathVariable Strin return new ResponseEntity<>(documentsResponse, HttpStatus.OK); } - @PutMapping("/api/v1/{entity}/{entityId}/{property}/documents/{documentId}") + @PutMapping("/api/v1/{entityName}/{entityId}/{property}/documents/{documentId}") public ResponseEntity update(@RequestParam MultipartFile[] files, - @PathVariable String entity, + @PathVariable String entityName, @PathVariable String entityId, @PathVariable String documentId, @PathVariable String property, HttpServletRequest httpServletRequest) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException { try { - registryHelper.authorize(entity, entityId, httpServletRequest); + registryHelper.authorize(entityName, entityId, httpServletRequest); } catch (Exception e) { - e.printStackTrace(); + logger.error("An error occurred during authorization: {}", ExceptionUtils.getStackTrace(e)); return new ResponseEntity<>(HttpStatus.FORBIDDEN); } DocumentsResponse documentsResponse = fileStorageService.updateFiles(files, httpServletRequest.getRequestURI()); diff --git a/java/registry/src/main/java/dev/sunbirdrc/registry/service/FileStorageService.java b/java/registry/src/main/java/dev/sunbirdrc/registry/service/FileStorageService.java index ac2563a04..375765a74 100644 --- a/java/registry/src/main/java/dev/sunbirdrc/registry/service/FileStorageService.java +++ b/java/registry/src/main/java/dev/sunbirdrc/registry/service/FileStorageService.java @@ -9,6 +9,7 @@ import io.minio.messages.Bucket; import io.minio.messages.DeleteError; import io.minio.messages.DeleteObject; +import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.poi.util.IOUtils; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; @@ -156,11 +157,10 @@ public DocumentsResponse updateFiles(MultipartFile[] files, String requestedURI) } } catch (Exception e) { documentsResponse.addError(file.getOriginalFilename()); - logger.error("Error has occurred while trying to save the file {}", fileName); - e.printStackTrace(); + logger.error("Error has occurred while trying to update the file {}: {}", fileName, ExceptionUtils.getStackTrace(e)); + } } return documentsResponse; } } - From 9e641dd8315309754d0f5013dae45f1ac0d4335c Mon Sep 17 00:00:00 2001 From: Tejaswini Date: Wed, 25 Oct 2023 17:13:22 +0530 Subject: [PATCH 3/3] removed Unnecessary Exception from FileStorageController --- .../sunbirdrc/registry/controller/FileStorageController.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/java/registry/src/main/java/dev/sunbirdrc/registry/controller/FileStorageController.java b/java/registry/src/main/java/dev/sunbirdrc/registry/controller/FileStorageController.java index 406bc8072..89de65d88 100644 --- a/java/registry/src/main/java/dev/sunbirdrc/registry/controller/FileStorageController.java +++ b/java/registry/src/main/java/dev/sunbirdrc/registry/controller/FileStorageController.java @@ -28,8 +28,6 @@ public class FileStorageController { private static final Logger logger = LoggerFactory.getLogger(FileStorageController.class); private final FileStorageService fileStorageService; private final RegistryHelper registryHelper; - - private static final Logger logger = LoggerFactory.getLogger(FileStorageController.class); FileStorageController(FileStorageService fileStorageService, RegistryHelper registryHelper) { this.fileStorageService = fileStorageService; this.registryHelper = registryHelper; @@ -73,7 +71,7 @@ public ResponseEntity update(@RequestParam MultipartFile[] fi @PathVariable String entityId, @PathVariable String documentId, @PathVariable String property, - HttpServletRequest httpServletRequest) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException { + HttpServletRequest httpServletRequest) { try { registryHelper.authorize(entityName, entityId, httpServletRequest); } catch (Exception e) {