NCBACK-25 add protection for audio and use hash method from library
Test Workflow / test (push) Successful in 4s
Test Workflow / test (push) Successful in 4s
This commit is contained in:
@@ -9,6 +9,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import ru.soune.nocopy.entity.file.FileEntity;
|
import ru.soune.nocopy.entity.file.FileEntity;
|
||||||
import ru.soune.nocopy.entity.file.ProtectionStatus;
|
import ru.soune.nocopy.entity.file.ProtectionStatus;
|
||||||
import ru.soune.nocopy.repository.FileEntityRepository;
|
import ru.soune.nocopy.repository.FileEntityRepository;
|
||||||
|
import ru.soune.nocopy.util.FileUtil;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -21,12 +22,14 @@ public class FileProcessingOrchestrator {
|
|||||||
|
|
||||||
private final FileEntityRepository fileRepository;
|
private final FileEntityRepository fileRepository;
|
||||||
|
|
||||||
|
private final FileUtil fileUtil;
|
||||||
|
|
||||||
public void initializeProcessingQueue() {
|
public void initializeProcessingQueue() {
|
||||||
List<FileEntity> filesToProtect = fileRepository.findByProtectionStatus(ProtectionStatus.NOT_PROTECTED);
|
List<FileEntity> filesToProtect = fileRepository.findByProtectionStatus(ProtectionStatus.NOT_PROTECTED);
|
||||||
|
|
||||||
for (FileEntity fileEntity : filesToProtect) {
|
for (FileEntity fileEntity : filesToProtect) {
|
||||||
try {
|
try {
|
||||||
FileProtector.FileInfo fileInfo = createFileInfo(fileEntity);
|
FileProtector.FileInfo fileInfo = fileUtil.createFileInfo(fileEntity);
|
||||||
|
|
||||||
noCopyFileService.addFile(fileInfo);
|
noCopyFileService.addFile(fileInfo);
|
||||||
|
|
||||||
@@ -42,18 +45,12 @@ public class FileProcessingOrchestrator {
|
|||||||
List<FileEntity> newFiles = fileRepository.findAllActiveFilesAndNotProtected();
|
List<FileEntity> newFiles = fileRepository.findAllActiveFilesAndNotProtected();
|
||||||
|
|
||||||
for (FileEntity fileEntity : newFiles) {
|
for (FileEntity fileEntity : newFiles) {
|
||||||
FileProtector.FileInfo fileInfo = createFileInfo(fileEntity);
|
FileProtector.FileInfo fileInfo = fileUtil.createFileInfo(fileEntity);
|
||||||
|
|
||||||
noCopyFileService.addFile(fileInfo);
|
noCopyFileService.addFile(fileInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private FileProtector.FileInfo createFileInfo(FileEntity fileEntity) {
|
|
||||||
FileProtector.Type type = determineFileType(fileEntity.getMimeType());
|
|
||||||
|
|
||||||
return new FileProtector.FileInfo(type, fileEntity.getId(), String.valueOf(fileEntity.getUserId()));
|
|
||||||
}
|
|
||||||
|
|
||||||
private FileProtector.Type determineFileType(String mimeType) {
|
private FileProtector.Type determineFileType(String mimeType) {
|
||||||
if (mimeType == null) {
|
if (mimeType == null) {
|
||||||
return FileProtector.Type.IMAGE;
|
return FileProtector.Type.IMAGE;
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package ru.soune.nocopy.service.file.impl;
|
package ru.soune.nocopy.service.file.impl;
|
||||||
|
|
||||||
|
import com.vrt.NoCopyFileService;
|
||||||
|
import com.vrt.fileprotection.FileProtector;
|
||||||
import jakarta.annotation.PostConstruct;
|
import jakarta.annotation.PostConstruct;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -25,6 +27,7 @@ import ru.soune.nocopy.service.FileSimilarityService;
|
|||||||
import ru.soune.nocopy.service.ImageHashService;
|
import ru.soune.nocopy.service.ImageHashService;
|
||||||
import ru.soune.nocopy.service.file.FileEntityService;
|
import ru.soune.nocopy.service.file.FileEntityService;
|
||||||
import ru.soune.nocopy.service.file.FileUploadService;
|
import ru.soune.nocopy.service.file.FileUploadService;
|
||||||
|
import ru.soune.nocopy.util.FileUtil;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.nio.file.*;
|
import java.nio.file.*;
|
||||||
@@ -75,6 +78,10 @@ public class FileUploadServiceImpl implements FileUploadService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private FileEntityService fileEntityService;
|
private FileEntityService fileEntityService;
|
||||||
|
|
||||||
|
private final NoCopyFileService noCopyFileService;
|
||||||
|
|
||||||
|
private final FileUtil fileUtil;
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void init() {
|
public void init() {
|
||||||
try {
|
try {
|
||||||
@@ -277,6 +284,7 @@ public class FileUploadServiceImpl implements FileUploadService {
|
|||||||
FileEntity saved = fileEntityRepository.save(fileEntity);
|
FileEntity saved = fileEntityRepository.save(fileEntity);
|
||||||
|
|
||||||
Map<String, Integer> hash = imageHashService.calculateHash(filePath);
|
Map<String, Integer> hash = imageHashService.calculateHash(filePath);
|
||||||
|
|
||||||
imageHashService.create(saved, hash);
|
imageHashService.create(saved, hash);
|
||||||
|
|
||||||
cleanupSessionFiles(session);
|
cleanupSessionFiles(session);
|
||||||
@@ -484,11 +492,17 @@ public class FileUploadServiceImpl implements FileUploadService {
|
|||||||
session.setChecksum(checksum);
|
session.setChecksum(checksum);
|
||||||
session.setStatus(UploadStatus.COMPLETED);
|
session.setStatus(UploadStatus.COMPLETED);
|
||||||
session.setCompletedAt(LocalDateTime.now());
|
session.setCompletedAt(LocalDateTime.now());
|
||||||
|
|
||||||
sessionRepository.save(session);
|
sessionRepository.save(session);
|
||||||
log.info("Upload session updated to COMPLETED: {}", session.getUploadId());
|
log.info("Upload session updated to COMPLETED: {}", session.getUploadId());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
fileEntityService.createFromUploadSession(session, checksum);
|
FileEntity fileEntity = fileEntityService.createFromUploadSession(session, checksum);
|
||||||
|
|
||||||
|
FileProtector.FileInfo fileInfo = fileUtil.createFileInfo(fileEntity);
|
||||||
|
|
||||||
|
noCopyFileService.addFile(fileInfo);
|
||||||
|
|
||||||
log.info("FileEntity successfully created for session: {}",
|
log.info("FileEntity successfully created for session: {}",
|
||||||
session.getUploadId());
|
session.getUploadId());
|
||||||
} catch (DuplicateImageException e) {
|
} catch (DuplicateImageException e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user