Exemplo n.º 1
0
        public override void DeleteNote(INote inote)
        {
            var note = (FilesystemNote)inote;

            if (note.IsConflictNote)
            {
                return;
            }

            if (File.Exists(note.PathRemote))
            {
                ANFileSystemUtil.DeleteFileAndFolderIfEmpty(FilesystemPlugin.Name, _logger, _config.Folder, note.PathRemote);
            }
        }
Exemplo n.º 2
0
        public override RemoteUploadResult UploadNoteToRemote(ref INote inote, out INote conflict, ConflictResolutionStrategy strategy)
        {
            FilesystemNote note = (FilesystemNote)inote;

            var path = note.GetPath(_config);

            if (File.Exists(note.PathRemote) && path != note.PathRemote && !File.Exists(path))
            {
                _logger.Debug(FilesystemPlugin.Name, "Upload note to changed remote path");                 // path changed and new path does not exist

                WriteNoteToPath(note, path);
                conflict = null;
                ANFileSystemUtil.DeleteFileAndFolderIfEmpty(FilesystemPlugin.Name, _logger, _config.Folder, note.PathRemote);
                note.PathRemote = path;
                return(RemoteUploadResult.Uploaded);
            }
            else if (File.Exists(note.PathRemote) && path != note.PathRemote && File.Exists(path))
            {
                _logger.Debug(FilesystemPlugin.Name, "Upload note to changed remote path");                 // path changed and new path does exist

                var conf = ReadNoteFromPath(note.PathRemote);
                if (conf.ModificationDate > note.ModificationDate)
                {
                    conflict = conf;
                    if (strategy == ConflictResolutionStrategy.UseClientCreateConflictFile || strategy == ConflictResolutionStrategy.UseClientVersion || strategy == ConflictResolutionStrategy.ManualMerge)
                    {
                        WriteNoteToPath(note, path);
                        ANFileSystemUtil.DeleteFileAndFolderIfEmpty(FilesystemPlugin.Name, _logger, _config.Folder, note.PathRemote);
                        note.PathRemote = path;
                        return(RemoteUploadResult.Conflict);
                    }
                    else
                    {
                        note.PathRemote = path;
                        return(RemoteUploadResult.Conflict);
                    }
                }
                else
                {
                    WriteNoteToPath(note, path);
                    conflict = null;
                    ANFileSystemUtil.DeleteFileAndFolderIfEmpty(FilesystemPlugin.Name, _logger, _config.Folder, note.PathRemote);
                    note.PathRemote = path;
                    return(RemoteUploadResult.Uploaded);
                }
            }
            else if (File.Exists(path))             // normal update
            {
                var conf = ReadNoteFromPath(path);
                if (conf.ModificationDate > note.ModificationDate)
                {
                    conflict = conf;
                    if (strategy == ConflictResolutionStrategy.UseClientCreateConflictFile || strategy == ConflictResolutionStrategy.UseClientVersion)
                    {
                        WriteNoteToPath(note, path);
                        if (note.PathRemote != "")
                        {
                            ANFileSystemUtil.DeleteFileAndFolderIfEmpty(FilesystemPlugin.Name, _logger, _config.Folder, note.PathRemote);
                        }
                        note.PathRemote = path;
                        return(RemoteUploadResult.Conflict);
                    }
                    else
                    {
                        note.PathRemote = path;
                        return(RemoteUploadResult.Conflict);
                    }
                }
                else
                {
                    WriteNoteToPath(note, path);
                    conflict        = null;
                    note.PathRemote = path;
                    return(RemoteUploadResult.Uploaded);
                }
            }
            else             // new file
            {
                WriteNoteToPath(note, path);
                conflict        = null;
                note.PathRemote = path;
                return(RemoteUploadResult.Uploaded);
            }
        }