OSDN Git Service

838254b272986a7b0037e8790b45b9a85a69af48
[kybernetes/Kybernetes.git] / main / command / CRUD / AddCommandArg.cs
1 using com.andoutomo.kybernetes.data;\r
2 using com.andoutomo.kybernetes.data.accessor;\r
3 using com.andoutomo.kybernetes.data.DAO;\r
4 \r
5 namespace com.andoutomo.kybernetes.command\r
6 {\r
7     class AddCommandArgs:CommandArg\r
8     {\r
9         private TaskData _data;\r
10         private int _categoryID;\r
11 \r
12         public TaskData PreparedTaskData\r
13         {\r
14             get { return _data; }\r
15             internal set { this._data = value; }\r
16         }\r
17         public int CategoryID\r
18         {\r
19             get { return _categoryID; }\r
20         }\r
21 \r
22         public void split(string arguments)\r
23         {\r
24             _data = new TaskData();\r
25             string[] spaceSplitData = arguments.Split(' ');\r
26             string command = spaceSplitData[0].ToLower();\r
27             foreach (string options in spaceSplitData)\r
28             {\r
29                 if (string.Equals(command,options.ToLower())) { continue; }\r
30                 string[] optionData = options.Split(':');\r
31                 switch (optionData[0].ToUpper())\r
32                 {\r
33                     case "@":\r
34                         //時間帯\r
35                         if (optionData[1].Length == 1)\r
36                         {\r
37                             _data.TimeArea = optionData[1];\r
38                         }\r
39                         break;\r
40                     case "D":\r
41                         //日付\r
42                         if (optionData[1].Length == 4 || optionData[1].Length == 8)\r
43                         {\r
44                             _data.DoDate = new DateComponent(optionData[1]);\r
45                         }\r
46                         break;\r
47                     case "C":\r
48                         //カテゴリ\r
49                         CategoryDataAccessor dataAccessor = CategoryDataAccessor.getObject;\r
50                         CategoryData categData = dataAccessor.getCategoryFromName(optionData[1]);\r
51                         if (categData != null)\r
52                         {\r
53                             _data.Category = optionData[1];\r
54                             _categoryID = categData.CategId;\r
55                         }\r
56                         break;\r
57                     case "F":\r
58                         decimal forcastTime;\r
59                         string timestr;\r
60                         if (optionData[1].ToLower().EndsWith("h"))\r
61                         {\r
62                             timestr = optionData[1].Substring(0, optionData[1].Length - 1);\r
63                             if (decimal.TryParse(timestr, out forcastTime))\r
64                             {\r
65                                 _data.ForecastMin = decimal.ToInt32(forcastTime *  60);\r
66                             }\r
67                         }\r
68                         else if (decimal.TryParse(optionData[1], out forcastTime))\r
69                         {\r
70                             _data.ForecastMin = decimal.ToInt32(forcastTime);\r
71                         }\r
72 \r
73                         break;\r
74                     case "N":\r
75                         int outInt;\r
76 \r
77                         if (int.TryParse(optionData[1], out outInt))\r
78                         {\r
79                             _data.SortID = outInt;\r
80                         }\r
81                         else\r
82                         {\r
83                             _data.SortID = 0;\r
84                         }\r
85                         break;\r
86                     case "P":\r
87                         _data.Project = optionData[1];\r
88                         break;\r
89 \r
90                     case "T":\r
91                         _data.Tags = optionData[1];\r
92                         break;\r
93                     default:\r
94                         //なにもない場合はコンテンツ(最初の記載を是とする)\r
95                         if (_data.Contents == null || _data.Contents == string.Empty)\r
96                         {\r
97                             _data.Contents = optionData[0];\r
98                             //コロンを含む場合もあるので一応確認\r
99                             for (int i = 1; i < optionData.Length; i++)\r
100                             {\r
101                                 _data.Contents += ":" + optionData[i];\r
102                             }\r
103                         }\r
104                         break;\r
105                 }\r
106             }\r
107         }\r
108 \r
109         public bool getSplitResult()\r
110         {\r
111             return true;\r
112         }\r
113     }\r
114 }\r