OSDN Git Service

v1.1.0.4
[kybernetes/Kybernetes.git] / KyberNetes / command / template / abCommand.cs
1 using com.andoutomo.kybernetes.view;\r
2 using com.andoutomo.kybernetes.control;\r
3 \r
4 namespace com.andoutomo.kybernetes.command\r
5 {\r
6     abstract class AbCommand\r
7     {\r
8         protected abstract bool execute();\r
9 \r
10 \r
11         protected abstract string turnMessage();\r
12         protected abstract string turnErrorMessage();\r
13         protected abstract string turnSplitErrorMessage();\r
14 \r
15         protected BaseForm form;\r
16         protected CommandArg argument;\r
17 \r
18 \r
19         /// <summary>\r
20         /// 処理を実行する<br />\r
21         /// 各継承先クラスで指定された、splitArguments及び\r
22         /// executeを呼び出す。\r
23         /// </summary>\r
24         /// <param name="_args">呼び出す前に指定された引数(コマンドラインからなので、それを受け取る)</param>\r
25         /// <param name="_form">フォーム情報。ここからフォームを操作できるようにします。</param>\r
26         /// <returns></returns>\r
27         internal bool run(CommandArg _args,BaseForm _form)\r
28         {\r
29             KybernetesLogger.Log.debug("run start on " + this.GetType().ToString());\r
30             if (_args.getSplitResult() == false)\r
31             {\r
32                 KybernetesLogger.Log.debug("split failed at " + _args.GetType().ToString());\r
33                 message = turnSplitErrorMessage();\r
34                 return false;\r
35             }\r
36 \r
37             this.argument = _args;\r
38             this.form = _form;\r
39 \r
40             if (execute())\r
41             {\r
42                 message = turnMessage();\r
43                 KybernetesLogger.Log.debug("run success on " + this.GetType().ToString());\r
44                 KybernetesLogger.Log.debug("message:" + message);\r
45                 return true;\r
46             }\r
47             else\r
48             {\r
49                 message = turnErrorMessage();\r
50                 KybernetesLogger.Log.debug("run failure on " + this.GetType().ToString());\r
51                 KybernetesLogger.Log.debug("message:" + message);\r
52 \r
53                 return false;\r
54             }\r
55         }\r
56 \r
57         private string message;\r
58 \r
59         \r
60         /// <summary>\r
61         /// 処理完了後のメッセージを呼び出し元に返す。\r
62         /// </summary>\r
63         /// <returns>メッセージ</returns>\r
64         internal string getMessage()\r
65         {\r
66             return message;\r
67         }\r
68 \r
69         protected ErrorType errorType\r
70         {\r
71             private get;\r
72             set;\r
73         }\r
74 \r
75         protected string DefaultErrorMessage\r
76         {\r
77             get\r
78             {\r
79                 string errorMessage;\r
80                 switch(errorType){\r
81                     case ErrorType.DataNotFound:\r
82                         errorMessage = "対象データが見つかりません。";\r
83                         break;\r
84                     case ErrorType.Unexpected:\r
85                     default:\r
86                         errorMessage = "予期せぬエラーが発生いたしました。";\r
87                         break;\r
88 \r
89                 }\r
90                 return errorMessage;\r
91             \r
92             }\r
93         }\r
94         protected string DefaultSplitErrorMessage\r
95         {\r
96             get { return "無効なパラメータです。"; }\r
97         }\r
98         protected string DefaultNormalMessage\r
99         {\r
100             get { return "> ";}\r
101         }\r
102 \r
103     }\r
104     internal enum ErrorType\r
105     {\r
106         Unexpected,\r
107         DataNotFound,\r
108 \r
109     }\r
110 }\r