@@ -6,8 +6,6 @@ import ru.soune.nocopy.entity.file.FileEntity;
|
|||||||
import ru.soune.nocopy.entity.file.FileStatus;
|
import ru.soune.nocopy.entity.file.FileStatus;
|
||||||
import ru.soune.nocopy.entity.file.FileUploadSession;
|
import ru.soune.nocopy.entity.file.FileUploadSession;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
public interface FileUploadService {
|
public interface FileUploadService {
|
||||||
FileUploadSession initUpload(Long userId, String fileName,
|
FileUploadSession initUpload(Long userId, String fileName,
|
||||||
String fileType, String extension, String convertTo, long fileSize);
|
String fileType, String extension, String convertTo, long fileSize);
|
||||||
@@ -20,5 +18,5 @@ public interface FileUploadService {
|
|||||||
|
|
||||||
UploadProgressResponse getUploadProgress(String uploadId);
|
UploadProgressResponse getUploadProgress(String uploadId);
|
||||||
|
|
||||||
FileEntity completeFileProcessingAsync(FileUploadSession session, FileStatus status);
|
FileEntity completeFileProcessing(FileUploadSession session, FileStatus status);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -226,11 +226,9 @@ public class FileUploadServiceImpl implements FileUploadService {
|
|||||||
return UploadProgressResponse.fromSession(session);
|
return UploadProgressResponse.fromSession(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Async("fileUploadTaskExecutor")
|
|
||||||
@Transactional
|
@Transactional
|
||||||
@Override
|
@Override
|
||||||
public FileEntity completeFileProcessingAsync(FileUploadSession session, FileStatus status) {
|
public FileEntity completeFileProcessing(FileUploadSession session, FileStatus status) {
|
||||||
FileEntity saved = null;
|
|
||||||
try {
|
try {
|
||||||
Path filePath = Paths.get(session.getFilePath());
|
Path filePath = Paths.get(session.getFilePath());
|
||||||
String checksum = calculateChecksum(filePath);
|
String checksum = calculateChecksum(filePath);
|
||||||
@@ -249,11 +247,10 @@ public class FileUploadServiceImpl implements FileUploadService {
|
|||||||
.status(status)
|
.status(status)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
saved = fileEntityRepository.save(fileEntity);
|
FileEntity saved = fileEntityRepository.save(fileEntity);
|
||||||
|
|
||||||
if (session.getFileType().equals("image")) {
|
if (session.getFileType().equals("image")) {
|
||||||
Map<String, Long> hash = imageHashService.calculateHash(filePath);
|
Map<String, Long> hash = imageHashService.calculateHash(filePath);
|
||||||
|
|
||||||
imageHashService.create(saved, hash);
|
imageHashService.create(saved, hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -261,17 +258,17 @@ public class FileUploadServiceImpl implements FileUploadService {
|
|||||||
|
|
||||||
if (status != FileStatus.TEMP) {
|
if (status != FileStatus.TEMP) {
|
||||||
FileProtector.FileInfo fileInfo = fileUtil.createFileInfo(fileEntity, session.getConvertTo());
|
FileProtector.FileInfo fileInfo = fileUtil.createFileInfo(fileEntity, session.getConvertTo());
|
||||||
|
|
||||||
noCopyFileService.addFile(fileInfo);
|
noCopyFileService.addFile(fileInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info("File processing completed for session: {}", session.getUploadId());
|
log.info("File processing completed for session: {}", session.getUploadId());
|
||||||
|
return saved;
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("Failed to complete file processing for session {}: {}",
|
log.error("Failed to complete file processing for session {}: {}",
|
||||||
session.getUploadId(), e.getMessage(), e);
|
session.getUploadId(), e.getMessage(), e);
|
||||||
|
throw new FileUploadException("Failed to complete file processing", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return saved;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateSession(FileUploadSession session) {
|
private void validateSession(FileUploadSession session) {
|
||||||
@@ -386,11 +383,7 @@ public class FileUploadServiceImpl implements FileUploadService {
|
|||||||
fileEntityService.clearTempFiles(session.getUserId());
|
fileEntityService.clearTempFiles(session.getUserId());
|
||||||
}
|
}
|
||||||
|
|
||||||
FileEntity fileEntity = completeFileProcessingAsync(session, status);
|
FileEntity fileEntity = completeFileProcessing(session, status);
|
||||||
|
|
||||||
fileEntityRepository.flush();
|
|
||||||
|
|
||||||
entityManager.clear();
|
|
||||||
|
|
||||||
cloudStorageService.saveFilesToStorage(fileEntity.getMimeType(), fileEntity.getFileExtension(),
|
cloudStorageService.saveFilesToStorage(fileEntity.getMimeType(), fileEntity.getFileExtension(),
|
||||||
fileEntity.getFilePath());
|
fileEntity.getFilePath());
|
||||||
|
|||||||
Reference in New Issue
Block a user