49 lines
1.8 KiB
Java
49 lines
1.8 KiB
Java
package ru.soune.nocopy.util;
|
|
|
|
import com.vrt.fileprotection.FileProtector;
|
|
import com.vrt.fileprotection.image.ImageLocalSearch;
|
|
import com.vrt.fileprotection.image.ImageScore;
|
|
import org.springframework.stereotype.Service;
|
|
import ru.soune.nocopy.dto.file.SimilarFileDTO;
|
|
import ru.soune.nocopy.entity.file.FileEntity;
|
|
|
|
@Service
|
|
public class FileUtil {
|
|
public ImageLocalSearch.Result convertToResult(SimilarFileDTO response) {
|
|
FileProtector.FileInfo fileInfo =
|
|
new FileProtector.FileInfo(FileProtector.Type.IMAGE, response.getFileId(),
|
|
String.valueOf(response.getOwnerId()));
|
|
ImageScore imageScore = new ImageScore(ImageScore.Rate.valueOf(response.getSimilarityLevel()),
|
|
response.getHammingDistance());
|
|
|
|
return new ImageLocalSearch.Result(fileInfo, imageScore);
|
|
}
|
|
|
|
public FileProtector.FileInfo createFileInfo(FileEntity fileEntity) {
|
|
FileProtector.Type type = determineFileType(fileEntity.getMimeType());
|
|
|
|
return new FileProtector.FileInfo(type, fileEntity.getId(), String.valueOf(fileEntity.getUserId()));
|
|
}
|
|
|
|
public int hamming64(long aHi, long aLo, long bHi, long bLo) {
|
|
return Long.bitCount(aHi ^ bHi)
|
|
+ Long.bitCount(aLo ^ bLo);
|
|
}
|
|
|
|
private FileProtector.Type determineFileType(String mimeType) {
|
|
if (mimeType == null) {
|
|
return FileProtector.Type.IMAGE;
|
|
}
|
|
|
|
if (mimeType.startsWith("image")) {
|
|
return FileProtector.Type.IMAGE;
|
|
} else if (mimeType.startsWith("video")) {
|
|
return FileProtector.Type.VIDEO;
|
|
} else if (mimeType.startsWith("audio")) {
|
|
return FileProtector.Type.AUDIO;
|
|
} else {
|
|
return FileProtector.Type.IMAGE;
|
|
}
|
|
}
|
|
}
|