• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

ファイル整理用ツールのPrism+WPFサンプル実装


Commit MetaInfo

Revisiond9fc2802451b187ad87a9291b472ca2679fa5d68 (tree)
Time2022-11-06 11:10:04
Authoryoshy <yoshy.org.bitbucket@gz.j...>
Commiteryoshy

Log Message

[MOD] ファイルシステム操作系インタラクタのダイアログ処理を切り出し

Change Summary

Incremental Difference

--- a/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemAutoFixFolderTimestampOperationInteractor.cs
+++ b/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemAutoFixFolderTimestampOperationInteractor.cs
@@ -1,5 +1,4 @@
1-using CleanAuLait.Adaptor.Boundary.Gateway.UI.Dialog;
2-using CleanAuLait.UseCase.Interactor;
1+using CleanAuLait.UseCase.Interactor;
32 using CleanAuLait.UseCase.Response;
43 using FolderCategorizer2.Domain.Boundary.Service;
54 using FolderCategorizer2.Domain.Model.Entity;
@@ -10,10 +9,8 @@ using FolderCategorizer2.UseCase.Boundary.FileSystemOperation.Interactor;
109 using FolderCategorizer2.UseCase.FileSystemOperation.Request;
1110 using FolderCategorizer2.UseCase.FileSystemOperation.Response;
1211 using FolderCategorizer2.UseCase.Internal;
13-using Prism.Services.Dialogs;
1412 using System.Collections.Generic;
1513 using System.Linq;
16-using System.Windows;
1714
1815 namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
1916 {
@@ -23,18 +20,18 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
2320 {
2421 //private static readonly ILogger logger = LogManager.GetCurrentClassLogger();
2522
26- private readonly IFileSystemOperationLogic logic;
23+ private readonly IFileSystemOperationLogic operation;
24+ private readonly IFileSystemDialogLogic dialog;
2725 private readonly IFileListService fileList;
28- private readonly IUniversalDialogProxy dialog;
2926 private readonly IFileSystemAutoFixFolderTimestampOperationPresenter presenter;
3027
3128 public FileSystemAutoFixFolderTimestampOperationInteractor(
32- IFileSystemOperationLogic logic,
33- IUniversalDialogProxy dialog,
29+ IFileSystemOperationLogic operation,
30+ IFileSystemDialogLogic dialog,
3431 IFileListService fileList,
3532 IFileSystemAutoFixFolderTimestampOperationPresenter presenter)
3633 {
37- this.logic = logic;
34+ this.operation = operation;
3835 this.dialog = dialog;
3936 this.fileList = fileList;
4037 this.presenter = presenter;
@@ -44,13 +41,13 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
4441 {
4542 IEnumerable<FileSystemSourceFile> SourceFileList = req.SourceFileList;
4643
47- if (!Confirm(SourceFileList))
44+ if (!this.dialog.ConfirmAutoFixFolderTimestamp(SourceFileList))
4845 {
4946 // don't show abort dialog.
5047 return new();
5148 }
5249
53- if (!this.logic.AutoFixFolderTimestamp(SourceFileList))
50+ if (!this.operation.AutoFixFolderTimestamp(SourceFileList))
5451 {
5552 return UseCaseResponse.Abort<FileSystemAutoFixFolderTimestampOperationResponse>("エラーのため処理が中止されました");
5653 }
@@ -60,27 +57,6 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
6057 return this.presenter.Present(req, res);
6158 }
6259
63- private bool Confirm(IEnumerable<FileSystemSourceFile> SourceFileList)
64- {
65- string msg = CreateConfirmMessage(SourceFileList);
66-
67- IDialogResult result = this.dialog.ShowYesNoDialog("フォルダのタイムスタンプを自動修正 - 確認", msg, MessageBoxImage.Question);
68-
69- return result.Result == ButtonResult.Yes;
70- }
71-
72- private static string CreateConfirmMessage(IEnumerable<FileSystemSourceFile> SourceFileList)
73- {
74- string msg = "【仮】フォルダのタイムスタンプを自動修正してもよろしいですか";
75-
76- foreach (FileSystemSourceFile sourceFile in SourceFileList)
77- {
78- msg += "\n\n対象:" + sourceFile.SourceAbsolutePath;
79- }
80-
81- return msg;
82- }
83-
8460 private FileSystemAutoFixFolderTimestampOperationResponse CreateResponse(IEnumerable<FileSystemSourceFile> SourceFileList)
8561 {
8662 // FIX ME
--- a/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemBundleFileOperationInteractor.cs
+++ b/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemBundleFileOperationInteractor.cs
@@ -29,21 +29,21 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
2929 private const string DATE_TIME_FORMAT = "yyyy/MM/dd HH:mm:ss";
3030
3131 private readonly IFileSystemService fileSystem;
32+ private readonly IFileSystemOperationLogic operation;
3233 private readonly ICategorizePromptViewProxy dialog;
33- private readonly IFileSystemOperationLogic logic;
3434 private readonly IFileListService fileList;
3535 private readonly IFileSystemBundleFileOperationPresenter presenter;
3636
3737 public FileSystemBundleFileOperationInteractor(
3838 IFileSystemService fileSystem,
39+ IFileSystemOperationLogic operation,
3940 ICategorizePromptViewProxy dialog,
40- IFileSystemOperationLogic logic,
4141 IFileListService fileList,
4242 IFileSystemBundleFileOperationPresenter presenter)
4343 {
4444 this.fileSystem = fileSystem;
45+ this.operation = operation;
4546 this.dialog = dialog;
46- this.logic = logic;
4747 this.fileList = fileList;
4848 this.presenter = presenter;
4949 }
@@ -69,8 +69,8 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
6969 return new();
7070 }
7171
72- if (!this.logic.CreateFolder(sourceFilesList, targetName)
73- || !this.logic.OverwriteCreationAndLastWriteTime(
72+ if (!this.operation.CreateFolder(sourceFilesList, targetName)
73+ || !this.operation.OverwriteCreationAndLastWriteTime(
7474 sourceFilesList, targetName, createdAt, lastWriteAt))
7575 {
7676 return UseCaseResponse.Abort<FileSystemBundleFileOperationResponse>("エラーのため処理が中止されました");
@@ -87,7 +87,7 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
8787 )
8888 );
8989
90- if (!this.logic.MoveFile(sourceTargetEntries))
90+ if (!this.operation.MoveFile(sourceTargetEntries))
9191 {
9292 return UseCaseResponse.Abort<FileSystemBundleFileOperationResponse>("エラーのため処理が中止されました");
9393 }
--- a/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemCopyOperationInteractor.cs
+++ b/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemCopyOperationInteractor.cs
@@ -1,5 +1,4 @@
1-using CleanAuLait.Adaptor.Boundary.Gateway.UI.Dialog;
2-using CleanAuLait.UseCase.Interactor;
1+using CleanAuLait.UseCase.Interactor;
32 using CleanAuLait.UseCase.Response;
43 using FolderCategorizer2.Domain.Boundary.Service;
54 using FolderCategorizer2.Domain.Service.Dto;
@@ -7,10 +6,8 @@ using FolderCategorizer2.UseCase.Boundary.FileSystemOperation.Interactor;
76 using FolderCategorizer2.UseCase.FileSystemOperation.Request;
87 using FolderCategorizer2.UseCase.FileSystemOperation.Response;
98 using FolderCategorizer2.UseCase.Internal;
10-using Prism.Services.Dialogs;
119 using System.Collections.Generic;
1210 using System.Linq;
13-using System.Windows;
1411
1512 namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
1613 {
@@ -21,20 +18,20 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
2118 //private static readonly ILogger logger = LogManager.GetCurrentClassLogger();
2219
2320 private readonly IFileSystemService fileSystem;
24- private readonly IFileSystemOperationLogic logic;
21+ private readonly IFileSystemOperationLogic operation;
22+ private readonly IFileSystemDialogLogic dialog;
2523 private readonly IFolderTreeService folderTree;
26- private readonly IUniversalDialogProxy dialog;
2724
2825 public FileSystemCopyOperationInteractor(
2926 IFileSystemService fileSystem,
30- IFileSystemOperationLogic logic,
31- IFolderTreeService folderTree,
32- IUniversalDialogProxy dialog)
27+ IFileSystemOperationLogic operation,
28+ IFileSystemDialogLogic dialog,
29+ IFolderTreeService folderTree)
3330 {
3431 this.fileSystem = fileSystem;
35- this.logic = logic;
36- this.folderTree = folderTree;
32+ this.operation = operation;
3733 this.dialog = dialog;
34+ this.folderTree = folderTree;
3835 }
3936
4037 public override FileSystemCopyOperationResponse Interact(FileSystemCopyOperationRequest req)
@@ -57,13 +54,13 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
5754 IEnumerable<FileSystemSourceFilesTargetFolder> sourceTargetEntries =
5855 FileSystemSourceFilesTargetFolder.Join(targetFolders, sourceFilesList);
5956
60- if (!Confirm(sourceTargetEntries))
57+ if (!this.dialog.ConfirmCopyFiles(sourceTargetEntries))
6158 {
6259 // don't show abort dialog.
6360 return new();
6461 }
6562
66- if (!this.logic.CopyFiles(sourceTargetEntries))
63+ if (!this.operation.CopyFiles(sourceTargetEntries))
6764 {
6865 return UseCaseResponse.Abort<FileSystemCopyOperationResponse>("エラーのため処理が中止されました");
6966 }
@@ -129,32 +126,6 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
129126 return msg;
130127 }
131128
132- private bool Confirm(IEnumerable<FileSystemSourceFilesTargetFolder> sourceTargetEntries)
133- {
134- string msg = CreateConfirmMessage(sourceTargetEntries);
135-
136- IDialogResult result = this.dialog.ShowYesNoDialog("ファイルのコピー - 確認", msg, MessageBoxImage.Question);
137-
138- return result.Result == ButtonResult.Yes;
139- }
140-
141- private static string CreateConfirmMessage(IEnumerable<FileSystemSourceFilesTargetFolder> sourceTargetEntries)
142- {
143- string msg = "【仮】コピーしてもよろしいですか";
144-
145- foreach (FileSystemSourceFilesTargetFolder sourceTargetEntry in sourceTargetEntries)
146- {
147- msg += "\n\nコピー元:" + sourceTargetEntry.SourceFiles.AbsolutePath;
148- foreach (string name in sourceTargetEntry.SourceFiles.Names)
149- {
150- msg += "\n・" + name;
151- }
152- msg += "\n↓\nコピー先:" + sourceTargetEntry.TargetFolder.AbsolutePath;
153- }
154-
155- return msg;
156- }
157-
158129 private void SelectNode(IEnumerable<FileSystemSourceFilesTargetFolder> sourceTargetEntries)
159130 {
160131 FileSystemSourceFilesTargetFolder sourceTargetEntry = sourceTargetEntries.First();
--- a/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemDeleteOperationInteractor.cs
+++ b/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemDeleteOperationInteractor.cs
@@ -1,5 +1,4 @@
1-using CleanAuLait.Adaptor.Boundary.Gateway.UI.Dialog;
2-using CleanAuLait.UseCase.Interactor;
1+using CleanAuLait.UseCase.Interactor;
32 using CleanAuLait.UseCase.Response;
43 using FolderCategorizer2.Domain.Boundary.Service;
54 using FolderCategorizer2.Domain.Model.Entity;
@@ -10,10 +9,8 @@ using FolderCategorizer2.UseCase.Boundary.FileSystemOperation.Interactor;
109 using FolderCategorizer2.UseCase.FileSystemOperation.Request;
1110 using FolderCategorizer2.UseCase.FileSystemOperation.Response;
1211 using FolderCategorizer2.UseCase.Internal;
13-using Prism.Services.Dialogs;
1412 using System.Collections.Generic;
1513 using System.Linq;
16-using System.Windows;
1714
1815 namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
1916 {
@@ -23,21 +20,18 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
2320 {
2421 //private static readonly ILogger logger = LogManager.GetCurrentClassLogger();
2522
26- private readonly IFileSystemService fileSystem;
27- private readonly IFileSystemOperationLogic logic;
28- private readonly IUniversalDialogProxy dialog;
23+ private readonly IFileSystemOperationLogic operation;
24+ private readonly IFileSystemDialogLogic dialog;
2925 private readonly IFileListService fileList;
3026 private readonly IFileSystemDeleteOperationPresenter presenter;
3127
3228 public FileSystemDeleteOperationInteractor(
33- IFileSystemService fileSystem,
34- IFileSystemOperationLogic logic,
35- IUniversalDialogProxy dialog,
29+ IFileSystemOperationLogic operation,
30+ IFileSystemDialogLogic dialog,
3631 IFileListService fileList,
3732 IFileSystemDeleteOperationPresenter presenter)
3833 {
39- this.fileSystem = fileSystem;
40- this.logic = logic;
34+ this.operation = operation;
4135 this.dialog = dialog;
4236 this.fileList = fileList;
4337 this.presenter = presenter;
@@ -47,13 +41,13 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
4741 {
4842 IEnumerable<FileSystemSourceFiles> sourceFilesList = req.SourceFilesList;
4943
50- if (!Confirm(sourceFilesList))
44+ if (!this.dialog.ConfirmDeleteFile(sourceFilesList))
5145 {
5246 // don't show abort dialog.
5347 return new();
5448 }
5549
56- if (!this.logic.DeleteFile(sourceFilesList))
50+ if (!this.operation.DeleteFile(sourceFilesList))
5751 {
5852 return UseCaseResponse.Abort<FileSystemDeleteOperationResponse>("エラーのため処理が中止されました");
5953 }
@@ -63,30 +57,6 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
6357 return this.presenter.Present(req, res);
6458 }
6559
66- private bool Confirm(IEnumerable<FileSystemSourceFiles> sourceFilesList)
67- {
68- string msg = CreateConfirmMessage(sourceFilesList);
69-
70- IDialogResult result = this.dialog.ShowYesNoDialog("ファイルの削除 - 確認", msg, MessageBoxImage.Question);
71-
72- return result.Result == ButtonResult.Yes;
73- }
74-
75- private static string CreateConfirmMessage(IEnumerable<FileSystemSourceFiles> sourceFilesList)
76- {
77- string msg = "【仮】削除してもよろしいですか";
78- foreach (FileSystemSourceFiles sourceFiles in sourceFilesList)
79- {
80- msg += "\n\n削除元:" + sourceFiles.AbsolutePath;
81- foreach (string name in sourceFiles.Names)
82- {
83- msg += "\n・" + name;
84- }
85- }
86-
87- return msg;
88- }
89-
9060 private FileSystemDeleteOperationResponse CreateResponse(IEnumerable<FileSystemSourceFiles> sourceFilesList)
9161 {
9262 // FIX ME
--- a/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemExchangeCreationAndLastWriteTimeOperationInteractor.cs
+++ b/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemExchangeCreationAndLastWriteTimeOperationInteractor.cs
@@ -21,18 +21,18 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
2121 : AbstractUseCaseInteractor<FileSystemExchangeCreationAndLastWriteTimeOperationRequest, FileSystemExchangeCreationAndLastWriteTimeOperationResponse>
2222 , IFileSystemExchangeCreationAndLastWriteTimeOperationInteractor
2323 {
24- private readonly IFileSystemOperationLogic logic;
25- private readonly IUniversalDialogProxy dialog;
24+ private readonly IFileSystemOperationLogic operation;
25+ private readonly IFileSystemDialogLogic dialog;
2626 private readonly IFileListService fileList;
2727 private readonly IFileSystemExchangeCreationAndLastWriteTimeOperationPresenter presenter;
2828
2929 public FileSystemExchangeCreationAndLastWriteTimeOperationInteractor(
30- IFileSystemOperationLogic logic,
31- IUniversalDialogProxy dialog,
30+ IFileSystemOperationLogic operation,
31+ IFileSystemDialogLogic dialog,
3232 IFileListService fileList,
3333 IFileSystemExchangeCreationAndLastWriteTimeOperationPresenter presenter)
3434 {
35- this.logic = logic;
35+ this.operation = operation;
3636 this.dialog = dialog;
3737 this.fileList = fileList;
3838 this.presenter = presenter;
@@ -42,13 +42,13 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
4242 {
4343 IEnumerable<FileSystemSourceFiles> sourceFilesList = req.SourceFilesList;
4444
45- if (!Confirm(sourceFilesList))
45+ if (!this.dialog.ConfirmExchangeTimestamp(sourceFilesList))
4646 {
4747 // don't show abort dialog.
4848 return new();
4949 }
5050
51- if (!this.logic.ExchangeTimestamp(sourceFilesList))
51+ if (!this.operation.ExchangeTimestamp(sourceFilesList))
5252 {
5353 return UseCaseResponse.Abort<FileSystemExchangeCreationAndLastWriteTimeOperationResponse>("エラーのため処理が中止されました");
5454 }
@@ -58,31 +58,6 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
5858 return this.presenter.Present(req, res);
5959 }
6060
61- private bool Confirm(IEnumerable<FileSystemSourceFiles> sourceFilesList)
62- {
63- string msg = CreateConfirmMessage(sourceFilesList);
64-
65- IDialogResult result = this.dialog.ShowYesNoDialog("作成日時と更新日時を入れ替え - 確認", msg, MessageBoxImage.Question);
66-
67- return result.Result == ButtonResult.Yes;
68- }
69-
70- private static string CreateConfirmMessage(IEnumerable<FileSystemSourceFiles> sourceFilesList)
71- {
72- string msg = "【仮】作成日時と更新日時を入れ替えてもよろしいですか";
73-
74- foreach (FileSystemSourceFiles sourceFiles in sourceFilesList)
75- {
76- msg += "\n\n対象:" + sourceFiles.AbsolutePath;
77- foreach (string name in sourceFiles.Names)
78- {
79- msg += "\n・" + name;
80- }
81- }
82-
83- return msg;
84- }
85-
8661 private FileSystemExchangeCreationAndLastWriteTimeOperationResponse CreateResponse(IEnumerable<FileSystemSourceFiles> sourceFilesList)
8762 {
8863 // FIX ME
--- a/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemMoveOperationInteractor.cs
+++ b/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemMoveOperationInteractor.cs
@@ -1,5 +1,4 @@
1-using CleanAuLait.Adaptor.Boundary.Gateway.UI.Dialog;
2-using CleanAuLait.UseCase.Interactor;
1+using CleanAuLait.UseCase.Interactor;
32 using CleanAuLait.UseCase.Response;
43 using FolderCategorizer2.Domain.Boundary.Service;
54 using FolderCategorizer2.Domain.Service.Dto;
@@ -7,10 +6,8 @@ using FolderCategorizer2.UseCase.Boundary.FileSystemOperation.Interactor;
76 using FolderCategorizer2.UseCase.FileSystemOperation.Request;
87 using FolderCategorizer2.UseCase.FileSystemOperation.Response;
98 using FolderCategorizer2.UseCase.Internal;
10-using Prism.Services.Dialogs;
119 using System.Collections.Generic;
1210 using System.Linq;
13-using System.Windows;
1411
1512 namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
1613 {
@@ -21,20 +18,20 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
2118 //private static readonly ILogger logger = LogManager.GetCurrentClassLogger();
2219
2320 private readonly IFileSystemService fileSystem;
24- private readonly IFileSystemOperationLogic logic;
21+ private readonly IFileSystemOperationLogic operation;
22+ private readonly IFileSystemDialogLogic dialog;
2523 private readonly IFolderTreeService folderTree;
26- private readonly IUniversalDialogProxy dialog;
2724
2825 public FileSystemMoveOperationInteractor(
2926 IFileSystemService fileSystem,
30- IFileSystemOperationLogic logic,
31- IFolderTreeService folderTree,
32- IUniversalDialogProxy dialog)
27+ IFileSystemOperationLogic operation,
28+ IFileSystemDialogLogic dialog,
29+ IFolderTreeService folderTree)
3330 {
3431 this.fileSystem = fileSystem;
35- this.logic = logic;
36- this.folderTree = folderTree;
32+ this.operation = operation;
3733 this.dialog = dialog;
34+ this.folderTree = folderTree;
3835 }
3936
4037 public override FileSystemMoveOperationResponse Interact(FileSystemMoveOperationRequest req)
@@ -57,13 +54,13 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
5754 IEnumerable<FileSystemSourceFilesTargetFolder> sourceTargetEntries =
5855 FileSystemSourceFilesTargetFolder.Join(targetFolders, sourceFilesList);
5956
60- if (!Confirm(sourceTargetEntries))
57+ if (!this.dialog.ConfirmMoveFile(sourceTargetEntries))
6158 {
6259 // don't show abort dialog.
6360 return new();
6461 }
6562
66- if (!this.logic.MoveFile(sourceTargetEntries))
63+ if (!this.operation.MoveFile(sourceTargetEntries))
6764 {
6865 return UseCaseResponse.Abort<FileSystemMoveOperationResponse>("エラーのため処理が中止されました");
6966 }
@@ -129,31 +126,6 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
129126 return msg;
130127 }
131128
132- private bool Confirm(IEnumerable<FileSystemSourceFilesTargetFolder> sourceTargetEntries)
133- {
134- string msg = CreateConfirmMessage(sourceTargetEntries);
135-
136- IDialogResult result = this.dialog.ShowYesNoDialog("ファイルの移動 - 確認", msg, MessageBoxImage.Question);
137-
138- return result.Result == ButtonResult.Yes;
139- }
140-
141- private static string CreateConfirmMessage(IEnumerable<FileSystemSourceFilesTargetFolder> sourceTargetEntries)
142- {
143- string msg = "【仮】移動してもよろしいですか";
144- foreach (FileSystemSourceFilesTargetFolder sourceTargetEntry in sourceTargetEntries)
145- {
146- msg += "\n\n移動元:" + sourceTargetEntry.SourceFiles.AbsolutePath;
147- foreach (string name in sourceTargetEntry.SourceFiles.Names)
148- {
149- msg += "\n・" + name;
150- }
151- msg += "\n↓\n移動先:" + sourceTargetEntry.TargetFolder.AbsolutePath;
152- }
153-
154- return msg;
155- }
156-
157129 private void SelectNode(IEnumerable<FileSystemSourceFilesTargetFolder> sourceTargetEntries)
158130 {
159131 // FIX ME
--- a/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemNewFileOperationInteractor.cs
+++ b/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemNewFileOperationInteractor.cs
@@ -22,19 +22,19 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
2222 {
2323 private const string DEFAULT_NEW_FILE_NAME = "新しいファイル.txt";
2424
25- private readonly IFileSystemOperationLogic logic;
26- private readonly INewFilePromptViewProxy prompt;
25+ private readonly IFileSystemOperationLogic operation;
26+ private readonly IFileSystemDialogLogic dialog;
2727 private readonly IFileListService fileList;
2828 private readonly IFileSystemNewFileOperationPresenter presenter;
2929
3030 public FileSystemNewFileOperationInteractor(
31- IFileSystemOperationLogic logic,
32- INewFilePromptViewProxy prompt,
31+ IFileSystemOperationLogic operation,
32+ IFileSystemDialogLogic dialog,
3333 IFileListService fileList,
3434 IFileSystemNewFileOperationPresenter presenter)
3535 {
36- this.logic = logic;
37- this.prompt = prompt;
36+ this.operation = operation;
37+ this.dialog = dialog;
3838 this.fileList = fileList;
3939 this.presenter = presenter;
4040 }
@@ -43,7 +43,7 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
4343 {
4444 IEnumerable<FileSystemPathEntry> targetEntries = req.Targets;
4545
46- string targetName = AskTargetName(DEFAULT_NEW_FILE_NAME);
46+ string targetName = this.dialog.AskNewFileName(DEFAULT_NEW_FILE_NAME);
4747
4848 if (string.IsNullOrEmpty(targetName))
4949 {
@@ -53,7 +53,7 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
5353
5454 // TODO target already existing error, skip prompt
5555
56- if (!this.logic.CreateFile(targetEntries, targetName))
56+ if (!this.operation.CreateFile(targetEntries, targetName))
5757 {
5858 return UseCaseResponse.Abort<FileSystemNewFileOperationResponse>("エラーのため処理が中止されました");
5959 }
@@ -63,18 +63,6 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
6363 return this.presenter.Present(req, res);
6464 }
6565
66- private string AskTargetName(string targetName)
67- {
68- (IDialogResult result, targetName) = prompt.ShowPrompt(targetName);
69-
70- if (result.Result != ButtonResult.OK)
71- {
72- return string.Empty;
73- }
74-
75- return targetName;
76- }
77-
7866 private FileSystemNewFileOperationResponse CreateResponse(IEnumerable<FileSystemPathEntry> targetEntries)
7967 {
8068 // FIX ME
--- a/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemNewFolderOperationInteractor.cs
+++ b/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemNewFolderOperationInteractor.cs
@@ -6,11 +6,9 @@ using FolderCategorizer2.Domain.Service.Dto;
66 using FolderCategorizer2.Domain.Translator;
77 using FolderCategorizer2.UseCase.Boundary.FileListOperation.Presenter;
88 using FolderCategorizer2.UseCase.Boundary.FileSystemOperation.Interactor;
9-using FolderCategorizer2.UseCase.Boundary.ViewProxy;
109 using FolderCategorizer2.UseCase.FileSystemOperation.Request;
1110 using FolderCategorizer2.UseCase.FileSystemOperation.Response;
1211 using FolderCategorizer2.UseCase.Internal;
13-using Prism.Services.Dialogs;
1412 using System.Collections.Generic;
1513 using System.Linq;
1614
@@ -22,19 +20,19 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
2220 {
2321 private const string DEFAULT_NEW_FOLDER_NAME = "新しいフォルダ";
2422
25- private readonly IFileSystemOperationLogic logic;
26- private readonly INewFolderPromptViewProxy prompt;
23+ private readonly IFileSystemOperationLogic operation;
24+ private readonly IFileSystemDialogLogic dialog;
2725 private readonly IFileListService fileList;
2826 private readonly IFileSystemNewFolderOperationPresenter presenter;
2927
3028 public FileSystemNewFolderOperationInteractor(
31- IFileSystemOperationLogic logic,
29+ IFileSystemOperationLogic operation,
30+ IFileSystemDialogLogic dialog,
3231 IFileListService fileList,
33- INewFolderPromptViewProxy prompt,
3432 IFileSystemNewFolderOperationPresenter presenter)
3533 {
36- this.logic = logic;
37- this.prompt = prompt;
34+ this.operation = operation;
35+ this.dialog = dialog;
3836 this.fileList = fileList;
3937 this.presenter = presenter;
4038 }
@@ -43,7 +41,7 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
4341 {
4442 IEnumerable<FileSystemPathEntry> targetEntries = req.Targets;
4543
46- string targetName = AskTargetName(DEFAULT_NEW_FOLDER_NAME);
44+ string targetName = this.dialog.AskNewFolderName(DEFAULT_NEW_FOLDER_NAME);
4745
4846 if (string.IsNullOrEmpty(targetName))
4947 {
@@ -53,7 +51,7 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
5351
5452 // TODO target already existing error, skip prompt
5553
56- if (!this.logic.CreateFolder(targetEntries, targetName))
54+ if (!this.operation.CreateFolder(targetEntries, targetName))
5755 {
5856 return UseCaseResponse.Abort<FileSystemNewFolderOperationResponse>("エラーのため処理が中止されました");
5957 }
@@ -63,18 +61,6 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
6361 return this.presenter.Present(req, res);
6462 }
6563
66- private string AskTargetName(string targetName)
67- {
68- (IDialogResult result, targetName) = this.prompt.ShowPrompt(targetName);
69-
70- if (result.Result != ButtonResult.OK)
71- {
72- return string.Empty;
73- }
74-
75- return targetName;
76- }
77-
7864 private FileSystemNewFolderOperationResponse CreateResponse(IEnumerable<FileSystemPathEntry> targetEntries)
7965 {
8066 // FIX ME
--- a/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemOverwriteCreationTimeOperationInteractor.cs
+++ b/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemOverwriteCreationTimeOperationInteractor.cs
@@ -1,5 +1,4 @@
1-using CleanAuLait.Adaptor.Boundary.Gateway.UI.Dialog;
2-using CleanAuLait.UseCase.Interactor;
1+using CleanAuLait.UseCase.Interactor;
32 using CleanAuLait.UseCase.Response;
43 using FolderCategorizer2.Domain.Boundary.Service;
54 using FolderCategorizer2.Domain.Model.Entity;
@@ -10,10 +9,8 @@ using FolderCategorizer2.UseCase.Boundary.FileSystemOperation.Interactor;
109 using FolderCategorizer2.UseCase.FileSystemOperation.Request;
1110 using FolderCategorizer2.UseCase.FileSystemOperation.Response;
1211 using FolderCategorizer2.UseCase.Internal;
13-using Prism.Services.Dialogs;
1412 using System.Collections.Generic;
1513 using System.Linq;
16-using System.Windows;
1714
1815 namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
1916 {
@@ -21,20 +18,20 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
2118 : AbstractUseCaseInteractor<FileSystemOverwriteCreationTimeOperationRequest, FileSystemOverwriteCreationTimeOperationResponse>
2219 , IFileSystemOverwriteCreationTimeOperationInteractor
2320 {
24- private readonly IFileSystemOperationLogic logic;
25- private readonly IUniversalDialogProxy dialog;
21+ private readonly IFileSystemOperationLogic operation;
22+ private readonly IFileSystemDialogLogic dialog;
2623 private readonly IFileListService fileList;
2724 private readonly IFileSystemOverwriteCreationTimeOperationPresenter presenter;
2825
2926 public FileSystemOverwriteCreationTimeOperationInteractor(
30- IFileSystemOperationLogic logic,
27+ IFileSystemOperationLogic operation,
28+ IFileSystemDialogLogic dialog,
3129 IFileListService fileList,
32- IUniversalDialogProxy dialog,
3330 IFileSystemOverwriteCreationTimeOperationPresenter presenter)
3431 {
35- this.logic = logic;
36- this.fileList = fileList;
32+ this.operation = operation;
3733 this.dialog = dialog;
34+ this.fileList = fileList;
3835 this.presenter = presenter;
3936 }
4037
@@ -42,13 +39,13 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
4239 {
4340 IEnumerable<FileSystemSourceFiles> sourceFilesList = req.SourceFilesList;
4441
45- if (!Confirm(sourceFilesList))
42+ if (!this.dialog.ConfirmOverwriteCreationTime(sourceFilesList))
4643 {
4744 // don't show abort dialog.
4845 return new();
4946 }
5047
51- if (!this.logic.OverwriteCreationTime(sourceFilesList))
48+ if (!this.operation.OverwriteCreationTime(sourceFilesList))
5249 {
5350 return UseCaseResponse.Abort<FileSystemOverwriteCreationTimeOperationResponse>("エラーのため処理が中止されました");
5451 }
@@ -58,30 +55,6 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
5855 return this.presenter.Present(req, res);
5956 }
6057
61- private bool Confirm(IEnumerable<FileSystemSourceFiles> sourceFilesList)
62- {
63- string msg = CreateConfirmMessage(sourceFilesList);
64-
65- IDialogResult result = this.dialog.ShowYesNoDialog("作成日時を更新日時で上書き - 確認", msg, MessageBoxImage.Question);
66-
67- return result.Result == ButtonResult.Yes;
68- }
69-
70- private static string CreateConfirmMessage(IEnumerable<FileSystemSourceFiles> sourceFilesList)
71- {
72- string msg = "【仮】作成日時を更新日時で上書きしてもよろしいですか";
73- foreach (FileSystemSourceFiles sourceFiles in sourceFilesList)
74- {
75- msg += "\n\n対象:" + sourceFiles.AbsolutePath;
76- foreach (string name in sourceFiles.Names)
77- {
78- msg += "\n・" + name;
79- }
80- }
81-
82- return msg;
83- }
84-
8558 private FileSystemOverwriteCreationTimeOperationResponse CreateResponse(IEnumerable<FileSystemSourceFiles> sourceFilesList)
8659 {
8760 // FIX ME
--- a/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemOverwriteLastWriteTimeOperationInteractor.cs
+++ b/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemOverwriteLastWriteTimeOperationInteractor.cs
@@ -1,5 +1,4 @@
1-using CleanAuLait.Adaptor.Boundary.Gateway.UI.Dialog;
2-using CleanAuLait.UseCase.Interactor;
1+using CleanAuLait.UseCase.Interactor;
32 using CleanAuLait.UseCase.Response;
43 using FolderCategorizer2.Domain.Boundary.Service;
54 using FolderCategorizer2.Domain.Model.Entity;
@@ -10,11 +9,8 @@ using FolderCategorizer2.UseCase.Boundary.FileSystemOperation.Interactor;
109 using FolderCategorizer2.UseCase.FileSystemOperation.Request;
1110 using FolderCategorizer2.UseCase.FileSystemOperation.Response;
1211 using FolderCategorizer2.UseCase.Internal;
13-using NLog;
14-using Prism.Services.Dialogs;
1512 using System.Collections.Generic;
1613 using System.Linq;
17-using System.Windows;
1814
1915 namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
2016 {
@@ -22,22 +18,22 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
2218 : AbstractUseCaseInteractor<FileSystemOverwriteLastWriteTimeOperationRequest, FileSystemOverwriteLastWriteTimeOperationResponse>
2319 , IFileSystemOverwriteLastWriteTimeOperationInteractor
2420 {
25- private static readonly ILogger logger = LogManager.GetCurrentClassLogger();
21+ //private static readonly ILogger logger = LogManager.GetCurrentClassLogger();
2622
27- private readonly IFileSystemOperationLogic logic;
23+ private readonly IFileSystemOperationLogic operation;
24+ private readonly IFileSystemDialogLogic dialog;
2825 private readonly IFileListService fileList;
29- private readonly IUniversalDialogProxy dialog;
3026 private readonly IFileSystemOverwriteLastWriteTimeOperationPresenter presenter;
3127
3228 public FileSystemOverwriteLastWriteTimeOperationInteractor(
33- IFileSystemOperationLogic logic,
29+ IFileSystemOperationLogic operation,
30+ IFileSystemDialogLogic dialog,
3431 IFileListService fileList,
35- IUniversalDialogProxy dialog,
3632 IFileSystemOverwriteLastWriteTimeOperationPresenter presenter)
3733 {
38- this.logic = logic;
39- this.fileList = fileList;
34+ this.operation = operation;
4035 this.dialog = dialog;
36+ this.fileList = fileList;
4137 this.presenter = presenter;
4238 }
4339
@@ -45,13 +41,13 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
4541 {
4642 IEnumerable<FileSystemSourceFiles> sourceFilesList = req.SourceFilesList;
4743
48- if (!Confirm(sourceFilesList))
44+ if (!this.dialog.ConfirmOverwriteLastWriteTime(sourceFilesList))
4945 {
5046 // don't show abort dialog.
5147 return new();
5248 }
5349
54- if (!this.logic.OverwriteLastWriteTime(sourceFilesList))
50+ if (!this.operation.OverwriteLastWriteTime(sourceFilesList))
5551 {
5652 return UseCaseResponse.Abort<FileSystemOverwriteLastWriteTimeOperationResponse>("エラーのため処理が中止されました");
5753 }
@@ -61,30 +57,6 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
6157 return this.presenter.Present(req, res);
6258 }
6359
64- private bool Confirm(IEnumerable<FileSystemSourceFiles> sourceFilesList)
65- {
66- string msg = CreateConfirmMessage(sourceFilesList);
67-
68- IDialogResult result = this.dialog.ShowYesNoDialog("更新日時を作成日時で上書き - 確認", msg, MessageBoxImage.Question);
69-
70- return result.Result == ButtonResult.Yes;
71- }
72-
73- private static string CreateConfirmMessage(IEnumerable<FileSystemSourceFiles> sourceFilesList)
74- {
75- string msg = "【仮】更新日時を作成日時で上書きしてもよろしいですか";
76- foreach (FileSystemSourceFiles sourceFiles in sourceFilesList)
77- {
78- msg += "\n\n対象:" + sourceFiles.AbsolutePath;
79- foreach (string name in sourceFiles.Names)
80- {
81- msg += "\n・" + name;
82- }
83- }
84-
85- return msg;
86- }
87-
8860 private FileSystemOverwriteLastWriteTimeOperationResponse CreateResponse(IEnumerable<FileSystemSourceFiles> sourceFilesList)
8961 {
9062 // FIX ME
--- a/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemRenameOperationInteractor.cs
+++ b/FolderCategorizer2.02UseCase/FileSystemOperation/Interactor/FileSystemRenameOperationInteractor.cs
@@ -1,5 +1,4 @@
1-using CleanAuLait.Adaptor.Boundary.Gateway.UI.Dialog;
2-using CleanAuLait.UseCase.Interactor;
1+using CleanAuLait.UseCase.Interactor;
32 using CleanAuLait.UseCase.Response;
43 using FolderCategorizer2.Domain.Boundary.Service;
54 using FolderCategorizer2.Domain.Model.Entity;
@@ -7,14 +6,11 @@ using FolderCategorizer2.Domain.Service.Dto;
76 using FolderCategorizer2.Domain.Translator;
87 using FolderCategorizer2.UseCase.Boundary.FileListOperation.Presenter;
98 using FolderCategorizer2.UseCase.Boundary.FileSystemOperation.Interactor;
10-using FolderCategorizer2.UseCase.Boundary.ViewProxy;
119 using FolderCategorizer2.UseCase.FileSystemOperation.Request;
1210 using FolderCategorizer2.UseCase.FileSystemOperation.Response;
1311 using FolderCategorizer2.UseCase.Internal;
14-using Prism.Services.Dialogs;
1512 using System.Collections.Generic;
1613 using System.Linq;
17-using System.Windows;
1814
1915 namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
2016 {
@@ -24,22 +20,18 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
2420 {
2521 //private static readonly ILogger logger = LogManager.GetCurrentClassLogger();
2622
27- private readonly IFileSystemOperationLogic logic;
28- private readonly IRenamePromptViewProxy prompt;
29- private readonly IUniversalDialogProxy dialog;
23+ private readonly IFileSystemOperationLogic operation;
24+ private readonly IFileSystemDialogLogic dialog;
3025 private readonly IFileListService fileList;
3126 private readonly IFileSystemRenameOperationPresenter presenter;
3227
3328 public FileSystemRenameOperationInteractor(
34- IFileSystemOperationLogic logic,
35- IFolderTreeService folderTree,
29+ IFileSystemOperationLogic operation,
30+ IFileSystemDialogLogic dialog,
3631 IFileListService fileList,
37- IUniversalDialogProxy dialog,
38- IRenamePromptViewProxy prompt,
3932 IFileSystemRenameOperationPresenter presenter)
4033 {
41- this.logic = logic;
42- this.prompt = prompt;
34+ this.operation = operation;
4335 this.dialog = dialog;
4436 this.fileList = fileList;
4537 this.presenter = presenter;
@@ -49,7 +41,7 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
4941 {
5042 IEnumerable<FileSystemSourceFile> sourceFileList = req.SourceFileList;
5143
52- string targetName = AskTargetName(req.SourceFileList.First().Name);
44+ string targetName = this.dialog.AskRenameFileName(req.SourceFileList.First().Name);
5345
5446 if (string.IsNullOrEmpty(targetName))
5547 {
@@ -57,13 +49,13 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
5749 return new();
5850 }
5951
60- if (!Confirm(sourceFileList, targetName))
52+ if (!this.dialog.ConfirmRenameFile(sourceFileList, targetName))
6153 {
6254 // don't show abort dialog.
6355 return new();
6456 }
6557
66- if (!this.logic.RenameFile(sourceFileList, targetName))
58+ if (!this.operation.RenameFile(sourceFileList, targetName))
6759 {
6860 return UseCaseResponse.Abort<FileSystemRenameOperationResponse>("エラーのため処理が中止されました");
6961 }
@@ -73,41 +65,6 @@ namespace FolderCategorizer2.UseCase.FileSystemOperation.Interactor
7365 return this.presenter.Present(req, res);
7466 }
7567
76- private string AskTargetName(string targetName)
77- {
78- (IDialogResult result, targetName) = prompt.ShowPrompt(targetName);
79-
80- if (result.Result != ButtonResult.OK)
81- {
82- return string.Empty;
83- }
84-
85- return targetName;
86- }
87-
88- private bool Confirm(IEnumerable<FileSystemSourceFile> sourceFileList, string targetName)
89- {
90- string msg = CreateConfirmMessage(sourceFileList, targetName);
91-
92- IDialogResult result = this.dialog.ShowYesNoDialog("ファイル名の変更 - 確認", msg, MessageBoxImage.Question);
93-
94- return result.Result == ButtonResult.Yes;
95- }
96-
97- private static string CreateConfirmMessage(IEnumerable<FileSystemSourceFile> sourceFileList, string targetName)
98- {
99- string msg = "【仮】名前を変更してもよろしいですか";
100-
101- foreach (FileSystemSourceFile sourceFile in sourceFileList)
102- {
103- msg += "\n\n対象:" + sourceFile.SourceFolderAbsolutePath;
104- msg += "\n変更前:" + sourceFile.Name;
105- msg += "\n変更後:" + targetName;
106- }
107-
108- return msg;
109- }
110-
11168 private FileSystemRenameOperationResponse CreateResponse(IEnumerable<FileSystemSourceFile> sourceFileList)
11269 {
11370 // FIX ME
--- /dev/null
+++ b/FolderCategorizer2.02UseCase/Internal/FileSystemDialogLogic.cs
@@ -0,0 +1,262 @@
1+using CleanAuLait.Adaptor.Boundary.Gateway.UI.Dialog;
2+using FolderCategorizer2.Domain.Service.Dto;
3+using FolderCategorizer2.UseCase.Boundary.ViewProxy;
4+using Prism.Services.Dialogs;
5+using System;
6+using System.Collections.Generic;
7+using System.Linq;
8+using System.Text;
9+using System.Threading.Tasks;
10+using System.Windows;
11+
12+namespace FolderCategorizer2.UseCase.Internal
13+{
14+ internal class FileSystemDialogLogic : IFileSystemDialogLogic
15+ {
16+ private readonly INewFilePromptViewProxy newFilePrompt;
17+ private readonly INewFolderPromptViewProxy newFolderPrompt;
18+ private readonly IRenamePromptViewProxy renamePrompt;
19+ private readonly IUniversalDialogProxy dialog;
20+
21+ public FileSystemDialogLogic(
22+ INewFilePromptViewProxy newFilePrompt,
23+ INewFolderPromptViewProxy newFolderPrompt,
24+ IRenamePromptViewProxy renamePrompt,
25+ IUniversalDialogProxy dialog)
26+ {
27+ this.newFilePrompt = newFilePrompt;
28+ this.newFolderPrompt = newFolderPrompt;
29+ this.renamePrompt = renamePrompt;
30+ this.dialog = dialog;
31+ }
32+
33+ public string AskNewFileName(string targetName)
34+ {
35+ (IDialogResult result, targetName) = newFilePrompt.ShowPrompt(targetName);
36+
37+ if (result.Result != ButtonResult.OK)
38+ {
39+ return string.Empty;
40+ }
41+
42+ return targetName;
43+ }
44+
45+ public string AskNewFolderName(string targetName)
46+ {
47+ (IDialogResult result, targetName) = this.newFolderPrompt.ShowPrompt(targetName);
48+
49+ if (result.Result != ButtonResult.OK)
50+ {
51+ return string.Empty;
52+ }
53+
54+ return targetName;
55+ }
56+
57+ public string AskRenameFileName(string targetName)
58+ {
59+ (IDialogResult result, targetName) = renamePrompt.ShowPrompt(targetName);
60+
61+ if (result.Result != ButtonResult.OK)
62+ {
63+ return string.Empty;
64+ }
65+
66+ return targetName;
67+ }
68+
69+ public bool ConfirmCopyFiles(IEnumerable<FileSystemSourceFilesTargetFolder> sourceTargetEntries)
70+ {
71+ string msg = CreateConfirmMessageCopyFiles(sourceTargetEntries);
72+
73+ IDialogResult result = this.dialog.ShowYesNoDialog("ファイルのコピー - 確認", msg, MessageBoxImage.Question);
74+
75+ return result.Result == ButtonResult.Yes;
76+ }
77+
78+ private static string CreateConfirmMessageCopyFiles(IEnumerable<FileSystemSourceFilesTargetFolder> sourceTargetEntries)
79+ {
80+ string msg = "【仮】コピーしてもよろしいですか";
81+
82+ foreach (FileSystemSourceFilesTargetFolder sourceTargetEntry in sourceTargetEntries)
83+ {
84+ msg += "\n\nコピー元:" + sourceTargetEntry.SourceFiles.AbsolutePath;
85+ foreach (string name in sourceTargetEntry.SourceFiles.Names)
86+ {
87+ msg += "\n・" + name;
88+ }
89+ msg += "\n↓\nコピー先:" + sourceTargetEntry.TargetFolder.AbsolutePath;
90+ }
91+
92+ return msg;
93+ }
94+
95+ public bool ConfirmMoveFile(IEnumerable<FileSystemSourceFilesTargetFolder> sourceTargetEntries)
96+ {
97+ string msg = CreateConfirmMessageMoveFile(sourceTargetEntries);
98+
99+ IDialogResult result = this.dialog.ShowYesNoDialog("ファイルの移動 - 確認", msg, MessageBoxImage.Question);
100+
101+ return result.Result == ButtonResult.Yes;
102+ }
103+
104+ private static string CreateConfirmMessageMoveFile(IEnumerable<FileSystemSourceFilesTargetFolder> sourceTargetEntries)
105+ {
106+ string msg = "【仮】移動してもよろしいですか";
107+ foreach (FileSystemSourceFilesTargetFolder sourceTargetEntry in sourceTargetEntries)
108+ {
109+ msg += "\n\n移動元:" + sourceTargetEntry.SourceFiles.AbsolutePath;
110+ foreach (string name in sourceTargetEntry.SourceFiles.Names)
111+ {
112+ msg += "\n・" + name;
113+ }
114+ msg += "\n↓\n移動先:" + sourceTargetEntry.TargetFolder.AbsolutePath;
115+ }
116+
117+ return msg;
118+ }
119+
120+ public bool ConfirmDeleteFile(IEnumerable<FileSystemSourceFiles> sourceFilesList)
121+ {
122+ string msg = CreateConfirmMessageDeleteFile(sourceFilesList);
123+
124+ IDialogResult result = this.dialog.ShowYesNoDialog("ファイルの削除 - 確認", msg, MessageBoxImage.Question);
125+
126+ return result.Result == ButtonResult.Yes;
127+ }
128+
129+ private static string CreateConfirmMessageDeleteFile(IEnumerable<FileSystemSourceFiles> sourceFilesList)
130+ {
131+ string msg = "【仮】削除してもよろしいですか";
132+ foreach (FileSystemSourceFiles sourceFiles in sourceFilesList)
133+ {
134+ msg += "\n\n削除元:" + sourceFiles.AbsolutePath;
135+ foreach (string name in sourceFiles.Names)
136+ {
137+ msg += "\n・" + name;
138+ }
139+ }
140+
141+ return msg;
142+ }
143+
144+ public bool ConfirmRenameFile(IEnumerable<FileSystemSourceFile> sourceFileList, string targetName)
145+ {
146+ string msg = CreateConfirmMessageRenameFile(sourceFileList, targetName);
147+
148+ IDialogResult result = this.dialog.ShowYesNoDialog("ファイル名の変更 - 確認", msg, MessageBoxImage.Question);
149+
150+ return result.Result == ButtonResult.Yes;
151+ }
152+
153+ private static string CreateConfirmMessageRenameFile(IEnumerable<FileSystemSourceFile> sourceFileList, string targetName)
154+ {
155+ string msg = "【仮】名前を変更してもよろしいですか";
156+
157+ foreach (FileSystemSourceFile sourceFile in sourceFileList)
158+ {
159+ msg += "\n\n対象:" + sourceFile.SourceFolderAbsolutePath;
160+ msg += "\n変更前:" + sourceFile.Name;
161+ msg += "\n変更後:" + targetName;
162+ }
163+
164+ return msg;
165+ }
166+
167+ public bool ConfirmOverwriteCreationTime(IEnumerable<FileSystemSourceFiles> sourceFilesList)
168+ {
169+ string msg = CreateConfirmMessageOverwriteCreationTime(sourceFilesList);
170+
171+ IDialogResult result = this.dialog.ShowYesNoDialog("作成日時を更新日時で上書き - 確認", msg, MessageBoxImage.Question);
172+
173+ return result.Result == ButtonResult.Yes;
174+ }
175+
176+ private static string CreateConfirmMessageOverwriteCreationTime(IEnumerable<FileSystemSourceFiles> sourceFilesList)
177+ {
178+ string msg = "【仮】作成日時を更新日時で上書きしてもよろしいですか";
179+ foreach (FileSystemSourceFiles sourceFiles in sourceFilesList)
180+ {
181+ msg += "\n\n対象:" + sourceFiles.AbsolutePath;
182+ foreach (string name in sourceFiles.Names)
183+ {
184+ msg += "\n・" + name;
185+ }
186+ }
187+
188+ return msg;
189+ }
190+
191+ public bool ConfirmOverwriteLastWriteTime(IEnumerable<FileSystemSourceFiles> sourceFilesList)
192+ {
193+ string msg = CreateConfirmMessageOverwriteLastWriteTime(sourceFilesList);
194+
195+ IDialogResult result = this.dialog.ShowYesNoDialog("更新日時を作成日時で上書き - 確認", msg, MessageBoxImage.Question);
196+
197+ return result.Result == ButtonResult.Yes;
198+ }
199+
200+ private static string CreateConfirmMessageOverwriteLastWriteTime(IEnumerable<FileSystemSourceFiles> sourceFilesList)
201+ {
202+ string msg = "【仮】更新日時を作成日時で上書きしてもよろしいですか";
203+ foreach (FileSystemSourceFiles sourceFiles in sourceFilesList)
204+ {
205+ msg += "\n\n対象:" + sourceFiles.AbsolutePath;
206+ foreach (string name in sourceFiles.Names)
207+ {
208+ msg += "\n・" + name;
209+ }
210+ }
211+
212+ return msg;
213+ }
214+
215+ public bool ConfirmExchangeTimestamp(IEnumerable<FileSystemSourceFiles> sourceFilesList)
216+ {
217+ string msg = CreateConfirmMessageExchangeTimestamp(sourceFilesList);
218+
219+ IDialogResult result = this.dialog.ShowYesNoDialog("作成日時と更新日時を入れ替え - 確認", msg, MessageBoxImage.Question);
220+
221+ return result.Result == ButtonResult.Yes;
222+ }
223+
224+ private static string CreateConfirmMessageExchangeTimestamp(IEnumerable<FileSystemSourceFiles> sourceFilesList)
225+ {
226+ string msg = "【仮】作成日時と更新日時を入れ替えてもよろしいですか";
227+
228+ foreach (FileSystemSourceFiles sourceFiles in sourceFilesList)
229+ {
230+ msg += "\n\n対象:" + sourceFiles.AbsolutePath;
231+ foreach (string name in sourceFiles.Names)
232+ {
233+ msg += "\n・" + name;
234+ }
235+ }
236+
237+ return msg;
238+ }
239+
240+ public bool ConfirmAutoFixFolderTimestamp(IEnumerable<FileSystemSourceFile> SourceFileList)
241+ {
242+ string msg = CreateConfirmMessageAutoFixFolderTimestamp(SourceFileList);
243+
244+ IDialogResult result = this.dialog.ShowYesNoDialog("フォルダのタイムスタンプを自動修正 - 確認", msg, MessageBoxImage.Question);
245+
246+ return result.Result == ButtonResult.Yes;
247+ }
248+
249+ private static string CreateConfirmMessageAutoFixFolderTimestamp(IEnumerable<FileSystemSourceFile> SourceFileList)
250+ {
251+ string msg = "【仮】フォルダのタイムスタンプを自動修正してもよろしいですか";
252+
253+ foreach (FileSystemSourceFile sourceFile in SourceFileList)
254+ {
255+ msg += "\n\n対象:" + sourceFile.SourceAbsolutePath;
256+ }
257+
258+ return msg;
259+ }
260+
261+ }
262+}
--- /dev/null
+++ b/FolderCategorizer2.02UseCase/Internal/IFileSystemDialogLogic.cs
@@ -0,0 +1,20 @@
1+using FolderCategorizer2.Domain.Service.Dto;
2+using System.Collections.Generic;
3+
4+namespace FolderCategorizer2.UseCase.Internal
5+{
6+ internal interface IFileSystemDialogLogic
7+ {
8+ string AskNewFileName(string targetName);
9+ string AskNewFolderName(string targetName);
10+ string AskRenameFileName(string targetName);
11+ bool ConfirmCopyFiles(IEnumerable<FileSystemSourceFilesTargetFolder> sourceTargetEntries);
12+ bool ConfirmMoveFile(IEnumerable<FileSystemSourceFilesTargetFolder> sourceTargetEntries);
13+ bool ConfirmDeleteFile(IEnumerable<FileSystemSourceFiles> sourceFilesList);
14+ bool ConfirmRenameFile(IEnumerable<FileSystemSourceFile> sourceFileList, string targetName);
15+ bool ConfirmOverwriteCreationTime(IEnumerable<FileSystemSourceFiles> sourceFilesList);
16+ bool ConfirmOverwriteLastWriteTime(IEnumerable<FileSystemSourceFiles> sourceFilesList);
17+ bool ConfirmExchangeTimestamp(IEnumerable<FileSystemSourceFiles> sourceFilesList);
18+ bool ConfirmAutoFixFolderTimestamp(IEnumerable<FileSystemSourceFile> SourceFileList);
19+ }
20+}
\ No newline at end of file
--- a/FolderCategorizer2.02UseCase/UseCaseModule.cs
+++ b/FolderCategorizer2.02UseCase/UseCaseModule.cs
@@ -62,10 +62,11 @@ namespace FolderCategorizer2.UseCase
6262 containerRegistry.Register<IOSShellShowPropertyInteractor, OSShellShowPropertyInteractor>();
6363
6464 //
65- // IFileSystemOperationLogic
65+ // Internal Logic
6666 //
6767
6868 containerRegistry.Register<IFileSystemOperationLogic, FileSystemOperationLogic>();
69+ containerRegistry.Register<IFileSystemDialogLogic, FileSystemDialogLogic>();
6970
7071 logger.Trace("RegisterTypes end");
7172 }