OSDN Git Service

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