diff --git a/src/main/java/ru/soune/nocopy/service/FileSimilarityService.java b/src/main/java/ru/soune/nocopy/service/FileSimilarityService.java index 4401cad..4030844 100644 --- a/src/main/java/ru/soune/nocopy/service/FileSimilarityService.java +++ b/src/main/java/ru/soune/nocopy/service/FileSimilarityService.java @@ -18,6 +18,7 @@ import ru.soune.nocopy.exception.DuplicateImageException; import ru.soune.nocopy.repository.*; import ru.soune.nocopy.util.FileUtil; +import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.security.MessageDigest; @@ -113,6 +114,7 @@ public class FileSimilarityService { public FileEntity findDuplicateByHash(String path, String mimeType, Long userId) throws Exception { String hash = calculateFileHash(path); + User user = userRepository.findById(userId).orElseThrow(); Company company = user.getCompany(); List userIds = new ArrayList<>(); @@ -126,8 +128,13 @@ public class FileSimilarityService { List fileEntityList = fileEntityRepository.findByMimeTypeAndUserIds(mimeType, userIds); for (FileEntity file : fileEntityList) { - if (calculateFileHash(file.getFilePath()).equals(hash)) { - return file; + File existingFile = new File(file.getProtectedFilePath()); + File newFile = new File(path); + + if (existingFile.length() == newFile.length()) { + if (calculateFileHash(file.getProtectedFilePath()).equals(hash)) { + return file; + } } } diff --git a/src/main/java/ru/soune/nocopy/service/file/impl/AudioLocalSearchImpl.java b/src/main/java/ru/soune/nocopy/service/file/impl/AudioLocalSearchImpl.java index 76f2499..7d2e137 100644 --- a/src/main/java/ru/soune/nocopy/service/file/impl/AudioLocalSearchImpl.java +++ b/src/main/java/ru/soune/nocopy/service/file/impl/AudioLocalSearchImpl.java @@ -28,7 +28,7 @@ public class AudioLocalSearchImpl implements AudioLocalSearch { if (fileEntity == null) return null; - return fileUtil.createFileInfo(fileEntity, fileEntity.getFileExtension()); + return fileUtil.createFileInfo(fileEntity, null); } @Override diff --git a/src/main/java/ru/soune/nocopy/service/file/impl/DocumentLocalSearchImpl.java b/src/main/java/ru/soune/nocopy/service/file/impl/DocumentLocalSearchImpl.java index 7e3f657..b7151d1 100644 --- a/src/main/java/ru/soune/nocopy/service/file/impl/DocumentLocalSearchImpl.java +++ b/src/main/java/ru/soune/nocopy/service/file/impl/DocumentLocalSearchImpl.java @@ -23,7 +23,7 @@ public class DocumentLocalSearchImpl implements DocumentLocalSearch { @Override public @Nullable FileProtector.FileInfo findByIds(@NotNull String ownerId, @NotNull String fileId) { FileEntity fileEntity = fileEntityRepository.findByIdAndUserId(fileId, Long.valueOf(ownerId)); - FileProtector.FileInfo fileInfo = fileUtil.createFileInfo(fileEntity, fileEntity.getFileExtension()); + FileProtector.FileInfo fileInfo = fileUtil.createFileInfo(fileEntity, null); log.info("fileInfo: {}", fileInfo); return fileInfo;