OSDN Git Service

初期登録
[kybernetes/Kybernetes.git] / KyberNetes / control / CmdDispatcher.cs
1 using System;\r
2 using com.andoutomo.kybernetes.view;\r
3 using com.andoutomo.kybernetes.data.accessor;\r
4 using com.andoutomo.kybernetes.data.DAO;\r
5 using com.andoutomo.kybernetes.command;\r
6 \r
7 namespace com.andoutomo.kybernetes.control\r
8 {\r
9     public class CmdDispatcher\r
10     {\r
11         #region Singleton Setting\r
12         private static CmdDispatcher singleton;\r
13         private CmdDispatcher()\r
14         {\r
15         }\r
16         internal static CmdDispatcher getDispatcher(BaseForm form)\r
17         {\r
18             if (singleton == null)\r
19             {\r
20                 singleton = new CmdDispatcher(form);\r
21             }\r
22             return singleton;\r
23         }\r
24 \r
25         private BaseForm baseForm;\r
26 \r
27         private CmdDispatcher(BaseForm form)\r
28         {\r
29             this.baseForm = form;\r
30         }\r
31         #endregion\r
32         /// <summary>\r
33         /// コマンドをデータベースと照合して、処理の呼び出しを実施します。\r
34         /// </summary>\r
35         /// <param name="command"></param>\r
36         /// <returns></returns>\r
37         internal string dispatch(string command)\r
38         {\r
39             //空文字の場合は改行を入れる(Unixの仕様に準拠)\r
40             if (string.IsNullOrEmpty(command))\r
41             {\r
42                 return string.Empty;\r
43             }\r
44 \r
45             string retStr = string.Empty;\r
46             string commandTop = command.Split(' ')[0];\r
47             CommandData data = CommandDataAccessor.getObject.getCommandData(commandTop);\r
48 \r
49             if (data != null)\r
50             {\r
51                 try\r
52                 {\r
53                     Type argsType = Type.GetType(data.ArgClass);\r
54                     CommandArg args = (CommandArg)Activator.CreateInstance(argsType);\r
55 \r
56                     args.split(command);\r
57 \r
58                     Type commandType = Type.GetType(data.TargetClass);\r
59                     AbCommand commandCls = (AbCommand)Activator.CreateInstance(commandType);\r
60 \r
61                     commandCls.run(args,baseForm);\r
62 \r
63                     retStr = commandCls.getMessage();\r
64                 }\r
65                 catch (Exception e)\r
66                 {\r
67                     retStr = "エラーが発生しました。";\r
68                     new KybernetesApplicationException(e);\r
69                 }\r
70             }\r
71             else\r
72             {\r
73                 retStr = "不明なコマンドです。";\r
74             }\r
75             return retStr;\r
76         }\r
77     }\r
78 }\r