@@ -376,6 +376,24 @@ public class ApiController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/protect/{fileId}")
|
||||||
|
public ResponseEntity<?> protect( @PathVariable(required = false) String fileId) {
|
||||||
|
Optional<FileEntity> optionalFileEntity = fileEntityRepository.findById(fileId);
|
||||||
|
|
||||||
|
if (!optionalFileEntity.isPresent()) {
|
||||||
|
return ResponseEntity.notFound().build();
|
||||||
|
}
|
||||||
|
FileEntity fileEntity = optionalFileEntity.get();
|
||||||
|
FileProtector.FileInfo fileInfo = fileUtil.createFileInfo(fileEntity);
|
||||||
|
|
||||||
|
noCopyFileService.addFile(fileInfo);
|
||||||
|
|
||||||
|
fileEntity.setProtectionStatus(ProtectionStatus.PROCESSING);
|
||||||
|
fileEntityRepository.save(fileEntity);
|
||||||
|
|
||||||
|
return ResponseEntity.ok().build();
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/check/{fileId}/{type}")
|
@GetMapping("/check/{fileId}/{type}")
|
||||||
public ResponseEntity<?> check(@PathVariable(required = false) String fileId,
|
public ResponseEntity<?> check(@PathVariable(required = false) String fileId,
|
||||||
@PathVariable(required = false) String type) {
|
@PathVariable(required = false) String type) {
|
||||||
|
|||||||
@@ -8,15 +8,13 @@ import org.springframework.data.domain.Pageable;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.soune.nocopy.dto.file.SimilarFileDTO;
|
import ru.soune.nocopy.dto.file.SimilarFileDTO;
|
||||||
import ru.soune.nocopy.dto.file.SimilarityFilter;
|
import ru.soune.nocopy.dto.file.SimilarityFilter;
|
||||||
|
import ru.soune.nocopy.entity.file.ImageHashEntity;
|
||||||
import ru.soune.nocopy.repository.ImageHashRepository;
|
import ru.soune.nocopy.repository.ImageHashRepository;
|
||||||
import ru.soune.nocopy.repository.ImageSimilarityRepository;
|
import ru.soune.nocopy.repository.ImageSimilarityRepository;
|
||||||
import ru.soune.nocopy.repository.SimilarImageProjection;
|
import ru.soune.nocopy.repository.SimilarImageProjection;
|
||||||
import ru.soune.nocopy.util.FileUtil;
|
import ru.soune.nocopy.util.FileUtil;
|
||||||
|
|
||||||
import java.util.AbstractMap;
|
import java.util.*;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Comparator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@@ -73,8 +71,13 @@ public class FileSimilarityService {
|
|||||||
int duplicate, int similar) {
|
int duplicate, int similar) {
|
||||||
List<SimilarImageProjection> candidates = repository.findCandidates(fileId);
|
List<SimilarImageProjection> candidates = repository.findCandidates(fileId);
|
||||||
|
|
||||||
var imageHashEntity = hashRepository.findById(fileId)
|
Optional<ImageHashEntity> hashOptional = hashRepository.findById(fileId);
|
||||||
.orElseThrow(() -> new RuntimeException("Hash not found"));
|
|
||||||
|
if (hashOptional.isEmpty()) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
var imageHashEntity = hashOptional.get();
|
||||||
|
|
||||||
Long hash64Hi = imageHashEntity.getHash64Hi();
|
Long hash64Hi = imageHashEntity.getHash64Hi();
|
||||||
Long hash64Lo = imageHashEntity.getHash64Lo();
|
Long hash64Lo = imageHashEntity.getHash64Lo();
|
||||||
|
|||||||
Reference in New Issue
Block a user