private void Execute(ISender client, DoPathRename message) { bool isError = false; string statusMessage = null; Action <string> onError = (msg) => { isError = true; statusMessage = msg; }; try { switch (message.PathType) { case FileType.Directory: Directory.Move(message.Path, message.NewPath); client.Send(new SetStatusFileManager { Message = "Renamed directory", SetLastDirectorySeen = false }); break; case FileType.File: File.Move(message.Path, message.NewPath); client.Send(new SetStatusFileManager { Message = "Renamed file", SetLastDirectorySeen = false }); break; } Execute(client, new GetDirectory { RemotePath = Path.GetDirectoryName(message.NewPath) }); } catch (UnauthorizedAccessException) { onError("RenamePath No permission"); } catch (PathTooLongException) { onError("RenamePath Path too long"); } catch (DirectoryNotFoundException) { onError("RenamePath Path not found"); } catch (IOException) { onError("RenamePath I/O error"); } catch (Exception) { onError("RenamePath Failed"); } finally { if (isError && !string.IsNullOrEmpty(statusMessage)) { client.Send(new SetStatusFileManager { Message = statusMessage, SetLastDirectorySeen = false }); } } }
public static void HandleDoPathRename(DoPathRename command, Networking.Client client) { bool isError = false; string message = null; Action <string> onError = (msg) => { isError = true; message = msg; }; try { switch (command.PathType) { case FileType.Directory: Directory.Move(command.Path, command.NewPath); client.Send(new SetStatusFileManager { Message = "Renamed directory", SetLastDirectorySeen = false }); break; case FileType.File: System.IO.File.Move(command.Path, command.NewPath); client.Send(new SetStatusFileManager { Message = "Renamed file", SetLastDirectorySeen = false }); break; } HandleGetDirectory(new GetDirectory { RemotePath = Path.GetDirectoryName(command.NewPath) }, client); } catch (UnauthorizedAccessException) { onError("RenamePath No permission"); } catch (PathTooLongException) { onError("RenamePath Path too long"); } catch (DirectoryNotFoundException) { onError("RenamePath Path not found"); } catch (IOException) { onError("RenamePath I/O error"); } catch (Exception) { onError("RenamePath Failed"); } finally { if (isError && !string.IsNullOrEmpty(message)) { client.Send(new SetStatusFileManager { Message = message, SetLastDirectorySeen = false }); } } }