public async Task RenameFsTest_FakeIStorage_File_To_ExistFolder_Json_SidecarFile() { CreateFoldersAndFilesInDatabase(); var initFolderList = new List <string> { "/", "/test" }; var initFileList = new List <string> { _fileInExist.FilePath, JsonSidecarLocation.JsonLocation(_fileInExist.FilePath) }; var iStorage = new FakeIStorage(initFolderList, initFileList); // the input is still FileName = "file.jpg", ParentDirectory = "/exist", var renameFs = await new RenameService(_query, iStorage) .Rename(initFileList.FirstOrDefault(), "/test/", true); // to file: (in database) var all2 = await _query.GetAllRecursiveAsync(); var selectFile3 = all2.FirstOrDefault(p => p.FileName == "file.jpg"); Assert.AreEqual("file.jpg", selectFile3.FileName); Assert.AreEqual("/test", selectFile3.ParentDirectory); // check if sidecar json are moved (on fake Filesystem) var values = iStorage.GetAllFilesInDirectoryRecursive("/test").ToList(); Assert.AreEqual("/test/.starsky.file.jpg.json", values.FirstOrDefault(p => p == "/test/.starsky.file.jpg.json")); Assert.AreEqual(FileIndexItem.ExifStatus.NotFoundSourceMissing, renameFs.FirstOrDefault().Status); Assert.AreEqual(FileIndexItem.ExifStatus.Ok, renameFs[1].Status); RemoveFoldersAndFilesInDatabase(); }
public async Task RenameFsTest_RenameOneFile_JsonSidecarFile() { CreateFoldersAndFilesInDatabase(); var iStorage = new FakeIStorage(new List <string> { _folderExist.FilePath }, new List <string> { _fileInExist.FilePath, JsonSidecarLocation.JsonLocation(_fileInExist.FilePath) }); var renameFs = await new RenameService(_query, iStorage) .Rename(_fileInExist.FilePath, _folderExist.FilePath + "/test2.jpg"); // check if sidecar json are moved (on fake Filesystem) var values = iStorage.GetAllFilesInDirectoryRecursive("/").ToList(); Assert.AreEqual("/exist/.starsky.test2.jpg.json", values.FirstOrDefault(p => p == "/exist/.starsky.test2.jpg.json")); Assert.AreEqual(FileIndexItem.ExifStatus.Ok, renameFs.FirstOrDefault(p => p.FilePath == "/exist/test2.jpg").Status); Assert.AreEqual(FileIndexItem.ExifStatus.NotFoundSourceMissing, renameFs.FirstOrDefault(p => p.FilePath == "/exist/file.jpg").Status); RemoveFoldersAndFilesInDatabase(); }
/// <summary> /// Move sidecar files when those exist /// </summary> /// <param name="inputFileSubPath">from path</param> /// <param name="toFileSubPath">to path</param> private void MoveSidecarFile(string inputFileSubPath, string toFileSubPath) { // json sidecar move var jsonInputFileSubPathSidecarFile = JsonSidecarLocation .JsonLocation(inputFileSubPath); var jsonSidecarFile = JsonSidecarLocation.JsonLocation(toFileSubPath); if (_iStorage.ExistFile(jsonInputFileSubPathSidecarFile)) { _iStorage.FileMove(jsonInputFileSubPathSidecarFile, jsonSidecarFile); } // xmp sidecar file move if (!ExtensionRolesHelper.IsExtensionForceXmp(inputFileSubPath)) { return; } var xmpInputFileSubPathSidecarFile = ExtensionRolesHelper .ReplaceExtensionWithXmp(inputFileSubPath); var xmpSidecarFile = ExtensionRolesHelper .ReplaceExtensionWithXmp(toFileSubPath); if (_iStorage.ExistFile(xmpInputFileSubPathSidecarFile)) { _iStorage.FileMove(xmpInputFileSubPathSidecarFile, xmpSidecarFile); } }
private void RemoveJsonSideCarFile(DetailView detailViewItem) { // remove the json sidecar file (if exist) var jsonSubPath = JsonSidecarLocation.JsonLocation(detailViewItem .FileIndexItem.ParentDirectory, detailViewItem .FileIndexItem.FileName); _iStorage.FileDelete(jsonSubPath); }
/// <summary> /// Write FileIndexItem to IStorage /// </summary> /// <param name="fileIndexItem">data object</param> /// <returns>void</returns> public async Task WriteAsync(FileIndexItem fileIndexItem) { var jsonOutput = JsonSerializer.Serialize(fileIndexItem, new JsonSerializerOptions { WriteIndented = true, }); var jsonSubPath = JsonSidecarLocation.JsonLocation(fileIndexItem.ParentDirectory, fileIndexItem.FileName); await _iStorage.WriteStreamAsync( new PlainTextFileHelper().StringToStream(jsonOutput), jsonSubPath); }
/// <summary> /// Read sidecar item /// </summary> /// <param name="fileIndexItem">data object</param> /// <returns>data</returns> public FileIndexItem Read(FileIndexItem fileIndexItem) { var jsonSubPath = JsonSidecarLocation.JsonLocation(fileIndexItem.ParentDirectory, fileIndexItem.FileName); // when sidecar file does not exist if (!_iStorage.ExistFile(jsonSubPath)) { return(fileIndexItem); } var returnFileIndexItem = new DeserializeJson(_iStorage).Read <FileIndexItem>(jsonSubPath); returnFileIndexItem.Status = FileIndexItem.ExifStatus.ExifWriteNotSupported; return(returnFileIndexItem); }