diff --git a/src/main/java/com/kamco/cd/kamcoback/common/utils/FIleChecker.java b/src/main/java/com/kamco/cd/kamcoback/common/utils/FIleChecker.java index dd3c6ce8..21f0f669 100644 --- a/src/main/java/com/kamco/cd/kamcoback/common/utils/FIleChecker.java +++ b/src/main/java/com/kamco/cd/kamcoback/common/utils/FIleChecker.java @@ -490,7 +490,8 @@ public class FIleChecker { return true; } - public static boolean multipartChunkSaveTo(MultipartFile mfile, String targetPath, int chunkIndex) { + public static boolean multipartChunkSaveTo( + MultipartFile mfile, String targetPath, int chunkIndex) { File dest = new File(targetPath, String.valueOf(chunkIndex)); boolean fileUpload = true; diff --git a/src/main/java/com/kamco/cd/kamcoback/config/SecurityConfig.java b/src/main/java/com/kamco/cd/kamcoback/config/SecurityConfig.java index f254918a..6977cf0f 100644 --- a/src/main/java/com/kamco/cd/kamcoback/config/SecurityConfig.java +++ b/src/main/java/com/kamco/cd/kamcoback/config/SecurityConfig.java @@ -44,7 +44,7 @@ public class SecurityConfig { .authorizeHttpRequests( auth -> auth - // .requestMatchers("/chunk_upload_test.html").authenticated() + // .requestMatchers("/chunk_upload_test.html").authenticated() // 맵시트 영역 전체 허용 (우선순위 최상단) .requestMatchers("/api/mapsheet/**") diff --git a/src/main/java/com/kamco/cd/kamcoback/model/ModelMngApiController.java b/src/main/java/com/kamco/cd/kamcoback/model/ModelMngApiController.java index c6b89ae5..fe78d3a4 100644 --- a/src/main/java/com/kamco/cd/kamcoback/model/ModelMngApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/model/ModelMngApiController.java @@ -13,7 +13,6 @@ import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.transaction.Transactional; import jakarta.validation.Valid; -import java.io.IOException; import java.time.LocalDate; import java.util.UUID; import lombok.RequiredArgsConstructor; @@ -106,33 +105,31 @@ public class ModelMngApiController { return ApiResponseDto.okObject(modelMngService.removeModel(UUID.fromString(uuid))); } - @Operation(summary = "모델등록") @PostMapping public ApiResponseDto ModelMgmt( - @RequestBody @Valid ModelMngDto.AddReq addReq) { + @RequestBody @Valid ModelMngDto.AddReq addReq) { return ApiResponseDto.ok(modelMngService.insertModel(addReq)); } - @Operation(summary = "데이터셋 대용량 파일 분할 전송", description = "데이터셋 파일 대용량 파일을 청크 단위로 전송합니다.") @ApiResponses( - value = { - @ApiResponse(responseCode = "200", description = "청크 업로드 성공", content = @Content), - @ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content), - @ApiResponse(responseCode = "404", description = "업로드 세션을 찾을 수 없음", content = @Content), - @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) - }) + value = { + @ApiResponse(responseCode = "200", description = "청크 업로드 성공", content = @Content), + @ApiResponse(responseCode = "400", description = "잘못된 요청 데이터", content = @Content), + @ApiResponse(responseCode = "404", description = "업로드 세션을 찾을 수 없음", content = @Content), + @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) + }) @PostMapping(value = "/file-chunk-upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public ApiResponseDto fileChunkUpload( - @RequestParam("uuid") UUID uuid, - @RequestParam("fileName") String fileName, - @RequestParam("fileSize") long fileSize, - // @RequestParam("fileHash") String fileHash, - @RequestParam("chunkIndex") Integer chunkIndex, - @RequestParam("chunkTotalIndex") Integer chunkTotalIndex, - @RequestPart("chunkFile") MultipartFile chunkFile) { + @RequestParam("uuid") UUID uuid, + @RequestParam("fileName") String fileName, + @RequestParam("fileSize") long fileSize, + // @RequestParam("fileHash") String fileHash, + @RequestParam("chunkIndex") Integer chunkIndex, + @RequestParam("chunkTotalIndex") Integer chunkTotalIndex, + @RequestPart("chunkFile") MultipartFile chunkFile) { String uploadDivi = "model"; @@ -147,7 +144,7 @@ public class ModelMngApiController { upAddReqDto.setFinalPath(modelDir); upAddReqDto.setTempPath(modelTmpDir); - System.out.println("uuid === "+ uuid); + System.out.println("uuid === " + uuid); return ApiResponseDto.ok(modelMngService.uploadChunkModelFile(upAddReqDto, chunkFile)); } diff --git a/src/main/java/com/kamco/cd/kamcoback/model/dto/ModelMngDto.java b/src/main/java/com/kamco/cd/kamcoback/model/dto/ModelMngDto.java index 27058f85..96e1ba56 100644 --- a/src/main/java/com/kamco/cd/kamcoback/model/dto/ModelMngDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/model/dto/ModelMngDto.java @@ -125,9 +125,7 @@ public class ModelMngDto { private String fileName; private String memo; - @JsonIgnore - private UUID uuid; - + @JsonIgnore private UUID uuid; } @Schema(name = "searchReq", description = "검색 요청") diff --git a/src/main/java/com/kamco/cd/kamcoback/model/service/ModelMngService.java b/src/main/java/com/kamco/cd/kamcoback/model/service/ModelMngService.java index d50239ed..87534f62 100644 --- a/src/main/java/com/kamco/cd/kamcoback/model/service/ModelMngService.java +++ b/src/main/java/com/kamco/cd/kamcoback/model/service/ModelMngService.java @@ -59,7 +59,6 @@ public class ModelMngService { return new ApiResponseDto.ResponseObj(ApiResponseDto.ApiResponseCode.OK, "삭제되었습니다."); } - public ApiResponseDto.ResponseObj insertModel(ModelMngDto.AddReq addReq) { UUID uuid = UUID.randomUUID(); addReq.setUuid(uuid); @@ -67,12 +66,10 @@ public class ModelMngService { return new ApiResponseDto.ResponseObj(ApiResponseDto.ApiResponseCode.OK, "등록되었습니다."); } - public UploadDto.UploadRes uploadChunkModelFile(UploadDto.UploadAddReq upAddReqDto, MultipartFile chunkFile) - { + public UploadDto.UploadRes uploadChunkModelFile( + UploadDto.UploadAddReq upAddReqDto, MultipartFile chunkFile) { UploadDto.UploadRes upRes = uploadService.uploadChunk(upAddReqDto, chunkFile); return upRes; } - - } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/ModelMngCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/ModelMngCoreService.java index 87fa15d1..d803a756 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/ModelMngCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/ModelMngCoreService.java @@ -1,10 +1,7 @@ package com.kamco.cd.kamcoback.postgres.core; -import com.kamco.cd.kamcoback.config.api.ApiResponseDto; import com.kamco.cd.kamcoback.model.dto.ModelMngDto; -import com.kamco.cd.kamcoback.postgres.entity.ModelMngEntity; import com.kamco.cd.kamcoback.postgres.repository.model.ModelMngRepository; -import jakarta.persistence.EntityNotFoundException; import java.time.LocalDate; import java.util.UUID; import lombok.RequiredArgsConstructor; @@ -35,15 +32,15 @@ public class ModelMngCoreService { .orElseThrow(() -> new EntityNotFoundException("model을 찾을 수 없습니다.")); */ // id 코드 deleted = true 업데이트 - //entity.deleted(); + // entity.deleted(); modelMngRepository.deleteByModelUuid(uuid); } - public void insertModel(ModelMngDto.AddReq addReq){ + public void insertModel(ModelMngDto.AddReq addReq) { - //ModelMngEntity addEntity = new ModelMngEntity(); - //addEntity.setModelType(addReq.getModelType()); + // ModelMngEntity addEntity = new ModelMngEntity(); + // addEntity.setModelType(addReq.getModelType()); modelMngRepository.insertModel(addReq); } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/UploadSessionCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/UploadSessionCoreService.java index f963464c..85c0612d 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/UploadSessionCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/UploadSessionCoreService.java @@ -12,8 +12,7 @@ public class UploadSessionCoreService { private final UploadSessionRepository uploadSessionRepository; - public void createUploadSession(UploadDto.UploadAddReq addReq) - { + public void createUploadSession(UploadDto.UploadAddReq addReq) { /* UUID newUuid = UUID.randomUUID(); @@ -39,18 +38,17 @@ public class UploadSessionCoreService { */ uploadSessionRepository.insertUploadSession(addReq); - } - public UploadDto.uploadDto findByDatasetUid(Long datasetId, String uploadDivi){ + public UploadDto.uploadDto findByDatasetUid(Long datasetId, String uploadDivi) { return uploadSessionRepository.findByDatasetUid(datasetId, uploadDivi); } - public UploadDto.uploadDto findByUuid(UUID uuid){ + public UploadDto.uploadDto findByUuid(UUID uuid) { return uploadSessionRepository.findByUuid(uuid); } - public void updateUploadSessionStatus(UploadDto.UploadAddReq addReq){ + public void updateUploadSessionStatus(UploadDto.UploadAddReq addReq) { uploadSessionRepository.updateUploadSessionStatus(addReq); } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/UploadSessionEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/UploadSessionEntity.java index 58646a83..18a93105 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/UploadSessionEntity.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/UploadSessionEntity.java @@ -86,5 +86,4 @@ public class UploadSessionEntity { @ColumnDefault("uuid_generate_v4()") @Column(name = "uuid", nullable = false) private UUID uuid; - } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryCustom.java index e82b4593..b84ea5d3 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryCustom.java @@ -20,7 +20,6 @@ public interface ModelMngRepositoryCustom { Optional findByModelUuid(UUID uuid); - void insertModel(ModelMngDto.AddReq addReq); void deleteByModelUuid(UUID uuid); diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryImpl.java index 92cd36ef..db15f3e4 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/model/ModelMngRepositoryImpl.java @@ -123,10 +123,7 @@ public class ModelMngRepositoryImpl extends QuerydslRepositorySupport System.out.println("uuid == " + uuid); return Optional.ofNullable( - queryFactory - .selectFrom(modelMngEntity) - .where(modelMngEntity.uuid.eq(uuid)) - .fetchOne()); + queryFactory.selectFrom(modelMngEntity).where(modelMngEntity.uuid.eq(uuid)).fetchOne()); } private BooleanExpression eventEndedAtBetween( @@ -172,33 +169,32 @@ public class ModelMngRepositoryImpl extends QuerydslRepositorySupport @Override public void insertModel(@Valid ModelMngDto.AddReq addReq) { long execCount = - queryFactory - .insert(modelMngEntity) - .columns( - modelMngEntity.modelVer, - modelMngEntity.modelType, - modelMngEntity.filePath, - modelMngEntity.fileName, - modelMngEntity.memo, - modelMngEntity.uuid) - .values( - addReq.getModelVer(), - addReq.getModelType(), - addReq.getFilePath(), - addReq.getFileName(), - addReq.getMemo(), - addReq.getUuid()) - .execute(); + queryFactory + .insert(modelMngEntity) + .columns( + modelMngEntity.modelVer, + modelMngEntity.modelType, + modelMngEntity.filePath, + modelMngEntity.fileName, + modelMngEntity.memo, + modelMngEntity.uuid) + .values( + addReq.getModelVer(), + addReq.getModelType(), + addReq.getFilePath(), + addReq.getFileName(), + addReq.getMemo(), + addReq.getUuid()) + .execute(); } @Override - public void deleteByModelUuid(UUID uuid){ + public void deleteByModelUuid(UUID uuid) { long execCount = - queryFactory - .update(modelMngEntity) - .set(modelMngEntity.deleted, true) - .where(modelMngEntity.uuid.eq(uuid)) - .execute(); + queryFactory + .update(modelMngEntity) + .set(modelMngEntity.deleted, true) + .where(modelMngEntity.uuid.eq(uuid)) + .execute(); } - } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/upload/UploadSessionRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/upload/UploadSessionRepositoryCustom.java index a6502e85..0fae2b64 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/upload/UploadSessionRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/upload/UploadSessionRepositoryCustom.java @@ -1,19 +1,15 @@ package com.kamco.cd.kamcoback.postgres.repository.upload; - - import com.kamco.cd.kamcoback.upload.dto.UploadDto; import java.util.UUID; public interface UploadSessionRepositoryCustom { - void insertUploadSession(UploadDto.UploadAddReq addReq); UploadDto.uploadDto findByDatasetUid(Long datasetId, String uploadDivi); UploadDto.uploadDto findByUuid(UUID uuid); + void updateUploadSessionStatus(UploadDto.UploadAddReq addReq); - - } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/upload/UploadSessionRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/upload/UploadSessionRepositoryImpl.java index e6914ee2..0594ae94 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/upload/UploadSessionRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/upload/UploadSessionRepositoryImpl.java @@ -1,6 +1,5 @@ package com.kamco.cd.kamcoback.postgres.repository.upload; - import static com.kamco.cd.kamcoback.postgres.entity.QUploadSessionEntity.uploadSessionEntity; import com.kamco.cd.kamcoback.postgres.entity.UploadSessionEntity; @@ -30,113 +29,104 @@ public class UploadSessionRepositoryImpl extends QuerydslRepositorySupport @Override public void insertUploadSession(UploadDto.UploadAddReq addReq) { long execCnt = - queryFactory - .insert(uploadSessionEntity) - .columns( - uploadSessionEntity.uploadId, - uploadSessionEntity.datasetId, - uploadSessionEntity.fileName, - uploadSessionEntity.fileSize, - uploadSessionEntity.finalPath, - uploadSessionEntity.status, - uploadSessionEntity.tempPath, - uploadSessionEntity.chunkIndex, - uploadSessionEntity.chunkTotalIndex, - uploadSessionEntity.uploadDivi, - uploadSessionEntity.fileHash, - uploadSessionEntity.uuid - ) - .values( - addReq.getUploadId(), - addReq.getDatasetId(), - addReq.getFileName(), - addReq.getFileSize(), - addReq.getFinalPath(), - addReq.getStatus(), - addReq.getTempPath(), - addReq.getChunkIndex(), - addReq.getChunkTotalIndex(), - addReq.getUploadDivi(), - addReq.getFileHash(), - addReq.getUuid() - ) - .execute(); - - + queryFactory + .insert(uploadSessionEntity) + .columns( + uploadSessionEntity.uploadId, + uploadSessionEntity.datasetId, + uploadSessionEntity.fileName, + uploadSessionEntity.fileSize, + uploadSessionEntity.finalPath, + uploadSessionEntity.status, + uploadSessionEntity.tempPath, + uploadSessionEntity.chunkIndex, + uploadSessionEntity.chunkTotalIndex, + uploadSessionEntity.uploadDivi, + uploadSessionEntity.fileHash, + uploadSessionEntity.uuid) + .values( + addReq.getUploadId(), + addReq.getDatasetId(), + addReq.getFileName(), + addReq.getFileSize(), + addReq.getFinalPath(), + addReq.getStatus(), + addReq.getTempPath(), + addReq.getChunkIndex(), + addReq.getChunkTotalIndex(), + addReq.getUploadDivi(), + addReq.getFileHash(), + addReq.getUuid()) + .execute(); } - @Override public UploadDto.uploadDto findByDatasetUid(Long datasetId, String uploadDivi) { UploadDto.uploadDto foundContent = - queryFactory - .select( - Projections.constructor( - UploadDto.uploadDto.class, - uploadSessionEntity.uploadId, - uploadSessionEntity.datasetId, - uploadSessionEntity.fileName, - uploadSessionEntity.fileSize, - uploadSessionEntity.finalPath, - uploadSessionEntity.uploadDivi, - uploadSessionEntity.status, - uploadSessionEntity.tempPath, - uploadSessionEntity.chunkIndex, - uploadSessionEntity.chunkTotalIndex, - uploadSessionEntity.fileHash, - uploadSessionEntity.uuid - )) - .from(uploadSessionEntity) - .where(uploadSessionEntity.datasetId.eq(datasetId) - .and(uploadSessionEntity.uploadDivi.eq(uploadDivi))) - .limit(1) - .fetchOne(); + queryFactory + .select( + Projections.constructor( + UploadDto.uploadDto.class, + uploadSessionEntity.uploadId, + uploadSessionEntity.datasetId, + uploadSessionEntity.fileName, + uploadSessionEntity.fileSize, + uploadSessionEntity.finalPath, + uploadSessionEntity.uploadDivi, + uploadSessionEntity.status, + uploadSessionEntity.tempPath, + uploadSessionEntity.chunkIndex, + uploadSessionEntity.chunkTotalIndex, + uploadSessionEntity.fileHash, + uploadSessionEntity.uuid)) + .from(uploadSessionEntity) + .where( + uploadSessionEntity + .datasetId + .eq(datasetId) + .and(uploadSessionEntity.uploadDivi.eq(uploadDivi))) + .limit(1) + .fetchOne(); return foundContent; - } - @Override public UploadDto.uploadDto findByUuid(UUID uuid) { UploadDto.uploadDto foundContent = - queryFactory - .select( - Projections.constructor( - UploadDto.uploadDto.class, - uploadSessionEntity.uploadId, - uploadSessionEntity.datasetId, - uploadSessionEntity.fileName, - uploadSessionEntity.fileSize, - uploadSessionEntity.finalPath, - uploadSessionEntity.uploadDivi, - uploadSessionEntity.status, - uploadSessionEntity.tempPath, - uploadSessionEntity.chunkIndex, - uploadSessionEntity.chunkTotalIndex, - uploadSessionEntity.fileHash, - uploadSessionEntity.uuid - )) - .from(uploadSessionEntity) - .where(uploadSessionEntity.uuid.eq(uuid)) - .limit(1) - .fetchOne(); + queryFactory + .select( + Projections.constructor( + UploadDto.uploadDto.class, + uploadSessionEntity.uploadId, + uploadSessionEntity.datasetId, + uploadSessionEntity.fileName, + uploadSessionEntity.fileSize, + uploadSessionEntity.finalPath, + uploadSessionEntity.uploadDivi, + uploadSessionEntity.status, + uploadSessionEntity.tempPath, + uploadSessionEntity.chunkIndex, + uploadSessionEntity.chunkTotalIndex, + uploadSessionEntity.fileHash, + uploadSessionEntity.uuid)) + .from(uploadSessionEntity) + .where(uploadSessionEntity.uuid.eq(uuid)) + .limit(1) + .fetchOne(); return foundContent; - } - - public void updateUploadSessionStatus(UploadDto.UploadAddReq addReq){ + public void updateUploadSessionStatus(UploadDto.UploadAddReq addReq) { long fileCount = - queryFactory - .update(uploadSessionEntity) - .set(uploadSessionEntity.chunkIndex, addReq.getChunkIndex()) - .set(uploadSessionEntity.status, addReq.getStatus()) - .where(uploadSessionEntity.uploadId.eq(addReq.getUploadId())) - .execute(); + queryFactory + .update(uploadSessionEntity) + .set(uploadSessionEntity.chunkIndex, addReq.getChunkIndex()) + .set(uploadSessionEntity.status, addReq.getStatus()) + .where(uploadSessionEntity.uploadId.eq(addReq.getUploadId())) + .execute(); } - } diff --git a/src/main/java/com/kamco/cd/kamcoback/upload/UploadApiController.java b/src/main/java/com/kamco/cd/kamcoback/upload/UploadApiController.java index ceae6eb9..97e4ce51 100644 --- a/src/main/java/com/kamco/cd/kamcoback/upload/UploadApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/upload/UploadApiController.java @@ -81,13 +81,13 @@ public class UploadApiController { }) @PostMapping(value = "/file-chunk-upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public ApiResponseDto fileChunkUpload( - @RequestParam("uuid") UUID uuid, - @RequestParam("fileName") String fileName, - @RequestParam("fileSize") long fileSize, - // @RequestParam("fileHash") String fileHash, - @RequestParam("chunkIndex") Integer chunkIndex, - @RequestParam("chunkTotalIndex") Integer chunkTotalIndex, - @RequestPart("chunkFile") MultipartFile chunkFile) { + @RequestParam("uuid") UUID uuid, + @RequestParam("fileName") String fileName, + @RequestParam("fileSize") long fileSize, + // @RequestParam("fileHash") String fileHash, + @RequestParam("chunkIndex") Integer chunkIndex, + @RequestParam("chunkTotalIndex") Integer chunkTotalIndex, + @RequestPart("chunkFile") MultipartFile chunkFile) { String uploadDivi = "dataset"; @@ -102,7 +102,7 @@ public class UploadApiController { upAddReqDto.setFinalPath(datasetDir); upAddReqDto.setTempPath(datasetTmpDir); - System.out.println("uuid === "+ uuid); + System.out.println("uuid === " + uuid); return ApiResponseDto.ok(uploadService.uploadChunk(upAddReqDto, chunkFile)); } @@ -116,8 +116,7 @@ public class UploadApiController { @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) }) @PutMapping("/chunk-upload-complete/{uuid}") - public ApiResponseDto completeUpload( - @PathVariable UUID uuid) { + public ApiResponseDto completeUpload(@PathVariable UUID uuid) { return ApiResponseDto.ok(uploadService.completeUpload(uuid)); } diff --git a/src/main/java/com/kamco/cd/kamcoback/upload/dto/UploadDto.java b/src/main/java/com/kamco/cd/kamcoback/upload/dto/UploadDto.java index 7096c87c..5ca61ac4 100644 --- a/src/main/java/com/kamco/cd/kamcoback/upload/dto/UploadDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/upload/dto/UploadDto.java @@ -74,8 +74,8 @@ public class UploadDto { private Integer chunkTotalIndex; @Schema( - description = "파일해쉬", - example = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") + description = "파일해쉬", + example = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") private String fileHash; @Schema(description = "uuid", example = "303d4e24-1726-4272-bbc7-01ab85692b80") @@ -153,7 +153,6 @@ public class UploadDto { @Schema(description = "파일명", example = "data.zip") private String fileName; - @Schema(description = "파일 크기 (bytes)", example = "10737418240") private Long fileSize; @@ -175,15 +174,13 @@ public class UploadDto { @Schema(description = "총 청크 Index", example = "100") private Integer chunkTotalIndex; - @Schema( - description = "파일해쉬", - example = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") + description = "파일해쉬", + example = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") private String fileHash; @Schema(description = "uuid") private UUID uuid; - } @Schema(name = "UploadRes", description = "업로드 수행 후 리턴") @@ -204,13 +201,10 @@ public class UploadDto { if (this.chunkTotalIndex == 0) { return 0.0; } - return (double) (this.chunkIndex+1) / (this.chunkTotalIndex+1) * 100.0; + return (double) (this.chunkIndex + 1) / (this.chunkTotalIndex + 1) * 100.0; } - } - - @Schema(name = "DmlReturn", description = "수행 후 리턴") @Getter @Setter diff --git a/src/main/java/com/kamco/cd/kamcoback/upload/service/UploadService.java b/src/main/java/com/kamco/cd/kamcoback/upload/service/UploadService.java index de6c3dae..eae19b6e 100644 --- a/src/main/java/com/kamco/cd/kamcoback/upload/service/UploadService.java +++ b/src/main/java/com/kamco/cd/kamcoback/upload/service/UploadService.java @@ -59,17 +59,17 @@ public class UploadService { UploadDto.UploadRes upRes = new UploadDto.UploadRes(); long datasetId = 0; - if( upAddReqDto.getDatasetId() != null )datasetId = upAddReqDto.getDatasetId(); - String uploadId = System.currentTimeMillis()+""; - //UUID uuid = UUID.randomUUID(); + if (upAddReqDto.getDatasetId() != null) datasetId = upAddReqDto.getDatasetId(); + String uploadId = System.currentTimeMillis() + ""; + // UUID uuid = UUID.randomUUID(); UUID uuid = upAddReqDto.getUuid(); - String tmpDataSetDir = upAddReqDto.getTempPath()+uuid; - String fianlDir = upAddReqDto.getFinalPath()+uuid; + String tmpDataSetDir = upAddReqDto.getTempPath() + uuid; + String fianlDir = upAddReqDto.getFinalPath() + uuid; String uploadDivi = upAddReqDto.getUploadDivi(); - //String fileName = file.getOriginalFilename(); + // String fileName = file.getOriginalFilename(); String fileName = upAddReqDto.getFileName(); Integer chunkIndex = upAddReqDto.getChunkIndex(); - Integer chunkTotalIndex = upAddReqDto.getChunkTotalIndex(); + Integer chunkTotalIndex = upAddReqDto.getChunkTotalIndex(); String status = FileUploadStatus.INIT.name(); upRes.setUuid(uuid); @@ -83,37 +83,33 @@ public class UploadService { upAddReqDto.setTempPath(tmpDataSetDir); upAddReqDto.setFinalPath(fianlDir); - //세션 신규,중복체크(초기화 포함) + // 세션 신규,중복체크(초기화 포함) UploadDto.uploadDto dto = this.checkUploadSession(upAddReqDto, upRes); - if( !upRes.getRes().equals("success") )return upRes; - + if (!upRes.getRes().equals("success")) return upRes; status = FileUploadStatus.UPLOADING.name(); upAddReqDto.setStatus(status); - if( dto != null ) - { - tmpDataSetDir = dto.getTempPath(); + if (dto != null) { + tmpDataSetDir = dto.getTempPath(); fianlDir = dto.getFinalPath(); } - //폴더 생성 및 체크 - if( ! checkChunkFoler(upRes, tmpDataSetDir, fianlDir) )return upRes; + // 폴더 생성 및 체크 + if (!checkChunkFoler(upRes, tmpDataSetDir, fianlDir)) return upRes; - //chunk저장하기 - if( ! FIleChecker.multipartChunkSaveTo(file, tmpDataSetDir, chunkIndex ) ) - { + // chunk저장하기 + if (!FIleChecker.multipartChunkSaveTo(file, tmpDataSetDir, chunkIndex)) { upRes.setRes("fail"); - upRes.setResMsg("chunkIndex:"+chunkIndex+" 업로드 애러"); + upRes.setResMsg("chunkIndex:" + chunkIndex + " 업로드 애러"); } - if( chunkIndex == chunkTotalIndex ) { + if (chunkIndex == chunkTotalIndex) { upAddReqDto.setUploadId(dto.getUploadId()); upAddReqDto.setStatus(FileUploadStatus.DONE.name()); uploadSessionCoreService.updateUploadSessionStatus(upAddReqDto); - try { this.mergeChunks(tmpDataSetDir, fianlDir, fileName, chunkTotalIndex); @@ -122,14 +118,11 @@ public class UploadService { uploadSessionCoreService.updateUploadSessionStatus(upAddReqDto); } catch (IOException e) { - //throw new RuntimeException(e); + // throw new RuntimeException(e); upRes.setRes("fail"); upRes.setResMsg("파일Chunk 병합(merge) 애러"); return upRes; } - - - } return upRes; @@ -149,7 +142,8 @@ public class UploadService { upRes.setChunkTotalIndex(dto.getChunkTotalIndex()); try { - this.mergeChunks(dto.getTempPath(), dto.getFinalPath(), dto.getFileName(), dto.getChunkTotalIndex()); + this.mergeChunks( + dto.getTempPath(), dto.getFinalPath(), dto.getFileName(), dto.getChunkTotalIndex()); } catch (IOException e) { upRes.setRes("fail"); @@ -159,21 +153,17 @@ public class UploadService { } return upRes; - } - public boolean checkChunkFoler(UploadDto.UploadRes upRes, String tmpDataSetDir, String fianlDir) - { + public boolean checkChunkFoler(UploadDto.UploadRes upRes, String tmpDataSetDir, String fianlDir) { - if( ! FIleChecker.mkDir(tmpDataSetDir) ) - { + if (!FIleChecker.mkDir(tmpDataSetDir)) { upRes.setRes("fail"); upRes.setRes("CHUNK 폴더 생성 ERROR"); return false; } - if( ! FIleChecker.mkDir(fianlDir) ) - { + if (!FIleChecker.mkDir(fianlDir)) { upRes.setRes("fail"); upRes.setRes("업로드 완료 폴더 생성 ERROR"); return false; @@ -182,28 +172,26 @@ public class UploadService { return true; } - - public UploadDto.uploadDto checkUploadSession(UploadDto.UploadAddReq upAddReqDto, UploadDto.UploadRes upRes) { + public UploadDto.uploadDto checkUploadSession( + UploadDto.UploadAddReq upAddReqDto, UploadDto.UploadRes upRes) { upRes.setRes("success"); upRes.setResMsg("정상처리되었습니다."); UploadDto.uploadDto dto = uploadSessionCoreService.findByUuid(upAddReqDto.getUuid()); - if( upAddReqDto.getChunkIndex() == 0 ) { - if( dto != null ) - { + if (upAddReqDto.getChunkIndex() == 0) { + if (dto != null) { upRes.setRes("duplicate"); upRes.setResMsg("이미 진행중인 업로드세션입니다."); return dto; } upAddReqDto.setStatus("UPLOADING"); - upRes.setUuid( upAddReqDto.getUuid() ); + upRes.setUuid(upAddReqDto.getUuid()); uploadSessionCoreService.createUploadSession(upAddReqDto); - } - else { - if( dto == null ){ + } else { + if (dto == null) { upRes.setRes("nosession"); upRes.setResMsg("업로드 세션이 존재하지 않습니다."); return dto; @@ -214,22 +202,22 @@ public class UploadService { uploadSessionCoreService.updateUploadSessionStatus(upAddReqDto); } - if( dto != null )upRes.setUuid( dto.getUuid() ); + if (dto != null) upRes.setUuid(dto.getUuid()); upRes.setChunkIndex(upAddReqDto.getChunkIndex()); upRes.setChunkTotalIndex(upAddReqDto.getChunkTotalIndex()); - return dto; - } - public void mergeChunks(String tmpDir, String fianlDir, String fileName, int chunkTotalIndex) throws IOException { + public void mergeChunks(String tmpDir, String fianlDir, String fileName, int chunkTotalIndex) + throws IOException { Path outputPath = Paths.get(fianlDir, fileName); - try (FileChannel outChannel = FileChannel.open(outputPath, StandardOpenOption.CREATE, StandardOpenOption.WRITE)) { + try (FileChannel outChannel = + FileChannel.open(outputPath, StandardOpenOption.CREATE, StandardOpenOption.WRITE)) { for (int i = 0; i <= chunkTotalIndex; i++) { - Path chunkPath = Paths.get(tmpDir, i+""); + Path chunkPath = Paths.get(tmpDir, i + ""); try (FileChannel inChannel = FileChannel.open(chunkPath, StandardOpenOption.READ)) { long transferred = 0; @@ -243,10 +231,7 @@ public class UploadService { } } - //병합후 임시 폴더 삭제 + // 병합후 임시 폴더 삭제 FIleChecker.deleteFolder(tmpDir); - } - - }