OSDN Git Service

構成変更のためファイルを置き直し。
[kybernetes/Kybernetes.git] / StandardCommand / command / CRUD / UpdateCommandArg.cs
diff --git a/StandardCommand/command/CRUD/UpdateCommandArg.cs b/StandardCommand/command/CRUD/UpdateCommandArg.cs
new file mode 100644 (file)
index 0000000..dbf6aa9
--- /dev/null
@@ -0,0 +1,118 @@
+using System.Collections.Generic;\r
+using com.andoutomo.kybernetes.data.DAO;\r
+using com.andoutomo.kybernetes.data.accessor;\r
+using com.andoutomo.kybernetes.data;\r
+\r
+namespace com.andoutomo.kybernetes.command\r
+{\r
+    class UpdateCommandArg:CommandArg\r
+    {\r
+        TaskData _data;\r
+        \r
+\r
+        public TaskData PreparedTaskData\r
+        {\r
+            get { return _data; }\r
+        }\r
+\r
+        public bool changeDialog\r
+        {\r
+            get;\r
+            private set;\r
+        }\r
+\r
+        public void split(string arguments)\r
+        {\r
+            string[] spaceSplitData = arguments.Split(' ');\r
+            \r
+            string sortID = spaceSplitData[1];\r
+            List<string> otherParamList = new List<string>();\r
+            for (int i = 2; i < spaceSplitData.Length; i++)\r
+            {\r
+                otherParamList.Add(spaceSplitData[i]);\r
+            }\r
+            TaskDataAccessor taskAccessor = TaskDataAccessor.getObject;\r
+\r
+            int sortIDNum;\r
+            if (int.TryParse(sortID, out sortIDNum))\r
+            {\r
+                _data = taskAccessor.getTask(sortIDNum);\r
+\r
+            }\r
+            else\r
+            {\r
+                _data = null;\r
+                return;\r
+            }\r
+\r
+            changeDialog = true;\r
+            foreach (string options in otherParamList)\r
+            {\r
+                string[] optionData = options.Split(':');\r
+                switch (optionData[0].ToUpper())\r
+                {\r
+                    case "@":\r
+                        //時間帯\r
+                        if (optionData[1].Length == 1)\r
+                        {\r
+                            _data.TimeArea = optionData[1];\r
+                            changeDialog = false;\r
+                        }\r
+                        break;\r
+                    case "D":\r
+                        //日付\r
+                        if (optionData[1].Length == 4 || optionData[1].Length == 8)\r
+                        {\r
+                            _data.DoDate = new DateComponent(optionData[1]);\r
+                            changeDialog = false;\r
+                        }\r
+                        break;\r
+                    case "C":\r
+                        //カテゴリ\r
+                        \r
+                        CategoryData categData = CategoryDataAccessor.getObject.getCategoryFromName(optionData[1]);\r
+                        if (categData != null)\r
+                        {\r
+                            _data.Category = optionData[1];\r
+                            _data.CategID = categData.CategId;\r
+                            \r
+                            changeDialog = false;\r
+                        }\r
+                        break;\r
+                    case "F":\r
+                        decimal forcastTime;\r
+                        string timestr;\r
+                        if (optionData[1].ToLower().EndsWith("h"))\r
+                        {\r
+                            timestr = optionData[1].Substring(0, optionData[1].Length - 1);\r
+                            if (decimal.TryParse(timestr, out forcastTime))\r
+                            {\r
+                                _data.ForecastMin = decimal.ToInt32(forcastTime * 60);\r
+                                changeDialog = false;\r
+                            }\r
+                        }\r
+                        else if (decimal.TryParse(optionData[1], out forcastTime))\r
+                        {\r
+                            _data.ForecastMin = decimal.ToInt32(forcastTime);\r
+                            changeDialog = false;\r
+                        }\r
+\r
+                        break;\r
+                    default:\r
+                        //なにもない場合はコンテンツ(最初の記載を是とする)\r
+                        if (!string.IsNullOrEmpty(_data.Contents))\r
+                        {\r
+                            _data.Contents = optionData[0];\r
+                            changeDialog = false;\r
+                        }\r
+                        break;\r
+                }\r
+            }\r
+        }\r
+\r
+        public bool getSplitResult()\r
+        {\r
+            return _data != null;\r
+        }\r
+    }\r
+}\r