OSDN Git Service

V.1.01
authorAndouTomo <tomando.clar02@gmail.com>
Sat, 21 Jun 2014 13:23:16 +0000 (22:23 +0900)
committerAndouTomo <tomando.clar02@gmail.com>
Sat, 21 Jun 2014 13:23:16 +0000 (22:23 +0900)
コメント機能を実装
シミュレーション機能を実装

矢印キー上下で、コマンドのヒストリを表示するよう処理変更
PageDown/Pageupで、タスクリストのスクロールを実現
データをUser.dbとSystem.dbに分解。

68 files changed:
KyberNetes/Kybernetes.csproj
KyberNetes/Properties/AssemblyInfo.cs
KyberNetes/command/CRUD/AddCommand.cs
KyberNetes/command/CRUD/AddCommandArg.cs
KyberNetes/command/CRUD/DeleteCommand.cs
KyberNetes/command/CRUD/ListCommand.cs
KyberNetes/command/CRUD/ListCommandArg.cs
KyberNetes/command/CRUD/LongListCommand.cs
KyberNetes/command/CRUD/UpdateCommand.cs
KyberNetes/command/CRUD/UpdateCommandArg.cs
KyberNetes/command/Control/ChAreaCommand.cs
KyberNetes/command/Control/ChnumCommand.cs
KyberNetes/command/Control/ClearCommand.cs
KyberNetes/command/Control/ClearCommentCommand.cs [new file with mode: 0644]
KyberNetes/command/Control/ClearCommentCommandArg.cs [new file with mode: 0644]
KyberNetes/command/Control/CommentCommand.cs [new file with mode: 0644]
KyberNetes/command/Control/CommentCommandArg.cs [new file with mode: 0644]
KyberNetes/command/Control/DelayCommand.cs
KyberNetes/command/Control/DelayCommandArg.cs
KyberNetes/command/Control/DuplicateCommand.cs
KyberNetes/command/Control/EndCommand.cs
KyberNetes/command/Control/RepeatCommand.cs
KyberNetes/command/Control/StartCommand.cs
KyberNetes/command/SYSTEM/DateCommand.cs
KyberNetes/command/SYSTEM/DateCommandArg.cs
KyberNetes/command/SYSTEM/DmpCommand.cs
KyberNetes/command/SYSTEM/EchoCommand.cs
KyberNetes/command/SYSTEM/HelpCommand.cs
KyberNetes/command/SYSTEM/LinkCommand.cs
KyberNetes/command/SYSTEM/LogModeCommand.cs
KyberNetes/command/SYSTEM/TodayCommand.cs
KyberNetes/command/reference/EstimateCommand.cs
KyberNetes/command/reference/EstimateCommandArg.cs
KyberNetes/command/reference/FindCommand.cs
KyberNetes/command/reference/ShowCommand.cs [new file with mode: 0644]
KyberNetes/command/reference/ShowCommandArg.cs [new file with mode: 0644]
KyberNetes/command/reference/SimulateCommand.cs [new file with mode: 0644]
KyberNetes/command/reference/SimulateCommandArg.cs [new file with mode: 0644]
KyberNetes/command/reference/SumCommand.cs
KyberNetes/command/template/StandardCommandArg.cs
KyberNetes/command/template/abCommand.cs
KyberNetes/control/KybernetesLogger.cs
KyberNetes/data/Component/DateComponent.cs [new file with mode: 0644]
KyberNetes/data/DAO/CommentData.cs [new file with mode: 0644]
KyberNetes/data/DAO/TaskData.cs
KyberNetes/data/accessor/CategoryDataAccessor.cs
KyberNetes/data/accessor/CommandDataAccessor.cs
KyberNetes/data/accessor/CommentDataAccessor.cs [new file with mode: 0644]
KyberNetes/data/accessor/LinkDataAccessor.cs
KyberNetes/data/accessor/SettingDataAccessor.cs
KyberNetes/data/accessor/TaskDataAccessor.cs
KyberNetes/data/accessor/TimeAreaDataAccessor.cs
KyberNetes/data/connection/CommandSqlDictionary.Designer.cs [new file with mode: 0644]
KyberNetes/data/connection/CommandSqlDictionary.resx [new file with mode: 0644]
KyberNetes/data/connection/DBConnection.cs
KyberNetes/data/connection/SettingDBConnection.cs [new file with mode: 0644]
KyberNetes/data/connection/SqlDictionary.Designer.cs
KyberNetes/data/connection/SqlDictionary.resx
KyberNetes/data/connection/TaskDBConnection.cs [new file with mode: 0644]
KyberNetes/view/BaseForm.Designer.cs
KyberNetes/view/BaseForm.cs
KyberNetes/view/CaptionPanelController.cs
KyberNetes/view/CategorySetting.Designer.cs
KyberNetes/view/CategorySetting.cs
KyberNetes/view/CmdHistory.cs [new file with mode: 0644]
KyberNetes/view/PanelController.cs
KyberNetes/view/TimeAreaSetting.cs
kybernetes_prj.suo

index e03cf49..b361e17 100644 (file)
     <Compile Include="command\Control\ChnumCommandArg.cs" />\r
     <Compile Include="command\Control\ClearCommand.cs" />\r
     <Compile Include="command\Control\ClearCommandArg.cs" />\r
+    <Compile Include="command\Control\ClearCommentCommand.cs" />\r
+    <Compile Include="command\Control\ClearCommentCommandArg.cs" />\r
+    <Compile Include="command\Control\CommentCommand.cs" />\r
+    <Compile Include="command\Control\CommentCommandArg.cs" />\r
     <Compile Include="command\Control\DelayCommand.cs" />\r
     <Compile Include="command\Control\DelayCommandArg.cs" />\r
     <Compile Include="command\Control\DuplicateCommand.cs" />\r
     <Compile Include="command\reference\FindCommand.cs" />\r
     <Compile Include="command\reference\FindCommandArg.cs" />\r
     <Compile Include="command\reference\PwdCommand.cs" />\r
+    <Compile Include="command\reference\ShowCommand.cs" />\r
+    <Compile Include="command\reference\ShowCommandArg.cs" />\r
+    <Compile Include="command\reference\SimulateCommand.cs" />\r
+    <Compile Include="command\reference\SimulateCommandArg.cs" />\r
     <Compile Include="command\reference\SumCommand.cs" />\r
     <Compile Include="command\reference\SumCommandArg.cs" />\r
     <Compile Include="command\SYSTEM\AllCategInner.cs" />\r
     <Compile Include="control\KybernetesLogger.cs" />\r
     <Compile Include="data\accessor\CategoryDataAccessor.cs" />\r
     <Compile Include="data\accessor\CommandDataAccessor.cs" />\r
+    <Compile Include="data\accessor\CommentDataAccessor.cs" />\r
     <Compile Include="data\accessor\LinkDataAccessor.cs" />\r
     <Compile Include="data\accessor\SettingDataAccessor.cs" />\r
     <Compile Include="data\accessor\TaskDataAccessor.cs" />\r
     <Compile Include="data\accessor\TimeAreaDataAccessor.cs" />\r
-    <Compile Include="data\Component\DateComponents.cs" />\r
+    <Compile Include="data\Component\DateComponent.cs" />\r
     <Compile Include="data\Component\TimeComponent.cs" />\r
+    <Compile Include="data\connection\TaskDBConnection.cs" />\r
     <Compile Include="data\connection\DBConnection.cs" />\r
+    <Compile Include="data\connection\SettingDBConnection.cs" />\r
     <Compile Include="data\connection\SqlDictionary.Designer.cs">\r
       <DependentUpon>SqlDictionary.resx</DependentUpon>\r
       <AutoGen>True</AutoGen>\r
       <DesignTime>True</DesignTime>\r
     </Compile>\r
+    <Compile Include="data\connection\CommandSqlDictionary.Designer.cs">\r
+      <DependentUpon>CommandSqlDictionary.resx</DependentUpon>\r
+      <AutoGen>True</AutoGen>\r
+      <DesignTime>True</DesignTime>\r
+    </Compile>\r
     <Compile Include="data\DAO\CategoryData.cs" />\r
     <Compile Include="data\DAO\CommandData.cs" />\r
+    <Compile Include="data\DAO\CommentData.cs" />\r
     <Compile Include="data\DAO\HelpData.cs" />\r
     <Compile Include="data\DAO\SimpleDataBean.cs" />\r
     <Compile Include="data\DAO\TaskData.cs" />\r
     <Compile Include="view\CategorySetting.Designer.cs">\r
       <DependentUpon>CategorySetting.cs</DependentUpon>\r
     </Compile>\r
+    <Compile Include="view\CmdHistory.cs" />\r
     <Compile Include="view\Credit.cs">\r
       <SubType>Form</SubType>\r
     </Compile>\r
       <LastGenOutput>SqlDictionary.Designer.cs</LastGenOutput>\r
       <SubType>Designer</SubType>\r
     </EmbeddedResource>\r
+    <EmbeddedResource Include="data\connection\CommandSqlDictionary.resx">\r
+      <Generator>ResXFileCodeGenerator</Generator>\r
+      <LastGenOutput>CommandSqlDictionary.Designer.cs</LastGenOutput>\r
+      <SubType>Designer</SubType>\r
+    </EmbeddedResource>\r
     <EmbeddedResource Include="Properties\Resources.resx">\r
       <Generator>ResXFileCodeGenerator</Generator>\r
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>\r
index be302ae..9987b5c 100644 (file)
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
 // すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を \r
 // 既定値にすることができます:\r
 // [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("1.0.0.6")]\r
-[assembly: AssemblyFileVersion("1.0.0.6")]\r
+[assembly: AssemblyVersion("1.1.0.1")]\r
+[assembly: AssemblyFileVersion("1.1.0.1")]\r
index 9a536bf..aaae500 100644 (file)
@@ -12,7 +12,7 @@ namespace com.andoutomo.kybernetes.command
         private string message;\r
         protected override bool execute()\r
         {\r
-            AddCommandArgs addArgs = (AddCommandArgs)base.args;\r
+            AddCommandArgs addArgs = (AddCommandArgs)base.argument;\r
             TaskData data = addArgs.PreparedTaskData;\r
 \r
             if (data.Contents == null)\r
@@ -40,7 +40,7 @@ namespace com.andoutomo.kybernetes.command
                 }\r
                 try\r
                 {\r
-                    data.DoDate = new data.DateComponents(dateStr);\r
+                    data.DoDate = new data.DateComponent(dateStr);\r
                 }\r
                 catch (Exception e)\r
                 {\r
@@ -94,7 +94,7 @@ namespace com.andoutomo.kybernetes.command
             }\r
             if (data.ForecastMin == 0)\r
             {\r
-                string wkFrcstMin = form.showInputBox("見積時間を分単位で入力してください。入力されない場合は0(予定外作業)とみなします。");\r
+                string wkFrcstMin = form.showInputBox("見積時間を分単位で入力してください。","0");\r
                 if (wkFrcstMin == null || wkFrcstMin == string.Empty)\r
                 {\r
                     wkFrcstMin = "0";\r
@@ -124,7 +124,7 @@ namespace com.andoutomo.kybernetes.command
 \r
             if (taskAccessor.insertTask(data))\r
             {\r
-                message = "タスク「" + data.Contents + "」を追加しました。";\r
+                message = "タスクNo." + data.SortID + "「" + data.Contents + "」を追加しました。";\r
                 return true;\r
             }\r
             else\r
index 1b9f2da..f4ab622 100644 (file)
@@ -38,9 +38,9 @@ namespace com.andoutomo.kybernetes.command
                         break;\r
                     case "D":\r
                         //日付\r
-                        if (optionData[1].Length == 4 || optionData.Length == 8)\r
+                        if (optionData[1].Length == 4 || optionData[1].Length == 8)\r
                         {\r
-                            _data.DoDate = new DateComponents(optionData[1]);\r
+                            _data.DoDate = new DateComponent(optionData[1]);\r
                         }\r
                         break;\r
                     case "C":\r
index 7d8fc95..c8a4005 100644 (file)
@@ -9,7 +9,7 @@ namespace com.andoutomo.kybernetes.command.CRUD
         string message=string.Empty;\r
         protected override bool execute()\r
         {\r
-            DeleteCommandArg param = (DeleteCommandArg)args;\r
+            DeleteCommandArg param = (DeleteCommandArg)argument;\r
 \r
             TaskDataAccessor accessor = TaskDataAccessor.getObject;\r
             targetCount = accessor.countDeleteTargetTask(param.targetIDFrom, param.targetIDTo);\r
@@ -21,6 +21,7 @@ namespace com.andoutomo.kybernetes.command.CRUD
             if (YesNoDialog.show(targetCount + "件のタスクを削除します。よろしいですか?"))\r
             {\r
                 accessor.deleteTask(param.targetIDFrom, param.targetIDTo);\r
+                CommentDataAccessor.getObject.deleteCommentWithTask();\r
                 return true;\r
             }\r
             else\r
index f699e36..7134425 100644 (file)
@@ -10,10 +10,10 @@ namespace com.andoutomo.kybernetes.command
     {\r
         protected override bool execute()\r
         {\r
-            ListCommandArg arguments = (ListCommandArg)base.args;\r
-            DateComponents searchDate = arguments.SearchDate;\r
+            ListCommandArg arguments = (ListCommandArg)base.argument;\r
+            DateComponent searchDate = arguments.SearchDate;\r
 \r
-            DateComponents todayDate = SettingDataAccessor.getObject.getToday();\r
+            DateComponent todayDate = SettingDataAccessor.getObject.getToday();\r
             TaskDataAccessor dataAccess = TaskDataAccessor.getObject;\r
             List<TaskData> dataList;\r
                 if (arguments.SearchAll)\r
index 99f95b3..6c6b2bb 100644 (file)
@@ -4,10 +4,10 @@ namespace com.andoutomo.kybernetes.command
 {\r
     class ListCommandArg:CommandArg\r
     {\r
-        private DateComponents searchDateInner;\r
+        private DateComponent searchDateInner;\r
 \r
 \r
-        internal DateComponents SearchDate\r
+        internal DateComponent SearchDate\r
         {\r
             get { return searchDateInner; }\r
         }\r
@@ -48,7 +48,7 @@ namespace com.andoutomo.kybernetes.command
                 {\r
                     SearchAll = false;\r
                     SearchRemain = false;\r
-                    searchDateInner = new DateComponents(spaceSplitData[1]);\r
+                    searchDateInner = new DateComponent(spaceSplitData[1]);\r
                 }\r
 \r
             }\r
index f833ba3..9570913 100644 (file)
@@ -10,8 +10,8 @@ namespace com.andoutomo.kybernetes.command.CRUD
     {\r
         protected override bool execute()\r
         {\r
-            EstimateCommandArg param = (EstimateCommandArg)args;\r
-            DateComponents today = SettingDataAccessor.getObject.getToday();\r
+            EstimateCommandArg param = (EstimateCommandArg)argument;\r
+            DateComponent today = SettingDataAccessor.getObject.getToday();\r
 \r
             //タスクリストを取得\r
             List<TaskData> taskList;\r
index bf3417f..437d7f3 100644 (file)
@@ -10,8 +10,13 @@ namespace com.andoutomo.kybernetes.command
         string message;\r
         protected override bool execute()\r
         {\r
-            UpdateCommandArg param = (UpdateCommandArg)args;\r
+            UpdateCommandArg param = (UpdateCommandArg)argument;\r
             TaskData data = param.PreparedTaskData;\r
+            if (data == null)\r
+            {\r
+                base.errorType = ErrorType.DataNotFound;\r
+                return false;\r
+            }\r
             if (param.changeDialog)\r
             {\r
                 #region 実施事項\r
@@ -36,7 +41,7 @@ namespace com.andoutomo.kybernetes.command
                 }\r
                 try\r
                 {\r
-                    data.DoDate = new data.DateComponents(dateStr);\r
+                    data.DoDate = new data.DateComponent(dateStr);\r
                 }\r
                 catch (Exception e)\r
                 {\r
@@ -113,13 +118,16 @@ namespace com.andoutomo.kybernetes.command
             }\r
 \r
             TaskDataAccessor accessor = TaskDataAccessor.getObject;\r
+            \r
+            //成功した場合のメッセージをここで作っておく\r
+            message = "タスクNo." + data.SortID + "を更新しました。";\r
             return accessor.updateTask(data);\r
 \r
         }\r
 \r
         protected override string turnMessage()\r
         {\r
-            return "タスクを更新しました。";\r
+            return message;\r
         }\r
 \r
         protected override string turnErrorMessage()\r
index a7e2952..2d8b096 100644 (file)
@@ -61,16 +61,16 @@ namespace com.andoutomo.kybernetes.command
                         break;\r
                     case "D":\r
                         //日付\r
-                        if (optionData[1].Length == 4 || optionData.Length == 8)\r
+                        if (optionData[1].Length == 4 || optionData[1].Length == 8)\r
                         {\r
-                            _data.DoDate = new DateComponents(optionData[1]);\r
+                            _data.DoDate = new DateComponent(optionData[1]);\r
                             changeDialog = false;\r
                         }\r
                         break;\r
                     case "C":\r
                         //カテゴリ\r
-                        CategoryDataAccessor dataAccessor = CategoryDataAccessor.getObject;\r
-                        CategoryData categData = dataAccessor.getCategoryFromName(optionData[1]);\r
+                        \r
+                        CategoryData categData = CategoryDataAccessor.getObject.getCategoryFromName(optionData[1]);\r
                         if (categData != null)\r
                         {\r
                             _data.Category = optionData[1];\r
@@ -100,7 +100,7 @@ namespace com.andoutomo.kybernetes.command
                         break;\r
                     default:\r
                         //なにもない場合はコンテンツ(最初の記載を是とする)\r
-                        if (_data.Contents == null || _data.Contents == string.Empty)\r
+                        if (!string.IsNullOrEmpty(_data.Contents))\r
                         {\r
                             _data.Contents = optionData[0];\r
                             changeDialog = false;\r
index 758b119..e1fcbfb 100644 (file)
@@ -1,4 +1,5 @@
 using com.andoutomo.kybernetes.data.accessor;\r
+using com.andoutomo.kybernetes.data.DAO;\r
 \r
 namespace com.andoutomo.kybernetes.command.Control\r
 {\r
@@ -7,7 +8,13 @@ namespace com.andoutomo.kybernetes.command.Control
         ChAreaCommandArg param;\r
         protected override bool execute()\r
         {\r
-            param = (ChAreaCommandArg)args;\r
+            param = (ChAreaCommandArg)argument;\r
+\r
+            if (!param.dataExists())\r
+            {\r
+                base.errorType = ErrorType.DataNotFound;\r
+                return false;\r
+            }\r
 \r
             return TaskDataAccessor.getObject.changeArea(param.sortID, param.nextTimeArea);\r
         }\r
index 27abeb3..622e602 100644 (file)
@@ -9,10 +9,15 @@ namespace com.andoutomo.kybernetes.command.Control
         int next;\r
         protected override bool execute()\r
         {\r
-            ChnumCommandArg param = (ChnumCommandArg)args;\r
+            ChnumCommandArg param = (ChnumCommandArg)argument;\r
             before = param.sortID;\r
             next = param.nextSortID;\r
             TaskData _target = TaskDataAccessor.getObject.getTask(before);\r
+            if (_target == null)\r
+            {\r
+                base.errorType = ErrorType.DataNotFound;\r
+                return false;\r
+            }\r
             return TaskDataAccessor.getObject.changeNumber(_target.TaskID, next);\r
         }\r
 \r
index 878dd4c..ead5abd 100644 (file)
@@ -1,4 +1,5 @@
 using com.andoutomo.kybernetes.data.accessor;\r
+using com.andoutomo.kybernetes.data.DAO;\r
 \r
 namespace com.andoutomo.kybernetes.command.Control\r
 {\r
@@ -7,9 +8,15 @@ namespace com.andoutomo.kybernetes.command.Control
         private int sortId;\r
         protected override bool execute()\r
         {\r
-            ClearCommandArg param = (ClearCommandArg)args;\r
+            ClearCommandArg param = (ClearCommandArg)argument;\r
             sortId = param.sortID;\r
 \r
+            if (!param.dataExists())\r
+            {\r
+                base.errorType = ErrorType.DataNotFound;\r
+                return false;\r
+            }\r
+\r
             return TaskDataAccessor.getObject.clearStartEnd(sortId);\r
         }\r
 \r
diff --git a/KyberNetes/command/Control/ClearCommentCommand.cs b/KyberNetes/command/Control/ClearCommentCommand.cs
new file mode 100644 (file)
index 0000000..df88fbe
--- /dev/null
@@ -0,0 +1,69 @@
+using System;\r
+using System.Collections.Generic;\r
+using System.Linq;\r
+using System.Text;\r
+using com.andoutomo.kybernetes.data.accessor;\r
+using com.andoutomo.kybernetes.data.DAO;\r
+\r
+namespace com.andoutomo.kybernetes.command.Control\r
+{\r
+    class ClearCommentCommand:AbCommand\r
+    {\r
+        protected override bool execute()\r
+        {\r
+            ClearCommentCommandArg param = (ClearCommentCommandArg)argument;\r
+            if (param.delDate != null)\r
+            {\r
+                if (CommentDataAccessor.getObject.deleteDailyComment(param.delDate))\r
+                {\r
+                    message = param.delDate.getDateString() + "のコメントを削除しました。";\r
+                    return true;\r
+                }\r
+                else\r
+                {\r
+                    return false;\r
+                }\r
+            }\r
+            else if (param.SortID != 0)\r
+            {\r
+                TaskData taskData = TaskDataAccessor.getObject.getTask(param.SortID);\r
+                if (taskData != null)\r
+                {\r
+                    if (CommentDataAccessor.getObject.deleteTaskComment(taskData.TaskID))\r
+                    {\r
+                        message = "タスクNo." + param.SortID + " のコメントを削除しました";\r
+                        return true;\r
+                    }\r
+                    else\r
+                    {\r
+                        return false;\r
+                    }\r
+                }\r
+                else\r
+                {\r
+                    base.errorType = ErrorType.DataNotFound;\r
+                    return false;\r
+                }\r
+            }\r
+            else\r
+            {\r
+                return false;\r
+            }\r
+        }\r
+        private string message;\r
+        protected override string turnMessage()\r
+        {\r
+            return message;\r
+        }\r
+\r
+        protected override string turnErrorMessage()\r
+        {\r
+            return base.DefaultErrorMessage;\r
+        }\r
+\r
+        protected override string turnSplitErrorMessage()\r
+        {\r
+            return base.DefaultSplitErrorMessage;\r
+        }\r
+    }\r
+}\r
diff --git a/KyberNetes/command/Control/ClearCommentCommandArg.cs b/KyberNetes/command/Control/ClearCommentCommandArg.cs
new file mode 100644 (file)
index 0000000..9f7956f
--- /dev/null
@@ -0,0 +1,52 @@
+using System;\r
+using System.Collections.Generic;\r
+using System.Linq;\r
+using System.Text;\r
+using com.andoutomo.kybernetes.data;\r
+\r
+namespace com.andoutomo.kybernetes.command.Control\r
+{\r
+    class ClearCommentCommandArg:CommandArg\r
+    {\r
+        internal int SortID\r
+        {\r
+            get;\r
+            private set;\r
+        }\r
+        internal DateComponent delDate\r
+        {\r
+            get;\r
+            private set;\r
+        }\r
+\r
+        public void split(string arguments)\r
+        {\r
+            string[] splitData = arguments.Split(' ');\r
+\r
+            if (splitData[1].Contains(":"))\r
+            {\r
+                string[] dateSplitter = splitData[1].Split(':');\r
+                delDate = new DateComponent(dateSplitter[1]);\r
+                splitResult = true;\r
+            }\r
+            else\r
+            {\r
+                int wkSortID;\r
+                if (int.TryParse(splitData[1], out wkSortID))\r
+                {\r
+                    SortID = wkSortID;\r
+                    splitResult = true;\r
+                }\r
+                else\r
+                {\r
+                    splitResult = false;\r
+                }\r
+            }\r
+        }\r
+        bool splitResult;\r
+        public bool getSplitResult()\r
+        {\r
+            return splitResult;\r
+        }\r
+    }\r
+}\r
diff --git a/KyberNetes/command/Control/CommentCommand.cs b/KyberNetes/command/Control/CommentCommand.cs
new file mode 100644 (file)
index 0000000..68659ff
--- /dev/null
@@ -0,0 +1,94 @@
+using System;\r
+using System.Collections.Generic;\r
+using System.Linq;\r
+using System.Text;\r
+using com.andoutomo.kybernetes.data.accessor;\r
+using com.andoutomo.kybernetes.data.DAO;\r
+using com.andoutomo.kybernetes.view;\r
+\r
+namespace com.andoutomo.kybernetes.command.Control\r
+{\r
+    class CommentCommand:AbCommand\r
+    {\r
+        private string message;\r
+        protected override bool execute()\r
+        {\r
+            CommentCommandArg param = (CommentCommandArg)argument;\r
+            CommentDataAccessor dataAccessor = CommentDataAccessor.getObject;\r
+            bool retVal = false;\r
+            \r
+            switch (param.mode)\r
+            {\r
+                case CommentMode.show:\r
+                    List<CommentData> dataList = dataAccessor.getComment();\r
+                    List<string> dataForConsole = new List<string>();\r
+                    foreach (CommentData data in dataList)\r
+                    {\r
+                        dataForConsole.Add("------ " + data.CreateDateStr + " ------");\r
+                        dataForConsole.Add(data.Comment);\r
+                    }\r
+                    form.addMultiText(dataForConsole);\r
+                    \r
+                    retVal = true;\r
+                    message = string.Empty;\r
+\r
+                    break;\r
+\r
+                case CommentMode.metaComment:\r
+                    //コメントが数字の場合は、間違いかもしれないから一応聞く\r
+                    int wkSortID;\r
+                    if (int.TryParse(param.Comment, out wkSortID))\r
+                    {\r
+                        if (!YesNoDialog.show(param.Comment + "をコメントとして入力しますか?"))\r
+                        {\r
+                            message = "処理を中断しました。";\r
+                            retVal = true;\r
+                            break;\r
+                        }\r
+                    }\r
+\r
+                    retVal = dataAccessor.insertMetaComment(param.Comment);\r
+\r
+                    message = "全体コメントを追加しました。";\r
+                    break;\r
+\r
+                case CommentMode.taskComment:\r
+                    TaskData taskData =TaskDataAccessor.getObject.getTask(param.sortID);\r
+                    if (null != taskData)\r
+                    {\r
+                        CommentData data = new CommentData();\r
+                        data.TaskID = taskData.TaskID;\r
+                        data.Comment = param.Comment;\r
+\r
+                        retVal = dataAccessor.insertComment(data);\r
+                        message = "タスクNo." + taskData.SortID + " にコメントを追加しました。";\r
+                    }\r
+                        //タスクが実在しない場合\r
+                    else\r
+                    {\r
+                        base.errorType = ErrorType.DataNotFound;\r
+                        retVal=false;\r
+                    }\r
+                    break;\r
+                default:\r
+                    break;\r
+            }\r
+            return retVal;\r
+        }\r
+\r
+        protected override string turnMessage()\r
+        {\r
+            return message;\r
+        }\r
+\r
+        protected override string turnErrorMessage()\r
+        {\r
+            return base.DefaultErrorMessage;\r
+        }\r
+\r
+        protected override string turnSplitErrorMessage()\r
+        {\r
+            return base.DefaultSplitErrorMessage;\r
+        }\r
+    }\r
+}\r
diff --git a/KyberNetes/command/Control/CommentCommandArg.cs b/KyberNetes/command/Control/CommentCommandArg.cs
new file mode 100644 (file)
index 0000000..5a1e7b1
--- /dev/null
@@ -0,0 +1,73 @@
+using System;\r
+using System.Collections.Generic;\r
+using System.Linq;\r
+using System.Text;\r
+\r
+namespace com.andoutomo.kybernetes.command.Control\r
+{\r
+    class CommentCommandArg:CommandArg\r
+    {\r
+        internal CommentMode mode\r
+        {\r
+            get;\r
+            private set;\r
+        }\r
+\r
+        internal int sortID\r
+        {\r
+            get;\r
+            private set;\r
+        }\r
+        internal string Comment\r
+        {\r
+            get;\r
+            private set;\r
+        }\r
+\r
+        public void split(string arguments)\r
+        {\r
+            string[] splitData = arguments.Split(' ');\r
+            if (splitData.Length < 2)\r
+            {\r
+                mode = CommentMode.show;\r
+            }\r
+            else if (splitData.Length == 2)\r
+            {\r
+                mode = CommentMode.metaComment;\r
+                Comment = splitData[1];\r
+            }\r
+            else\r
+            {\r
+                int wkSortID;\r
+                if (int.TryParse(splitData[1], out wkSortID))\r
+                {\r
+                    sortID = wkSortID;\r
+                    mode = CommentMode.taskComment;\r
+                    for (int i = 2; i < splitData.Length; i++)\r
+                    {\r
+                        Comment += splitData[i] + " ";\r
+                    }\r
+                }\r
+                else\r
+                {\r
+                    mode = CommentMode.metaComment;\r
+                    for (int i = 1; i < splitData.Length; i++)\r
+                    {\r
+                        Comment += splitData[i] + " ";\r
+                    }\r
+                }\r
+            }\r
+        }\r
+\r
+        public bool getSplitResult()\r
+        {\r
+            return true;\r
+        }\r
+    }\r
+    internal enum CommentMode\r
+    {\r
+        show,\r
+        metaComment,\r
+        taskComment\r
+    }\r
+}\r
index 4ff8de3..921d681 100644 (file)
@@ -8,16 +8,21 @@ namespace com.andoutomo.kybernetes.command.Control
     class DelayCommand:AbCommand\r
     {\r
         int taskID;\r
-        DateComponents retDate;\r
+        DateComponent retDate;\r
 \r
         protected override bool execute()\r
         {\r
-            DelayCommandArg param = (DelayCommandArg)args;\r
+            DelayCommandArg param = (DelayCommandArg)argument;\r
             taskID = param.sortID;\r
 \r
             if (param.nextDate == null)\r
             {\r
                 TaskData data = TaskDataAccessor.getObject.getTask(param.sortID);\r
+                if (data == null)\r
+                {\r
+                    base.errorType = ErrorType.DataNotFound;\r
+                    return false;\r
+                }\r
                 retDate = data.DoDate;\r
 \r
                 if (param.DateToSkip != int.MinValue)\r
index 38b0d6a..bf4ddd7 100644 (file)
@@ -6,7 +6,7 @@ namespace com.andoutomo.kybernetes.command.Control
 {\r
     class DelayCommandArg:StandardCommandArg\r
     {\r
-        internal DateComponents nextDate\r
+        internal DateComponent nextDate\r
         {\r
             get;\r
             private set;\r
@@ -23,7 +23,7 @@ namespace com.andoutomo.kybernetes.command.Control
             {\r
                 if (splitData[2].Contains("/"))\r
                 {\r
-                    nextDate = new DateComponents(splitData[2].Replace("/", ""));\r
+                    nextDate = new DateComponent(splitData[2].Replace("/", ""));\r
                 }\r
                 else if (splitData[2].Length < 4)\r
                 {\r
@@ -31,7 +31,7 @@ namespace com.andoutomo.kybernetes.command.Control
                 }\r
                 else\r
                 {\r
-                    nextDate = new DateComponents(splitData[2]);\r
+                    nextDate = new DateComponent(splitData[2]);\r
                 }\r
                 \r
                 isValid = true;\r
index 7a87860..d2acf93 100644 (file)
@@ -8,11 +8,16 @@ namespace com.andoutomo.kybernetes.command.Control
         string message;\r
         protected override bool execute()\r
         {\r
-            DuplicateCommandArg param = (DuplicateCommandArg)args;\r
+            DuplicateCommandArg param = (DuplicateCommandArg)argument;\r
 \r
             TaskDataAccessor accessor = TaskDataAccessor.getObject;\r
             // データを取得\r
             TaskData data = accessor.getTask(param.sortID);\r
+            if (data == null)\r
+            {\r
+                base.errorType = ErrorType.DataNotFound;\r
+                return false;\r
+            }\r
             // 次番号を取得\r
             data.TaskID = accessor.getMaxTaskID();\r
             data.SortID = accessor.getMaxSortID();\r
index 7ffc38b..1df4cad 100644 (file)
@@ -9,9 +9,14 @@ namespace com.andoutomo.kybernetes.command
         EndCommandArg param;\r
         protected override bool execute()\r
         {\r
-            param = (EndCommandArg)args;\r
+            param = (EndCommandArg)argument;\r
 \r
             TaskData _newData = TaskDataAccessor.getObject.getTask(param.sortID);\r
+            if (_newData == null)\r
+            {\r
+                base.errorType = ErrorType.DataNotFound;\r
+                return false;\r
+            }\r
             if (_newData.StartTime == null || _newData.StartTime.IsValid == false)\r
             {\r
                 message = "このタスクは開始されていません。startコマンドで開始してから終了してください。";\r
index 63aa782..bf5bd62 100644 (file)
@@ -7,7 +7,13 @@ namespace com.andoutomo.kybernetes.command
         RepeatCommandArg param;\r
         protected override bool execute()\r
         {\r
-            param = (RepeatCommandArg)args;\r
+            param = (RepeatCommandArg)argument;\r
+\r
+            if (!param.dataExists())\r
+            {\r
+                base.errorType = ErrorType.DataNotFound;\r
+                return false;\r
+            }\r
             return TaskDataAccessor.getObject.setRepeatTask(param.sortID, param.isRepeat);\r
         }\r
 \r
index 88c92fc..9fc497f 100644 (file)
@@ -11,7 +11,7 @@ namespace com.andoutomo.kybernetes.command
         {\r
             TaskDataAccessor accessor = TaskDataAccessor.getObject;\r
 \r
-            param = (StartCommandArg)args;\r
+            param = (StartCommandArg)argument;\r
             if (param.AutoMode)\r
             {\r
                 TaskData target = accessor.getTask(param.sortID);\r
@@ -30,7 +30,7 @@ namespace com.andoutomo.kybernetes.command
                 }\r
                 else\r
                 {\r
-                    message = "指定されたタスクは存在しません。確認後再設定してください。";\r
+                    base.errorType = ErrorType.DataNotFound;\r
                     return false;\r
                 }\r
             }\r
index 7a211b5..b24bf1a 100644 (file)
@@ -6,7 +6,7 @@ namespace com.andoutomo.kybernetes.command
     {\r
         protected override bool execute()\r
         {\r
-             param = (DateCommandArg)args;\r
+             param = (DateCommandArg)argument;\r
              return SettingDataAccessor.getObject.setToday(param.TodayDateComp);\r
 \r
         }\r
index f6ca9a7..dd55f4f 100644 (file)
@@ -16,14 +16,14 @@ namespace com.andoutomo.kybernetes.command
             string dateString = spaceSplitData[1];\r
             if (dateString.ToLower() == "today")\r
             {\r
-                TodayDateComp = new DateComponents(DateTime.Today.ToString("yyyyMMdd"));\r
+                TodayDateComp = new DateComponent(DateTime.Today.ToString("yyyyMMdd"));\r
                 splitResult = true;\r
             }\r
             else\r
             {\r
                 try\r
                 {\r
-                    TodayDateComp = new data.DateComponents(dateString);\r
+                    TodayDateComp = new data.DateComponent(dateString);\r
                     splitResult = true;\r
                 }\r
                 catch (Exception e)\r
@@ -33,7 +33,7 @@ namespace com.andoutomo.kybernetes.command
             }\r
         }\r
 \r
-        internal DateComponents TodayDateComp\r
+        internal DateComponent TodayDateComp\r
         {\r
             get;\r
             private set;\r
index 2fd18a7..941b5d7 100644 (file)
@@ -1,6 +1,7 @@
 using System;\r
 using System.IO;\r
 using com.andoutomo.kybernetes.control;\r
+using com.andoutomo.kybernetes.data.connection;\r
 \r
 namespace com.andoutomo.kybernetes.command.SYSTEM\r
 {\r
@@ -8,7 +9,7 @@ namespace com.andoutomo.kybernetes.command.SYSTEM
     {\r
         protected override bool execute()\r
         {\r
-            string maindb = System.AppDomain.CurrentDomain.BaseDirectory + "asurada.db";\r
+            string maindb = System.AppDomain.CurrentDomain.BaseDirectory + TaskDBConnection.Connection.targetDbFile();\r
             string filePath = form.invokeDmpDialog();\r
             try\r
             {\r
index 2020b16..485729a 100644 (file)
@@ -6,7 +6,7 @@ namespace com.andoutomo.kybernetes.command.SYSTEM
         private string Message;\r
         protected override bool execute()\r
         {\r
-            EchoCommandArg param = (EchoCommandArg)args;\r
+            EchoCommandArg param = (EchoCommandArg)argument;\r
             if (param.DoIt)\r
             {\r
                 form.Echo = param.Echo_setting;\r
index 5931a0e..6b3ce69 100644 (file)
@@ -9,7 +9,7 @@ namespace com.andoutomo.kybernetes.command
 \r
         protected override bool execute()\r
         {\r
-            HelpCommandArg thisArg = (HelpCommandArg)base.args;\r
+            HelpCommandArg thisArg = (HelpCommandArg)base.argument;\r
             CommandDataAccessor accessor = CommandDataAccessor.getObject;\r
             switch (thisArg.SubCommandType)\r
             {\r
index 8c1e921..020230e 100644 (file)
@@ -11,7 +11,7 @@ namespace com.andoutomo.kybernetes.command.SYSTEM
 \r
         protected override bool execute()\r
         {\r
-            param = (LinkCommandArg)args;\r
+            param = (LinkCommandArg)argument;\r
             LinkDataAccessor accessor = LinkDataAccessor.getObject;\r
             bool hasLink =accessor.hasLink(param.ShortcutStr);\r
             bool retVal=false;\r
index ada0176..5ddf2e1 100644 (file)
@@ -8,7 +8,7 @@ namespace com.andoutomo.kybernetes.command.SYSTEM
         private string message;\r
         protected override bool execute()\r
         {\r
-            param = (LogModeCommandArg)args;\r
+            param = (LogModeCommandArg)argument;\r
             SettingDataAccessor accessor = SettingDataAccessor.getObject;\r
 \r
             if (param.showMode)\r
index 234e90f..fedb7c6 100644 (file)
@@ -11,7 +11,7 @@ namespace com.andoutomo.kybernetes.command
         protected override bool execute()\r
         {\r
             \r
-            DateComponents todaydate = SettingDataAccessor.getObject.getToday();\r
+            DateComponent todaydate = SettingDataAccessor.getObject.getToday();\r
 \r
             todaystr = todaydate.getDateString("yyyy / MM / dd") + "(" + todaydate.getDowStr() + ")";\r
 \r
index 94d788b..0e43309 100644 (file)
@@ -9,7 +9,7 @@ namespace com.andoutomo.kybernetes.command.reference
     {\r
         protected override bool execute()\r
         {\r
-            EstimateCommandArg param = (EstimateCommandArg)args;\r
+            EstimateCommandArg param = (EstimateCommandArg)argument;\r
             string targetDate=string.Empty;\r
 \r
             //タスクリストを取得\r
index 565ffb8..5b8a907 100644 (file)
@@ -4,7 +4,7 @@ namespace com.andoutomo.kybernetes.command.reference
 {\r
     class EstimateCommandArg:CommandArg\r
     {\r
-        internal DateComponents targetDate\r
+        internal DateComponent targetDate\r
         {\r
             get;\r
             private set;\r
@@ -19,7 +19,7 @@ namespace com.andoutomo.kybernetes.command.reference
             }\r
             else\r
             {\r
-                targetDate = new DateComponents(splitData[1]);\r
+                targetDate = new DateComponent(splitData[1]);\r
             }\r
         }\r
 \r
index 18098aa..66ccb6f 100644 (file)
@@ -12,9 +12,9 @@ namespace com.andoutomo.kybernetes.command.reference
     {\r
         protected override bool execute()\r
         {\r
-            FindCommandArg param = (FindCommandArg)args;\r
+            FindCommandArg param = (FindCommandArg)argument;\r
 \r
-            DateComponents todayDate = SettingDataAccessor.getObject.getToday();\r
+            DateComponent todayDate = SettingDataAccessor.getObject.getToday();\r
             List<TaskData> dataList = TaskDataAccessor.getObject.findTask(param.searchWord);\r
 \r
 \r
diff --git a/KyberNetes/command/reference/ShowCommand.cs b/KyberNetes/command/reference/ShowCommand.cs
new file mode 100644 (file)
index 0000000..14ad8e1
--- /dev/null
@@ -0,0 +1,79 @@
+using System;\r
+using System.Collections.Generic;\r
+using System.Linq;\r
+using System.Text;\r
+using com.andoutomo.kybernetes.command.template;\r
+using com.andoutomo.kybernetes.data.DAO;\r
+using com.andoutomo.kybernetes.data.accessor;\r
+\r
+namespace com.andoutomo.kybernetes.command.reference\r
+{\r
+    class ShowCommand:AbCommand\r
+    {\r
+        protected override bool execute()\r
+        {\r
+            StandardCommandArg param = (StandardCommandArg)argument;\r
+            int sortID = param.sortID;\r
+\r
+            TaskData data = TaskDataAccessor.getObject.getTask(sortID);\r
+            if (data == null)\r
+            {\r
+                base.errorType = ErrorType.DataNotFound;\r
+                return false;\r
+            }\r
+            List<string> resultList = new List<string>();\r
+\r
+            resultList.Add(data.SortID + " " + data.Contents + " (" + data.Category + ")");\r
+            string wkForecastReal = string.Empty;\r
+            wkForecastReal += "予測 " + data.ForecastMin + "分";\r
+            if (data.RealMin > 0)\r
+            {\r
+                wkForecastReal += " 実績 " + data.RealMin + "分";\r
+                wkForecastReal += " (差異 " + (data.RealMin - data.ForecastMin) + "分)";\r
+            }\r
+            resultList.Add(wkForecastReal);\r
+            string wkStartEnd = string.Empty;\r
+\r
+            if (data.StartTime.IsValid)\r
+            {\r
+                wkStartEnd += data.StartTime.ToString() + "開始";\r
+            }\r
+            if (data.EndTime.IsValid)\r
+            {\r
+                wkStartEnd += " " + data.EndTime.ToString() + "終了";\r
+            }\r
+            if (!string.IsNullOrEmpty(wkStartEnd))\r
+            {\r
+                resultList.Add(wkStartEnd);\r
+            }\r
+\r
+            //Comment\r
+            List<CommentData> comments = CommentDataAccessor.getObject.getComment(data.TaskID);\r
+            foreach (CommentData com in comments)\r
+            {\r
+                resultList.Add("------ " + com.CreateDateStr + " ------");\r
+                resultList.Add(com.Comment);\r
+            }\r
+\r
+\r
+            form.addMultiText(resultList);\r
+\r
+            return true;\r
+        }\r
+\r
+        protected override string turnMessage()\r
+        {\r
+            return string.Empty;\r
+        }\r
+\r
+        protected override string turnErrorMessage()\r
+        {\r
+            return base.DefaultErrorMessage;\r
+        }\r
+\r
+        protected override string turnSplitErrorMessage()\r
+        {\r
+            return base.DefaultSplitErrorMessage;\r
+        }\r
+    }\r
+}\r
diff --git a/KyberNetes/command/reference/ShowCommandArg.cs b/KyberNetes/command/reference/ShowCommandArg.cs
new file mode 100644 (file)
index 0000000..69e6938
--- /dev/null
@@ -0,0 +1,17 @@
+using System;\r
+using System.Collections.Generic;\r
+using System.Linq;\r
+using System.Text;\r
+using com.andoutomo.kybernetes.command.template;\r
+\r
+namespace com.andoutomo.kybernetes.command.reference\r
+{\r
+    class ShowCommandArg:StandardCommandArg\r
+    {\r
+\r
+        protected override void split()\r
+        {\r
+            return;\r
+        }\r
+    }\r
+}\r
diff --git a/KyberNetes/command/reference/SimulateCommand.cs b/KyberNetes/command/reference/SimulateCommand.cs
new file mode 100644 (file)
index 0000000..f95eba1
--- /dev/null
@@ -0,0 +1,93 @@
+using System;\r
+using System.Collections.Generic;\r
+using System.Linq;\r
+using System.Text;\r
+using com.andoutomo.kybernetes.data;\r
+using com.andoutomo.kybernetes.data.accessor;\r
+using com.andoutomo.kybernetes.data.DAO;\r
+\r
+namespace com.andoutomo.kybernetes.command.reference\r
+{\r
+    class SimulateCommand:AbCommand\r
+    {\r
+        string message;\r
+        protected override bool execute()\r
+        {\r
+            SimulateCommandArg param = (SimulateCommandArg)argument;\r
+            DateComponent searchDate = param.targetDate;\r
+\r
+            DateComponent todayDate = SettingDataAccessor.getObject.getToday();\r
+            TaskDataAccessor dataAccess = TaskDataAccessor.getObject;\r
+            List<TaskData> dataList;\r
+            List<string> retList = new List<string>();\r
+\r
+            if (searchDate != null)\r
+            {\r
+                dataList = dataAccess.getDailyTaskList(searchDate);\r
+            }\r
+            else\r
+            {\r
+                dataList = dataAccess.getToDayTaskList();\r
+            }\r
+            if (dataList.Count == 0)\r
+            {\r
+                message = "対象タスクがありません。";\r
+                return false;\r
+            }\r
+            TimeComponent baseTime = TimeComponent.justNow();\r
+            \r
+            retList.Add("現在の時刻 " + baseTime.ToString());\r
+            retList.Add(string.Empty);\r
+            bool alreadySetFlg = false;\r
+            foreach (TaskData data in dataList)\r
+            {\r
+                if (data.isComplete)\r
+                {\r
+                    continue;\r
+                }\r
+                else if (data.StartTime.IsValid)\r
+                {\r
+                    //実行中のタスクを開始時間として取得していない場合\r
+                    if (alreadySetFlg)\r
+                    {\r
+                        continue;\r
+                    }\r
+                    //既に取得している場合は、二重取得をしない。\r
+                    else\r
+                    {\r
+                        baseTime = data.StartTime;\r
+                        alreadySetFlg = true;\r
+                    }\r
+                }\r
+\r
+                string wkStartTime = baseTime.ToString();\r
+                baseTime.add(data.ForecastMin);\r
+                string wkEndTime = baseTime.ToString();\r
+\r
+                retList.Add(" " + data.SortID + " " + wkStartTime + " ~ " + wkEndTime + "  " + data.Contents);\r
+\r
+            }\r
+            retList.Add(string.Empty);\r
+            retList.Add("終了予定時間 " + baseTime.ToString());\r
+\r
+            form.addMultiText(retList);\r
+\r
+            return true;\r
+        }\r
+\r
+        protected override string turnMessage()\r
+        {\r
+            return string.Empty;\r
+        }\r
+\r
+        protected override string turnErrorMessage()\r
+        {\r
+            return string.IsNullOrEmpty(message) ? base.DefaultErrorMessage : message;\r
+        }\r
+\r
+        protected override string turnSplitErrorMessage()\r
+        {\r
+            return base.DefaultSplitErrorMessage;\r
+        }\r
+    }\r
+}\r
diff --git a/KyberNetes/command/reference/SimulateCommandArg.cs b/KyberNetes/command/reference/SimulateCommandArg.cs
new file mode 100644 (file)
index 0000000..5858b94
--- /dev/null
@@ -0,0 +1,35 @@
+using System;\r
+using System.Collections.Generic;\r
+using System.Linq;\r
+using System.Text;\r
+using com.andoutomo.kybernetes.data;\r
+\r
+namespace com.andoutomo.kybernetes.command.reference\r
+{\r
+    class SimulateCommandArg:CommandArg\r
+    {\r
+        internal DateComponent targetDate\r
+        {\r
+            get;\r
+            private set;\r
+        }\r
+        public void split(string arguments)\r
+        {\r
+\r
+            string[] splitData = arguments.Split(' ');\r
+            if (splitData.Length == 1)\r
+            {\r
+                targetDate = null;\r
+            }\r
+            else\r
+            {\r
+                targetDate = new DateComponent(splitData[1]);\r
+            }\r
+        }\r
+\r
+        public bool getSplitResult()\r
+        {\r
+            return true;\r
+        }\r
+    }\r
+}\r
index 2301ada..fc0ea8a 100644 (file)
@@ -12,21 +12,23 @@ namespace com.andoutomo.kybernetes.command.reference
     {\r
         protected override bool execute()\r
         {\r
-            SumCommandArg param = (SumCommandArg)args;\r
+            SumCommandArg param = (SumCommandArg)argument;\r
 \r
             List<int> targetList = param.targetData;\r
-\r
-            TimeComponent forcast = new TimeComponent(0,0);\r
-            TimeComponent realTime = new TimeComponent(0, 0);\r
+            int wkForcast = 0;\r
+            int wkReal = 0;\r
 \r
             foreach (int sortID in targetList)\r
             {\r
                 TaskData data = TaskDataAccessor.getObject.getTask(sortID);\r
-                forcast.add(data.ForecastMin);\r
-                realTime.add(data.RealMin);\r
-\r
+                if (data != null)\r
+                {\r
+                    wkForcast += data.ForecastMin;\r
+                    wkReal += data.RealMin;\r
+                }\r
             }\r
-\r
+            TimeComponent forcast = new TimeComponent(wkForcast);\r
+            TimeComponent realTime = new TimeComponent(wkReal);\r
 \r
 \r
             List<string> resultList = new List<string>();\r
index a6099be..7feec5f 100644 (file)
@@ -1,4 +1,6 @@
 \r
+using com.andoutomo.kybernetes.data.accessor;\r
+using com.andoutomo.kybernetes.data.DAO;\r
 namespace com.andoutomo.kybernetes.command.template\r
 {\r
     abstract class StandardCommandArg:CommandArg\r
@@ -51,5 +53,13 @@ namespace com.andoutomo.kybernetes.command.template
         {\r
             return isValid;\r
         }\r
+        /// <summary>\r
+        /// 対象データの存在を確認します。\r
+        /// </summary>\r
+        /// <returns></returns>\r
+        public bool dataExists()\r
+        {\r
+            return (TaskDataAccessor.getObject.getTask(sortID) != null);\r
+        }\r
     }\r
 }\r
index e18bc4b..528e878 100644 (file)
@@ -13,7 +13,7 @@ namespace com.andoutomo.kybernetes.command
         protected abstract string turnSplitErrorMessage();\r
 \r
         protected BaseForm form;\r
-        protected CommandArg args;\r
+        protected CommandArg argument;\r
 \r
 \r
         /// <summary>\r
@@ -34,7 +34,7 @@ namespace com.andoutomo.kybernetes.command
                 return false;\r
             }\r
 \r
-            this.args = _args;\r
+            this.argument = _args;\r
             this.form = _form;\r
 \r
             if (execute())\r
@@ -65,9 +65,30 @@ namespace com.andoutomo.kybernetes.command
         {\r
             return message;\r
         }\r
+\r
+        protected ErrorType errorType\r
+        {\r
+            private get;\r
+            set;\r
+        }\r
+\r
         protected string DefaultErrorMessage\r
         {\r
-            get { return "予期せぬエラーが発生いたしました。"; }\r
+            get\r
+            {\r
+                string errorMessage;\r
+                switch(errorType){\r
+                    case ErrorType.DataNotFound:\r
+                        errorMessage = "対象データが見つかりません。";\r
+                        break;\r
+                    case ErrorType.Unexpected:\r
+                    default:\r
+                        errorMessage = "予期せぬエラーが発生いたしました。";\r
+                        break;\r
+                }\r
+                return errorMessage;\r
+            \r
+            }\r
         }\r
         protected string DefaultSplitErrorMessage\r
         {\r
@@ -79,4 +100,9 @@ namespace com.andoutomo.kybernetes.command
         }\r
 \r
     }\r
+    internal enum ErrorType\r
+    {\r
+        Unexpected,\r
+        DataNotFound,\r
+    }\r
 }\r
index 6ea0b1d..1246d62 100644 (file)
@@ -29,7 +29,7 @@ namespace com.andoutomo.kybernetes.control
 \r
         private KybernetesLogger()\r
         {\r
-            logpath = System.AppDomain.CurrentDomain.BaseDirectory + "asurada.log";\r
+            logpath = System.AppDomain.CurrentDomain.BaseDirectory + "kybernetes.log";\r
         }\r
         /// <summary>\r
         /// ログ出力オブジェクト\r
diff --git a/KyberNetes/data/Component/DateComponent.cs b/KyberNetes/data/Component/DateComponent.cs
new file mode 100644 (file)
index 0000000..681a743
--- /dev/null
@@ -0,0 +1,122 @@
+using System;\r
+using com.andoutomo.kybernetes.control;\r
+\r
+namespace com.andoutomo.kybernetes.data\r
+{\r
+    internal class DateComponent\r
+    {\r
+        private DateTime innerDate;\r
+\r
+        internal DateComponent(int year, int month, int day)\r
+        {\r
+            innerDate = new DateTime(year, month, day);\r
+        }\r
+        internal DateComponent(int month, int day)\r
+        {\r
+            innerDate = new DateTime(DateTime.Today.Year, month, day);\r
+        }\r
+        /// <summary>\r
+        /// スペース区切りで日付と時刻を分け、日付のみさらにスプリッタで分ける。\r
+        /// SQLite向けコンストラクタ\r
+        /// </summary>\r
+        /// <param name="dateStr"></param>\r
+        /// <param name="separater"></param>\r
+        internal DateComponent(string dateStr,char separater)\r
+        {\r
+            string[] wkData1 = dateStr.Split(' ');\r
+            string[] wkData2 = wkData1[0].Split(separater);\r
+            innerDate = new DateTime(int.Parse(wkData2[0]), int.Parse(wkData2[1]), int.Parse(wkData2[2]));\r
+        }\r
+        /// <summary>\r
+        /// yyyyMMdd方式か、MMdd方式で表記された文字列から日付コンポーネントを作成する\r
+        /// </summary>\r
+        /// <param name="dateStr"></param>\r
+        internal DateComponent(string dateStr)\r
+        {\r
+            try\r
+            {\r
+                if (dateStr.Length == 8)\r
+                {\r
+                    string yearStr = dateStr.Substring(0, 4);\r
+                    string monthStr = dateStr.Substring(4, 2);\r
+                    string dayStr = dateStr.Substring(6, 2);\r
+                    innerDate = new DateTime(int.Parse(yearStr), int.Parse(monthStr), int.Parse(dayStr));\r
+                }\r
+                else if (dateStr.Length == 4)\r
+                {\r
+                    string monthStr = dateStr.Substring(0, 2);\r
+                    string dayStr = dateStr.Substring(2, 2);\r
+                    innerDate = new DateTime(DateTime.Today.Year, int.Parse(monthStr), int.Parse(dayStr));\r
+\r
+                }\r
+                else\r
+                {\r
+                    throw new KybernetesApplicationException("日付への変換ができません:" + dateStr);\r
+                }\r
+            }\r
+            catch (Exception e)\r
+            {\r
+                throw new KybernetesApplicationException(e);\r
+            }\r
+        }\r
+\r
+        internal DateComponent(DateTime dateTime)\r
+        {\r
+            innerDate = dateTime;\r
+        }\r
+\r
+        internal void addDate(int dateToAdd)\r
+        {\r
+            innerDate = innerDate.AddDays(dateToAdd);\r
+        }\r
+\r
+        /// <summary>\r
+        /// 日付文字列を出力(デフォルト)\r
+        /// </summary>\r
+        /// <returns></returns>\r
+        internal string getDateString()\r
+        {\r
+            return innerDate.ToString("MM/dd");\r
+        }\r
+        internal string getDateString(string format)\r
+        {\r
+            return innerDate.ToString(format);\r
+        }\r
+        /// <summary>\r
+        /// 曜日を出力します。\r
+        /// </summary>\r
+        /// <returns></returns>\r
+        internal string getDowStr()\r
+        {\r
+            switch (innerDate.DayOfWeek){\r
+                case DayOfWeek.Monday:\r
+                    return "月";\r
+                case DayOfWeek.Tuesday:\r
+                    return "火";\r
+                case DayOfWeek.Wednesday:\r
+                    return "水";\r
+                case DayOfWeek.Thursday:\r
+                    return "木";\r
+                case DayOfWeek.Friday:\r
+                    return "金";\r
+                case DayOfWeek.Saturday:\r
+                    return "土";\r
+                case DayOfWeek.Sunday:\r
+                    return "日";\r
+\r
+                default:\r
+                    return "";\r
+            }\r
+        }\r
+        /// <summary>\r
+        /// 日数差を計算します。\r
+        /// </summary>\r
+        /// <param name="target"></param>\r
+        /// <returns></returns>\r
+        internal int calculateDateDiff(DateComponent target)\r
+        {\r
+            TimeSpan thisDateLange = innerDate.Subtract(target.innerDate);\r
+            return thisDateLange.Days;\r
+        }\r
+    }\r
+}\r
diff --git a/KyberNetes/data/DAO/CommentData.cs b/KyberNetes/data/DAO/CommentData.cs
new file mode 100644 (file)
index 0000000..897989a
--- /dev/null
@@ -0,0 +1,38 @@
+using System;\r
+using System.Collections.Generic;\r
+using System.Linq;\r
+using System.Text;\r
+\r
+namespace com.andoutomo.kybernetes.data.DAO\r
+{\r
+    class CommentData\r
+    {\r
+        internal int CommentID\r
+        {\r
+            get;\r
+            set;\r
+        }\r
+        internal int TaskID\r
+        {\r
+            get;\r
+            set;\r
+        }\r
+        internal DateTime CreateDate\r
+        {\r
+            get;\r
+            set;\r
+        }\r
+        internal string CreateDateStr\r
+        {\r
+            get\r
+            {\r
+                return CreateDate.ToString("yyyy/MM/dd HH:mm");\r
+            }\r
+        }\r
+        internal string Comment\r
+        {\r
+            get;\r
+            set;\r
+        }\r
+    }\r
+}\r
index 623592e..8cc7b47 100644 (file)
@@ -6,7 +6,7 @@ namespace com.andoutomo.kybernetes.data.DAO
     {\r
         private int taskid;\r
         private int sortid;\r
-        private DateComponents doDate;\r
+        private DateComponent doDate;\r
         private string timeArea;\r
         private string category;\r
         private string contents;\r
@@ -16,7 +16,8 @@ namespace com.andoutomo.kybernetes.data.DAO
         private int isRepeat;\r
         private int bgColor;\r
         private int frColor;\r
-        private DateComponents _today;\r
+        private DateComponent _today;\r
+        private int hasComment;\r
 \r
         private int categID;\r
         \r
@@ -30,7 +31,7 @@ namespace com.andoutomo.kybernetes.data.DAO
             get { return sortid; }\r
             set { this.sortid = value; }\r
         }\r
-        internal DateComponents DoDate\r
+        internal DateComponent DoDate\r
         {\r
             get { return doDate; }\r
             set { this.doDate = value; }\r
@@ -126,7 +127,7 @@ namespace com.andoutomo.kybernetes.data.DAO
             get { return frColor; }\r
             set { this.frColor = value; }\r
         }\r
-        internal DateComponents Today\r
+        internal DateComponent Today\r
         {\r
             private get { return _today; }\r
             set { this._today = value; }\r
@@ -193,5 +194,11 @@ namespace com.andoutomo.kybernetes.data.DAO
                 return builder.ToString(); \r
             }\r
         }\r
+\r
+        internal int HasComment\r
+        {\r
+            get { return hasComment; }\r
+            set { this.hasComment = value; }\r
+        }\r
     }\r
 }\r
index 30c517b..7094dc1 100644 (file)
@@ -37,7 +37,7 @@ namespace com.andoutomo.kybernetes.data.accessor
             CategoryData result = null;\r
             List<object> list = new List<object>();\r
             list.Add(categName);\r
-            AsuradaDBConnection.getObject.selectData(SqlDictionary.getCategoryFromCategName, list,\r
+            TaskDBConnection.Connection.selectData(SqlDictionary.getCategoryFromCategName, list,\r
             (SQLiteDataReader reader) =>\r
             {\r
                 if (reader.HasRows != false)\r
@@ -57,7 +57,7 @@ namespace com.andoutomo.kybernetes.data.accessor
             CategoryData result = null;\r
             List<object> list = new List<object>();\r
             list.Add(id);\r
-            AsuradaDBConnection.getObject.selectData(SqlDictionary.getCategoryFromCategId, list,\r
+            TaskDBConnection.Connection.selectData(SqlDictionary.getCategoryFromCategId, list,\r
             (SQLiteDataReader reader) =>\r
             {\r
                 if (reader.HasRows != false)\r
@@ -80,7 +80,7 @@ namespace com.andoutomo.kybernetes.data.accessor
         internal List<CategoryData> getAllCategory()\r
         {\r
             List<CategoryData> result = new List<CategoryData>();\r
-            AsuradaDBConnection.getObject.selectData(SqlDictionary.getALLCategory, \r
+            TaskDBConnection.Connection.selectData(SqlDictionary.getALLCategory, \r
                 (SQLiteDataReader reader) =>\r
                 {\r
                     while (reader.Read())\r
index cdc6d87..ed80bf3 100644 (file)
@@ -37,7 +37,7 @@ namespace com.andoutomo.kybernetes.data.accessor
             CommandData result = null;\r
             List<object> list = new List<object>();\r
             list.Add(commandStr);\r
-            AsuradaDBConnection.getObject.selectData(SqlDictionary.getCommand, list,\r
+            SettingDBConnection.Connection.selectData(CommandSqlDictionary.getCommand, list,\r
             (SQLiteDataReader reader) =>\r
             {\r
                 if (reader.HasRows != false)\r
@@ -55,7 +55,7 @@ namespace com.andoutomo.kybernetes.data.accessor
         internal List<HelpData> getAllHelp()\r
         {\r
             List<HelpData> allHelp = new List<HelpData>();\r
-            AsuradaDBConnection.getObject.selectData(SqlDictionary.HELPALL,new List<object>(),\r
+            SettingDBConnection.Connection.selectData(CommandSqlDictionary.HELPALL, new List<object>(),\r
                 (SQLiteDataReader reader)=>{\r
                     while (reader.Read())\r
                     {\r
@@ -75,7 +75,7 @@ namespace com.andoutomo.kybernetes.data.accessor
             List<object> parameters = new List<object>();\r
             parameters.Add(cmdStr);\r
             HelpData retVal =null;\r
-            AsuradaDBConnection.getObject.selectData(SqlDictionary.getHelp, parameters,\r
+            SettingDBConnection.Connection.selectData(CommandSqlDictionary.getHelp, parameters,\r
                 (SQLiteDataReader reader) =>\r
                 {\r
                     if (reader.HasRows)\r
@@ -100,7 +100,7 @@ namespace com.andoutomo.kybernetes.data.accessor
             parameters.Add(cmdStr);\r
             string retStr = string.Empty;\r
 \r
-            AsuradaDBConnection.getObject.selectData(SqlDictionary.getLink, parameters,\r
+            SettingDBConnection.Connection.selectData(CommandSqlDictionary.getLink, parameters,\r
                 (SQLiteDataReader reader) =>\r
                 {\r
                     while (reader.Read())\r
diff --git a/KyberNetes/data/accessor/CommentDataAccessor.cs b/KyberNetes/data/accessor/CommentDataAccessor.cs
new file mode 100644 (file)
index 0000000..c9b7257
--- /dev/null
@@ -0,0 +1,136 @@
+using System;\r
+using System.Collections.Generic;\r
+using System.Linq;\r
+using System.Text;\r
+using com.andoutomo.kybernetes.data.DAO;\r
+using com.andoutomo.kybernetes.data.connection;\r
+using System.Data.SQLite;\r
+\r
+namespace com.andoutomo.kybernetes.data.accessor\r
+{\r
+    class CommentDataAccessor\r
+    {\r
+        #region singleton\r
+        private static CommentDataAccessor accessor;\r
+        private CommentDataAccessor()\r
+        {\r
+        }\r
+        internal static CommentDataAccessor getObject\r
+        {\r
+            get\r
+            {\r
+                if (accessor == null)\r
+                {\r
+                    accessor = new CommentDataAccessor();\r
+                }\r
+                return accessor;\r
+            }\r
+        }\r
+        #endregion\r
+\r
+        private List<CommentData> getCommentInner(string sql,List<object> paramList)\r
+        {\r
+            List<CommentData> result = new List<CommentData>();\r
+            \r
+            \r
+\r
+            TaskDBConnection.Connection.selectData(sql, paramList,\r
+                (SQLiteDataReader reader) =>\r
+                {\r
+                    while (reader.Read())\r
+                    {\r
+                        CommentData data = new CommentData();\r
+                        data.CommentID = Convert.ToInt32(reader["ID"].ToString());\r
+                        if (string.IsNullOrEmpty(reader["TASKID"].ToString()))\r
+                        {\r
+                            data.TaskID = 0; \r
+                        }\r
+                        else\r
+                        {\r
+                            data.TaskID = Convert.ToInt32(reader["TASKID"].ToString());\r
+                        }\r
+                        \r
+                        data.CreateDate = Convert.ToDateTime(reader["CREATETIME"].ToString());\r
+                        data.Comment = reader["COMMENT"].ToString();\r
+\r
+                        result.Add(data);\r
+                    }\r
+                });\r
+            return result;\r
+        }\r
+\r
+        /// <summary>\r
+        /// 対象IDに紐づくコメントを抽出する\r
+        /// </summary>\r
+        /// <param name="id"></param>\r
+        /// <returns></returns>\r
+        internal List<CommentData> getComment(int id)\r
+        {\r
+            List<object> paramList = new List<object>() { id };\r
+            return getCommentInner(SqlDictionary.getComments,paramList);\r
+        }\r
+        /// <summary>\r
+        /// メタコメントを抽出する.\r
+        /// システム日付と一致するもののみ抽出する。\r
+        /// </summary>\r
+        /// <returns></returns>\r
+        internal List<CommentData> getComment()\r
+        {\r
+            return getCommentInner(SqlDictionary.getMetaComment, new List<object>());\r
+        }\r
+\r
+        /// <summary>\r
+        /// コメントを入力する\r
+        /// </summary>\r
+        /// <param name="data"></param>\r
+        /// <returns></returns>\r
+        internal bool insertComment(CommentData data)\r
+        {\r
+            List<object> paramList = new List<object>();\r
+            paramList.Add(data.TaskID);\r
+            paramList.Add(data.Comment);\r
+\r
+            return TaskDBConnection.Connection.updateData(SqlDictionary.insertComment, paramList);\r
+        }\r
+        /// <summary>\r
+        /// メタコメントを入力する\r
+        /// </summary>\r
+        /// <param name="comment"></param>\r
+        /// <returns></returns>\r
+        internal bool insertMetaComment(string comment)\r
+        {\r
+            List<object> paramList = new List<object>() { comment };\r
+            return TaskDBConnection.Connection.updateData(SqlDictionary.insertMetaComment, paramList);\r
+        }\r
+\r
+        /// <summary>\r
+        /// 紐付きを失ったコメントを全削除します。\r
+        /// </summary>\r
+        /// <returns></returns>\r
+        internal bool deleteCommentWithTask()\r
+        {\r
+            return TaskDBConnection.Connection.updateData(SqlDictionary.clearZombieComment);\r
+        }\r
+\r
+        /// <summary>\r
+        /// 日付単位のメタコメントを削除します。\r
+        /// </summary>\r
+        /// <param name="date"></param>\r
+        /// <returns></returns>\r
+        internal bool deleteDailyComment(DateComponent date)\r
+        {\r
+            List<object> paramList = new List<object>() { date.getDateString("yyyy-MM-dd") };\r
+            return TaskDBConnection.Connection.updateData(SqlDictionary.clearMetaComment,paramList);\r
+        }\r
+        /// <summary>\r
+        /// タスク単位でコメントを削除します。\r
+        /// </summary>\r
+        /// <param name="taskID"></param>\r
+        /// <returns></returns>\r
+        internal bool deleteTaskComment(int taskID)\r
+        {\r
+            List<object> paramList = new List<object>() { taskID };\r
+            return TaskDBConnection.Connection.updateData(SqlDictionary.clearTaskComment, paramList);\r
+        }\r
+    }\r
+}\r
index 9eae72a..9738067 100644 (file)
@@ -30,14 +30,14 @@ namespace com.andoutomo.kybernetes.data.accessor
             paramList.Add(linkCmd);\r
             paramList.Add(BaseCmd);\r
 \r
-            return AsuradaDBConnection.getObject.updateData(SqlDictionary.insertLink, paramList);\r
+            return SettingDBConnection.Connection.updateData(CommandSqlDictionary.insertLink, paramList);\r
         }\r
         internal bool removeLink(string linkCmd)\r
         {\r
             List<object> paramList = new List<object>();\r
             paramList.Add(linkCmd);\r
-            \r
-            return AsuradaDBConnection.getObject.updateData(SqlDictionary.removeLink, paramList);\r
+\r
+            return SettingDBConnection.Connection.updateData(CommandSqlDictionary.removeLink, paramList);\r
             \r
         }\r
         internal bool hasLink(string linkCmd)\r
@@ -45,7 +45,7 @@ namespace com.andoutomo.kybernetes.data.accessor
             List<object> paramList = new List<object>();\r
             paramList.Add(linkCmd);\r
             bool wkRetVal = false;\r
-            AsuradaDBConnection.getObject.selectData(SqlDictionary.hasLink, paramList, \r
+            SettingDBConnection.Connection.selectData(CommandSqlDictionary.hasLink, paramList, \r
                 (SQLiteDataReader reader) => \r
                 {\r
                     if (reader.HasRows)\r
@@ -66,7 +66,7 @@ namespace com.andoutomo.kybernetes.data.accessor
         internal List<SimpleDataBean> getAllLink()\r
         {\r
             List<SimpleDataBean> result = new List<SimpleDataBean>();\r
-            AsuradaDBConnection.getObject.selectData(SqlDictionary.getAllLink, \r
+            SettingDBConnection.Connection.selectData(CommandSqlDictionary.getAllLink, \r
                 (SQLiteDataReader reader) =>\r
             {\r
                 while (reader.Read())\r
index 26db124..71a3fab 100644 (file)
@@ -23,32 +23,32 @@ namespace com.andoutomo.kybernetes.data.accessor
             }\r
         }\r
 \r
-        internal DateComponents getToday()\r
+        internal DateComponent getToday()\r
         {\r
-            DateComponents todayData = new DateComponents(DateTime.Now);\r
-            AsuradaDBConnection.getObject.selectData(SqlDictionary.getToday, (SQLiteDataReader reader) =>\r
+            DateComponent todayData = new DateComponent(DateTime.Now);\r
+            TaskDBConnection.Connection.selectData(SqlDictionary.getToday, (SQLiteDataReader reader) =>\r
             {\r
                 if (reader.HasRows)\r
                 {\r
                     reader.Read();\r
-                    todayData = new DateComponents(reader["TODAY"].ToString(), '/');\r
+                    todayData = new DateComponent(reader["TODAY"].ToString(), '/');\r
                 }\r
             });\r
 \r
             return todayData;\r
         }\r
-        internal bool setToday(DateComponents dateComp)\r
+        internal bool setToday(DateComponent dateComp)\r
         {\r
             List<object> arg = new List<object>();\r
             arg.Add(dateComp.getDateString("yyyy-MM-dd"));\r
 \r
-            return AsuradaDBConnection.getObject.updateData(SqlDictionary.updateToday,arg);\r
+            return TaskDBConnection.Connection.updateData(SqlDictionary.updateToday, arg);\r
         }\r
         \r
         internal LogMode getLogMode()\r
         {\r
             LogMode retVal=LogMode.Error;\r
-            AsuradaDBConnection.getObject.selectData(SqlDictionary.getLogMode,\r
+            TaskDBConnection.Connection.selectData(SqlDictionary.getLogMode,\r
                 (SQLiteDataReader reader) =>\r
                 {\r
                     if (reader.HasRows)\r
@@ -74,21 +74,21 @@ namespace com.andoutomo.kybernetes.data.accessor
         /// </summary>\r
         internal bool changeLogModeToTrace()\r
         {\r
-            return AsuradaDBConnection.getObject.updateData(SqlDictionary.changeTraceMode);\r
+            return TaskDBConnection.Connection.updateData(SqlDictionary.changeTraceMode);\r
         }\r
         /// <summary>\r
         /// ログモードを通常モードに切り替えます。\r
         /// </summary>\r
         internal bool changeLogModeToError()\r
         {\r
-            return AsuradaDBConnection.getObject.updateData(SqlDictionary.changeErrorMode);\r
+            return TaskDBConnection.Connection.updateData(SqlDictionary.changeErrorMode);\r
         }\r
         /// <summary>\r
         /// ログモードをデバッグに切り替えます。\r
         /// </summary>\r
         internal bool changeLogModeToDebug()\r
         {\r
-            return AsuradaDBConnection.getObject.updateData(SqlDictionary.changeDebugMode);\r
+            return TaskDBConnection.Connection.updateData(SqlDictionary.changeDebugMode);\r
         }\r
         /// <summary>\r
         /// タイムエリア初期値を取得します。\r
@@ -97,7 +97,7 @@ namespace com.andoutomo.kybernetes.data.accessor
         internal string getDefaultTimeArea()\r
         {\r
             string retStr = string.Empty;\r
-            AsuradaDBConnection.getObject.selectData("SELECT DEFAULTTIMEAREA FROM TBL_SETTING", \r
+            TaskDBConnection.Connection.selectData("SELECT DEFAULTTIMEAREA FROM TBL_SETTING", \r
                 (SQLiteDataReader reader) =>\r
             {\r
                 if (reader.HasRows)\r
index db1a8e2..3ba3090 100644 (file)
@@ -41,7 +41,7 @@ namespace com.andoutomo.kybernetes.data.accessor
         /// </summary>\r
         /// <param name="date"></param>\r
         /// <returns></returns>\r
-        internal List<TaskData> getDailyTaskList(DateComponents date)\r
+        internal List<TaskData> getDailyTaskList(DateComponent date)\r
         {\r
             List<object> arg = new List<object>();\r
             arg.Add(date.getDateString("yyyy-MM-dd"));\r
@@ -68,16 +68,17 @@ namespace com.andoutomo.kybernetes.data.accessor
         {\r
             List<object> args = new List<object>();\r
             args.Add(sortId);\r
-            TaskData data = new TaskData();\r
-            AsuradaDBConnection.getObject.selectData(SqlDictionary.getOneTask, args,\r
+            TaskData data = null;\r
+            TaskDBConnection.Connection.selectData(SqlDictionary.getOneTask, args,\r
                 (SQLiteDataReader reader) =>\r
                 {\r
                     if (reader.HasRows)\r
                     {\r
+                        data = new TaskData();\r
                         reader.Read();\r
                         data.TaskID = Convert.ToInt32(reader["TASKID"].ToString());\r
                         data.SortID = Convert.ToInt32(reader["SORTID"].ToString());\r
-                        data.DoDate = new DateComponents(reader["DODATE"].ToString(), '/');\r
+                        data.DoDate = new DateComponent(reader["DODATE"].ToString(), '/');\r
                         data.TimeArea = reader["TIMEAREA"].ToString();\r
                         data.CategID = Convert.ToInt32(reader["CATEGID"].ToString());\r
                         data.Category = reader["CATEGORY"].ToString();\r
@@ -86,6 +87,7 @@ namespace com.andoutomo.kybernetes.data.accessor
                         data.StartTime = new TimeComponent(reader["STARTTIME"].ToString());\r
                         data.EndTime = new TimeComponent(reader["ENDTIME"].ToString());\r
                         data.IsRepeat = Convert.ToInt32(reader["REPEATFLG"].ToString());\r
+                        \r
                     }\r
                 });\r
             return data;\r
@@ -100,7 +102,7 @@ namespace com.andoutomo.kybernetes.data.accessor
         private List<TaskData> getTaskList(string sql,List<object> args)\r
         {\r
             List<TaskData> resultList = new List<TaskData>();\r
-            AsuradaDBConnection.getObject.selectData(sql, args,\r
+            TaskDBConnection.Connection.selectData(sql, args,\r
             (SQLiteDataReader reader) =>\r
             {\r
                 while (reader.Read())\r
@@ -108,7 +110,7 @@ namespace com.andoutomo.kybernetes.data.accessor
                     TaskData data = new TaskData();\r
                     data.TaskID = Convert.ToInt32(reader["TASKID"].ToString());\r
                     data.SortID = Convert.ToInt32(reader["SORTID"].ToString());\r
-                    data.DoDate = new DateComponents(reader["DODATE"].ToString(),'/');\r
+                    data.DoDate = new DateComponent(reader["DODATE"].ToString(),'/');\r
                     data.TimeArea = reader["TIMEAREA"].ToString();\r
                     data.Category = reader["CATEGORY"].ToString();\r
                     data.Contents = reader["CONTENTS"].ToString();\r
@@ -116,7 +118,7 @@ namespace com.andoutomo.kybernetes.data.accessor
                     data.StartTime = new TimeComponent(reader["STARTTIME"].ToString());\r
                     data.EndTime = new TimeComponent(reader["ENDTIME"].ToString());\r
                     data.IsRepeat = Convert.ToInt32(reader["REPEATFLG"].ToString());\r
-\r
+                    data.HasComment = Convert.ToInt32(reader["HASCOMMENT"].ToString());\r
                     if (data.Category != string.Empty)\r
                     {\r
                         data.BgColor = Convert.ToInt32(reader["BGCOLOR"].ToString());\r
@@ -136,7 +138,7 @@ namespace com.andoutomo.kybernetes.data.accessor
         internal int getMaxTaskID()\r
         {\r
             int maxID =0;\r
-            AsuradaDBConnection.getObject.selectData(SqlDictionary.getMaxIDofTask, \r
+            TaskDBConnection.Connection.selectData(SqlDictionary.getMaxIDofTask, \r
                 (SQLiteDataReader reader) =>\r
                 {\r
 \r
@@ -164,7 +166,7 @@ namespace com.andoutomo.kybernetes.data.accessor
         internal int getMaxSortID()\r
         {\r
             int maxSortID = 0;\r
-            AsuradaDBConnection.getObject.selectData(SqlDictionary.getMaxSortID, \r
+            TaskDBConnection.Connection.selectData(SqlDictionary.getMaxSortID, \r
                 (SQLiteDataReader reader) => \r
                 {\r
                     if (reader.HasRows)\r
@@ -192,7 +194,7 @@ namespace com.andoutomo.kybernetes.data.accessor
         /// </summary>\r
         /// <param name="date"></param>\r
         /// <returns></returns>\r
-        internal TimeComponent getNextStartTime(DateComponents date)\r
+        internal TimeComponent getNextStartTime(DateComponent date)\r
         {\r
             if (date == null)\r
             {\r
@@ -202,7 +204,7 @@ namespace com.andoutomo.kybernetes.data.accessor
             arg.Add(date.getDateString("yyyy-MM-dd"));\r
             TimeComponent endDate = null;\r
 \r
-            AsuradaDBConnection.getObject.selectData(SqlDictionary.getNextStartTime, arg, \r
+            TaskDBConnection.Connection.selectData(SqlDictionary.getNextStartTime, arg, \r
                 (SQLiteDataReader reader) => {\r
                     if (reader.HasRows)\r
                     {\r
@@ -230,7 +232,7 @@ namespace com.andoutomo.kybernetes.data.accessor
             parameters.Add(data.Contents);\r
             parameters.Add(data.ForecastMin);\r
 \r
-            return AsuradaDBConnection.getObject.updateData(SqlDictionary.insertTask, parameters);\r
+            return TaskDBConnection.Connection.updateData(SqlDictionary.insertTask, parameters);\r
 \r
         }\r
         /// <summary>\r
@@ -249,7 +251,7 @@ namespace com.andoutomo.kybernetes.data.accessor
             parameters.Add(data.ForecastMin);\r
             parameters.Add(data.SortID);\r
 \r
-            return AsuradaDBConnection.getObject.updateData(SqlDictionary.updateTask, parameters);\r
+            return TaskDBConnection.Connection.updateData(SqlDictionary.updateTask, parameters);\r
         }\r
 \r
         /// <summary>\r
@@ -264,7 +266,7 @@ namespace com.andoutomo.kybernetes.data.accessor
             parameters.Add(startTime.ToString());\r
             parameters.Add(id);\r
 \r
-            return AsuradaDBConnection.getObject.updateData(SqlDictionary.startTask, parameters);\r
+            return TaskDBConnection.Connection.updateData(SqlDictionary.startTask, parameters);\r
         }\r
 \r
         /// <summary>\r
@@ -279,7 +281,7 @@ namespace com.andoutomo.kybernetes.data.accessor
             parameters.Add(endTime.ToString());\r
             parameters.Add(id);\r
 \r
-            return AsuradaDBConnection.getObject.updateData(SqlDictionary.endTask, parameters);\r
+            return TaskDBConnection.Connection.updateData(SqlDictionary.endTask, parameters);\r
         }\r
 \r
         /// <summary>\r
@@ -292,7 +294,7 @@ namespace com.andoutomo.kybernetes.data.accessor
             bool retval=false;\r
             List<object> parameters = new List<object>();\r
             parameters.Add(id);\r
-            AsuradaDBConnection.getObject.selectData(SqlDictionary.isRepeatTask, parameters,\r
+            TaskDBConnection.Connection.selectData(SqlDictionary.isRepeatTask, parameters,\r
                 (SQLiteDataReader reader) =>\r
                 {\r
                     if (reader.HasRows)\r
@@ -327,7 +329,7 @@ namespace com.andoutomo.kybernetes.data.accessor
             parameters.Add(settingData);\r
             parameters.Add(id);\r
 \r
-            return AsuradaDBConnection.getObject.updateData(SqlDictionary.setRepeatTask, parameters);\r
+            return TaskDBConnection.Connection.updateData(SqlDictionary.setRepeatTask, parameters);\r
 \r
         }\r
 \r
@@ -343,7 +345,7 @@ namespace com.andoutomo.kybernetes.data.accessor
             parameters.Add(from);\r
             parameters.Add(to);\r
 \r
-            return AsuradaDBConnection.getObject.updateData(SqlDictionary.deleteTasks, parameters);\r
+            return TaskDBConnection.Connection.updateData(SqlDictionary.deleteTasks, parameters);\r
         }\r
 \r
         /// <summary>\r
@@ -360,7 +362,7 @@ namespace com.andoutomo.kybernetes.data.accessor
 \r
             int retVal = 0;\r
 \r
-            AsuradaDBConnection.getObject.selectData(SqlDictionary.countBeforeDelete, parameters,\r
+            TaskDBConnection.Connection.selectData(SqlDictionary.countBeforeDelete, parameters,\r
                 (SQLiteDataReader reader) =>\r
                 {\r
                     if (reader.HasRows)\r
@@ -428,7 +430,7 @@ namespace com.andoutomo.kybernetes.data.accessor
             //最後に、過去分タスクをマイナスに変換する(これをやらないと次に振り出されるIDがどんどん増えていく)\r
             MultiSQLRunnningBean lastBean = new MultiSQLRunnningBean(SqlDictionary.suppressCompleteTask,new List<object>());\r
             sqlList.Add(lastBean);\r
-            return AsuradaDBConnection.getObject.updateData(sqlList);\r
+            return TaskDBConnection.Connection.updateData(sqlList);\r
         }\r
 \r
         /// <summary>\r
@@ -437,13 +439,13 @@ namespace com.andoutomo.kybernetes.data.accessor
         /// <param name="id"></param>\r
         /// <param name="nextDay"></param>\r
         /// <returns></returns>\r
-        internal bool delayTask(int id, DateComponents nextDay)\r
+        internal bool delayTask(int id, DateComponent nextDay)\r
         {\r
             List<object> paramList = new List<object>();\r
             paramList.Add(nextDay.getDateString("yyyy-MM-dd"));\r
             paramList.Add(id);\r
 \r
-            return AsuradaDBConnection.getObject.updateData(SqlDictionary.delayTask, paramList);\r
+            return TaskDBConnection.Connection.updateData(SqlDictionary.delayTask, paramList);\r
         }\r
 \r
         /// <summary>\r
@@ -458,7 +460,7 @@ namespace com.andoutomo.kybernetes.data.accessor
             paramList.Add(after);\r
             paramList.Add(targetTaskID);\r
 \r
-            return AsuradaDBConnection.getObject.updateData(SqlDictionary.changeTaskNo, paramList);\r
+            return TaskDBConnection.Connection.updateData(SqlDictionary.changeTaskNo, paramList);\r
         }\r
         /// <summary>\r
         /// タイムエリアを変更します。\r
@@ -472,7 +474,7 @@ namespace com.andoutomo.kybernetes.data.accessor
             paramList.Add(nextArea);\r
             paramList.Add(targetSortID);\r
 \r
-            return AsuradaDBConnection.getObject.updateData(SqlDictionary.changeAreaOfTask, paramList);\r
+            return TaskDBConnection.Connection.updateData(SqlDictionary.changeAreaOfTask, paramList);\r
         }\r
         /// <summary>\r
         /// 時間をクリアし、タスクを初期状態に戻します。\r
@@ -484,7 +486,7 @@ namespace com.andoutomo.kybernetes.data.accessor
             List<object> paramList = new List<object>();\r
             paramList.Add(targetSortID);\r
 \r
-            return AsuradaDBConnection.getObject.updateData(SqlDictionary.clearTime, paramList);\r
+            return TaskDBConnection.Connection.updateData(SqlDictionary.clearTime, paramList);\r
         }\r
     }\r
 }\r
index 2072dd0..ff875a3 100644 (file)
@@ -64,7 +64,7 @@ namespace com.andoutomo.kybernetes.data.accessor
         {\r
             List<TimeAreaCalcData> retList = new List<TimeAreaCalcData>();\r
 \r
-            AsuradaDBConnection.getObject.selectData(SqlDictionary.getAllTimeArea, (SQLiteDataReader reader) =>\r
+            TaskDBConnection.Connection.selectData(SqlDictionary.getAllTimeArea, (SQLiteDataReader reader) =>\r
             {\r
                 while (reader.Read())\r
                 {\r
diff --git a/KyberNetes/data/connection/CommandSqlDictionary.Designer.cs b/KyberNetes/data/connection/CommandSqlDictionary.Designer.cs
new file mode 100644 (file)
index 0000000..7dedd37
--- /dev/null
@@ -0,0 +1,142 @@
+//------------------------------------------------------------------------------\r
+// <auto-generated>\r
+//     このコードはツールによって生成されました。\r
+//     ランタイム バージョン:4.0.30319.18444\r
+//\r
+//     このファイルへの変更は、以下の状況下で不正な動作の原因になったり、\r
+//     コードが再生成されるときに損失したりします。\r
+// </auto-generated>\r
+//------------------------------------------------------------------------------\r
+\r
+namespace com.andoutomo.kybernetes.data.connection {\r
+    using System;\r
+    \r
+    \r
+    /// <summary>\r
+    ///   ローカライズされた文字列などを検索するための、厳密に型指定されたリソース クラスです。\r
+    /// </summary>\r
+    // このクラスは StronglyTypedResourceBuilder クラスが ResGen\r
+    // または Visual Studio のようなツールを使用して自動生成されました。\r
+    // メンバーを追加または削除するには、.ResX ファイルを編集して、/str オプションと共に\r
+    // ResGen を実行し直すか、または VS プロジェクトをビルドし直します。\r
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]\r
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\r
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\r
+    internal class CommandSqlDictionary {\r
+        \r
+        private static global::System.Resources.ResourceManager resourceMan;\r
+        \r
+        private static global::System.Globalization.CultureInfo resourceCulture;\r
+        \r
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]\r
+        internal CommandSqlDictionary() {\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   このクラスで使用されているキャッシュされた ResourceManager インスタンスを返します。\r
+        /// </summary>\r
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r
+        internal static global::System.Resources.ResourceManager ResourceManager {\r
+            get {\r
+                if (object.ReferenceEquals(resourceMan, null)) {\r
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("com.andoutomo.kybernetes.data.connection.CommandSqlDictionary", typeof(CommandSqlDictionary).Assembly);\r
+                    resourceMan = temp;\r
+                }\r
+                return resourceMan;\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   厳密に型指定されたこのリソース クラスを使用して、すべての検索リソースに対し、\r
+        ///   現在のスレッドの CurrentUICulture プロパティをオーバーライドします。\r
+        /// </summary>\r
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\r
+        internal static global::System.Globalization.CultureInfo Culture {\r
+            get {\r
+                return resourceCulture;\r
+            }\r
+            set {\r
+                resourceCulture = value;\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   SELECT LINK_COMMAND,BASE_COMMAND FROM TBL_LINK ORDER BY BASE_COMMAND に類似しているローカライズされた文字列を検索します。\r
+        /// </summary>\r
+        internal static string getAllLink {\r
+            get {\r
+                return ResourceManager.GetString("getAllLink", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   SELECT CMDSTR,TARGETCLASS,ARGCLASS FROM \r
+        ///(\r
+        ///SELECT CMDSTR,TARGETCLASS,ARGCLASS FROM TBL_COMMAND\r
+        ///UNION\r
+        ///SELECT L.LINK_COMMAND AS CMDSTR,M.TARGETCLASS as TARGETCLASS,M.ARGCLASS as ARGCLASS\r
+        ///FROM tbl_link L,tbl_command M\r
+        ///WHERE L.BASE_COMMAND = M.CMDSTR\r
+        ///)where CMDSTR=? に類似しているローカライズされた文字列を検索します。\r
+        /// </summary>\r
+        internal static string getCommand {\r
+            get {\r
+                return ResourceManager.GetString("getCommand", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   select c.CMDSTR,h.SUMMARY,h.DETAIL from TBL_command c,tbl_help h where c.helpid = h.helpid AND cmdSTR=? に類似しているローカライズされた文字列を検索します。\r
+        /// </summary>\r
+        internal static string getHelp {\r
+            get {\r
+                return ResourceManager.GetString("getHelp", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   select l.link_command as link_command from tbl_command c,tbl_link l where c.cmdstr=l.base_command and c.cmdstr = ? に類似しているローカライズされた文字列を検索します。\r
+        /// </summary>\r
+        internal static string getLink {\r
+            get {\r
+                return ResourceManager.GetString("getLink", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   SELECT LINK_COMMAND,BASE_COMMAND FROM TBL_LINK WHERE LINK_COMMAND=? に類似しているローカライズされた文字列を検索します。\r
+        /// </summary>\r
+        internal static string hasLink {\r
+            get {\r
+                return ResourceManager.GetString("hasLink", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   SELECT C.CMDSTR,H.SUMMARY FROM TBL_COMMAND C,TBL_HELP H WHERE C.HELPID=H.HELPID ORDER BY C.HelpID; に類似しているローカライズされた文字列を検索します。\r
+        /// </summary>\r
+        internal static string HELPALL {\r
+            get {\r
+                return ResourceManager.GetString("HELPALL", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   INSERT INTO TBL_LINK (LINK_COMMAND,BASE_COMMAND) VALUES (?,?) に類似しているローカライズされた文字列を検索します。\r
+        /// </summary>\r
+        internal static string insertLink {\r
+            get {\r
+                return ResourceManager.GetString("insertLink", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   DELETE FROM TBL_LINK WHERE LINK_COMMAND=? に類似しているローカライズされた文字列を検索します。\r
+        /// </summary>\r
+        internal static string removeLink {\r
+            get {\r
+                return ResourceManager.GetString("removeLink", resourceCulture);\r
+            }\r
+        }\r
+    }\r
+}\r
diff --git a/KyberNetes/data/connection/CommandSqlDictionary.resx b/KyberNetes/data/connection/CommandSqlDictionary.resx
new file mode 100644 (file)
index 0000000..a213b3e
--- /dev/null
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<root>\r
+  <!-- \r
+    Microsoft ResX Schema \r
+    \r
+    Version 2.0\r
+    \r
+    The primary goals of this format is to allow a simple XML format \r
+    that is mostly human readable. The generation and parsing of the \r
+    various data types are done through the TypeConverter classes \r
+    associated with the data types.\r
+    \r
+    Example:\r
+    \r
+    ... ado.net/XML headers & schema ...\r
+    <resheader name="resmimetype">text/microsoft-resx</resheader>\r
+    <resheader name="version">2.0</resheader>\r
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\r
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\r
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>\r
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>\r
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">\r
+        <value>[base64 mime encoded serialized .NET Framework object]</value>\r
+    </data>\r
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">\r
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\r
+        <comment>This is a comment</comment>\r
+    </data>\r
+                \r
+    There are any number of "resheader" rows that contain simple \r
+    name/value pairs.\r
+    \r
+    Each data row contains a name, and value. The row also contains a \r
+    type or mimetype. Type corresponds to a .NET class that support \r
+    text/value conversion through the TypeConverter architecture. \r
+    Classes that don't support this are serialized and stored with the \r
+    mimetype set.\r
+    \r
+    The mimetype is used for serialized objects, and tells the \r
+    ResXResourceReader how to depersist the object. This is currently not \r
+    extensible. For a given mimetype the value must be set accordingly:\r
+    \r
+    Note - application/x-microsoft.net.object.binary.base64 is the format \r
+    that the ResXResourceWriter will generate, however the reader can \r
+    read any of the formats listed below.\r
+    \r
+    mimetype: application/x-microsoft.net.object.binary.base64\r
+    value   : The object must be serialized with \r
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\r
+            : and then encoded with base64 encoding.\r
+    \r
+    mimetype: application/x-microsoft.net.object.soap.base64\r
+    value   : The object must be serialized with \r
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\r
+            : and then encoded with base64 encoding.\r
+\r
+    mimetype: application/x-microsoft.net.object.bytearray.base64\r
+    value   : The object must be serialized into a byte array \r
+            : using a System.ComponentModel.TypeConverter\r
+            : and then encoded with base64 encoding.\r
+    -->\r
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">\r
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />\r
+    <xsd:element name="root" msdata:IsDataSet="true">\r
+      <xsd:complexType>\r
+        <xsd:choice maxOccurs="unbounded">\r
+          <xsd:element name="metadata">\r
+            <xsd:complexType>\r
+              <xsd:sequence>\r
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />\r
+              </xsd:sequence>\r
+              <xsd:attribute name="name" use="required" type="xsd:string" />\r
+              <xsd:attribute name="type" type="xsd:string" />\r
+              <xsd:attribute name="mimetype" type="xsd:string" />\r
+              <xsd:attribute ref="xml:space" />\r
+            </xsd:complexType>\r
+          </xsd:element>\r
+          <xsd:element name="assembly">\r
+            <xsd:complexType>\r
+              <xsd:attribute name="alias" type="xsd:string" />\r
+              <xsd:attribute name="name" type="xsd:string" />\r
+            </xsd:complexType>\r
+          </xsd:element>\r
+          <xsd:element name="data">\r
+            <xsd:complexType>\r
+              <xsd:sequence>\r
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />\r
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />\r
+              </xsd:sequence>\r
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />\r
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />\r
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />\r
+              <xsd:attribute ref="xml:space" />\r
+            </xsd:complexType>\r
+          </xsd:element>\r
+          <xsd:element name="resheader">\r
+            <xsd:complexType>\r
+              <xsd:sequence>\r
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />\r
+              </xsd:sequence>\r
+              <xsd:attribute name="name" type="xsd:string" use="required" />\r
+            </xsd:complexType>\r
+          </xsd:element>\r
+        </xsd:choice>\r
+      </xsd:complexType>\r
+    </xsd:element>\r
+  </xsd:schema>\r
+  <resheader name="resmimetype">\r
+    <value>text/microsoft-resx</value>\r
+  </resheader>\r
+  <resheader name="version">\r
+    <value>2.0</value>\r
+  </resheader>\r
+  <resheader name="reader">\r
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+  </resheader>\r
+  <resheader name="writer">\r
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+  </resheader>\r
+  <data name="getCommand" xml:space="preserve">\r
+    <value>SELECT CMDSTR,TARGETCLASS,ARGCLASS FROM \r
+(\r
+SELECT CMDSTR,TARGETCLASS,ARGCLASS FROM TBL_COMMAND\r
+UNION\r
+SELECT L.LINK_COMMAND AS CMDSTR,M.TARGETCLASS as TARGETCLASS,M.ARGCLASS as ARGCLASS\r
+FROM tbl_link L,tbl_command M\r
+WHERE L.BASE_COMMAND = M.CMDSTR\r
+)where CMDSTR=?</value>\r
+    <comment>コマンドディスパッチャに送るクラス名と引数クラスを取得します。</comment>\r
+  </data>\r
+  <data name="HELPALL" xml:space="preserve">\r
+    <value>SELECT C.CMDSTR,H.SUMMARY FROM TBL_COMMAND C,TBL_HELP H WHERE C.HELPID=H.HELPID ORDER BY C.HelpID;</value>\r
+    <comment>HELP全リストを表示します。</comment>\r
+  </data>\r
+  <data name="hasLink" xml:space="preserve">\r
+    <value>SELECT LINK_COMMAND,BASE_COMMAND FROM TBL_LINK WHERE LINK_COMMAND=?</value>\r
+    <comment>リンクが有るかどうかを確認します。</comment>\r
+  </data>\r
+  <data name="insertLink" xml:space="preserve">\r
+    <value>INSERT INTO TBL_LINK (LINK_COMMAND,BASE_COMMAND) VALUES (?,?)</value>\r
+    <comment>リンクを作成します。</comment>\r
+  </data>\r
+  <data name="removeLink" xml:space="preserve">\r
+    <value>DELETE FROM TBL_LINK WHERE LINK_COMMAND=?</value>\r
+    <comment>リンクを削除します。</comment>\r
+  </data>\r
+  <data name="getHelp" xml:space="preserve">\r
+    <value>select c.CMDSTR,h.SUMMARY,h.DETAIL from TBL_command c,tbl_help h where c.helpid = h.helpid AND cmdSTR=?</value>\r
+    <comment>個別ヘルプの内容を取得します。</comment>\r
+  </data>\r
+  <data name="getLink" xml:space="preserve">\r
+    <value>select l.link_command as link_command from tbl_command c,tbl_link l where c.cmdstr=l.base_command and c.cmdstr = ?</value>\r
+    <comment>個別ヘルプ用に、アライアスを取得します。</comment>\r
+  </data>\r
+  <data name="getAllLink" xml:space="preserve">\r
+    <value>SELECT LINK_COMMAND,BASE_COMMAND FROM TBL_LINK ORDER BY BASE_COMMAND</value>\r
+    <comment>リンク一覧を出力します。</comment>\r
+  </data>\r
+</root>
\ No newline at end of file
index 72ba0c4..1b7dba4 100644 (file)
@@ -6,29 +6,9 @@ namespace com.andoutomo.kybernetes.data.connection
 {\r
     delegate void TransitData(SQLiteDataReader reader);\r
 \r
-    class AsuradaDBConnection\r
+    abstract class DBConnection\r
     {\r
-        #region Singleton\r
-        private static AsuradaDBConnection singleton;\r
-\r
-        internal static AsuradaDBConnection getObject\r
-        {\r
-            get\r
-            {\r
-                if (singleton == null)\r
-                {\r
-                    singleton = new AsuradaDBConnection();\r
-                }\r
-                return singleton;\r
-            }\r
-        }\r
-        private AsuradaDBConnection()\r
-        {\r
-        }\r
-        #endregion\r
-\r
-        private string dbfile = "asurada.db";\r
-\r
+        internal abstract string targetDbFile();\r
 \r
         /// <summary>\r
         /// データの参照を行う。\r
@@ -41,7 +21,7 @@ namespace com.andoutomo.kybernetes.data.connection
             KybernetesLogger.Log.debug("SQL:" + sql);\r
             try\r
             {\r
-                using (var conn = new SQLiteConnection("Data Source=" + dbfile))\r
+                using (var conn = new SQLiteConnection("Data Source=" + targetDbFile()))\r
                 {\r
                     conn.Open();\r
                     using (SQLiteCommand command = conn.CreateCommand())\r
@@ -83,7 +63,7 @@ namespace com.andoutomo.kybernetes.data.connection
             KybernetesLogger.Log.debug("SQL:" + sql);\r
             try\r
             {\r
-                using (var conn = new SQLiteConnection("Data Source=" + dbfile))\r
+                using (var conn = new SQLiteConnection("Data Source=" + targetDbFile()))\r
                 {\r
                     conn.Open();\r
                     using (SQLiteTransaction sqlt = conn.BeginTransaction())\r
@@ -124,7 +104,7 @@ namespace com.andoutomo.kybernetes.data.connection
         {\r
             try\r
             {\r
-                using (var conn = new SQLiteConnection("Data Source=" + dbfile))\r
+                using (var conn = new SQLiteConnection("Data Source=" + targetDbFile()))\r
                 {\r
                     conn.Open();\r
                     using (SQLiteTransaction sqlt = conn.BeginTransaction())\r
diff --git a/KyberNetes/data/connection/SettingDBConnection.cs b/KyberNetes/data/connection/SettingDBConnection.cs
new file mode 100644 (file)
index 0000000..a034c8b
--- /dev/null
@@ -0,0 +1,37 @@
+using System;\r
+using System.Collections.Generic;\r
+using System.Linq;\r
+using System.Text;\r
+\r
+namespace com.andoutomo.kybernetes.data.connection\r
+{\r
+    class SettingDBConnection : DBConnection\r
+    {\r
+        #region singleton\r
+        private static SettingDBConnection connection;\r
+        private SettingDBConnection()\r
+        {\r
+\r
+        }\r
+        internal static SettingDBConnection Connection\r
+        {\r
+            get\r
+            {\r
+                if (connection == null)\r
+                {\r
+                    connection = new SettingDBConnection();\r
+                }\r
+                return connection;\r
+            }\r
+            private set { }\r
+        }\r
+        #endregion\r
+\r
+\r
+\r
+        internal override string targetDbFile()\r
+        {\r
+            return "setting.db";\r
+        }\r
+    }\r
+}\r
index 5b75b92..f86aac5 100644 (file)
@@ -115,6 +115,24 @@ namespace com.andoutomo.kybernetes.data.connection {
         }\r
         \r
         /// <summary>\r
+        ///   DELETE FROM TBL_COMMENT WHERE TASKID IS NULL AND DATE(CREATETIME) = DATE(?) に類似しているローカライズされた文字列を検索します。\r
+        /// </summary>\r
+        internal static string clearMetaComment {\r
+            get {\r
+                return ResourceManager.GetString("clearMetaComment", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
+        ///   DELETE FROM TBL_COMMENT WHERE TASKID=? に類似しているローカライズされた文字列を検索します。\r
+        /// </summary>\r
+        internal static string clearTaskComment {\r
+            get {\r
+                return ResourceManager.GetString("clearTaskComment", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
         ///   update tbl_tasks set starttime=null,endtime=null where sortid=? に類似しているローカライズされた文字列を検索します。\r
         /// </summary>\r
         internal static string clearTime {\r
@@ -133,6 +151,15 @@ namespace com.andoutomo.kybernetes.data.connection {
         }\r
         \r
         /// <summary>\r
+        ///   DELETE FROM TBL_COMMENT WHERE TASKID IS NOT NULL AND TASKID NOT IN(SELECT TASKID FROM TBL_TASKS) に類似しているローカライズされた文字列を検索します。\r
+        /// </summary>\r
+        internal static string clearZombieComment {\r
+            get {\r
+                return ResourceManager.GetString("clearZombieComment", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
         ///   SELECT COUNT(taskID) as COUNT FROM tbl_tasks where sortid between ? and ? に類似しているローカライズされた文字列を検索します。\r
         /// </summary>\r
         internal static string countBeforeDelete {\r
@@ -178,21 +205,13 @@ namespace com.andoutomo.kybernetes.data.connection {
         }\r
         \r
         /// <summary>\r
-        ///   SELECT LINK_COMMAND,BASE_COMMAND FROM TBL_LINK ORDER BY BASE_COMMAND に類似しているローカライズされた文字列を検索します。\r
-        /// </summary>\r
-        internal static string getAllLink {\r
-            get {\r
-                return ResourceManager.GetString("getAllLink", resourceCulture);\r
-            }\r
-        }\r
-        \r
-        /// <summary>\r
         ///   SELECT  T.TASKID,T.SORTID,T.DODATE,T.TIMEAREA,C.CATEGORY,T.CONTENTS,\r
         ///T.FORCASTMIN,T.STARTTIME,T.ENDTIME,C.BGCOLOR,C.FRCOLOR,T.REPEATFLG, \r
         ///(CASE WHEN T.ENDTIME IS NULL THEN 1 ELSE 0 END) AS ENDTIMESORT,\r
-        ///(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort\r
-        ///FROM TBL_TASKS T,TBL_SETTING S LEFT outer join tbl_category C on C.CATEGID=T.CATEGID\r
-        ///ORDER BY DATESORT,E [残りの文字列は切り詰められました]&quot;; に類似しているローカライズされた文字列を検索します。\r
+        ///(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,\r
+        ///time(startTime) as STARTTIMESORT,\r
+        ///(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort,\r
+        ///(Case when exists (SELECT TASKID FROM TBL_COMMENT cm where cm.taskid = T.TASKID) THEN 1 ELSE 0 END)  [残りの文字列は切り詰められました]&quot;; に類似しているローカライズされた文字列を検索します。\r
         /// </summary>\r
         internal static string getAllList {\r
             get {\r
@@ -228,18 +247,11 @@ namespace com.andoutomo.kybernetes.data.connection {
         }\r
         \r
         /// <summary>\r
-        ///   SELECT CMDSTR,TARGETCLASS,ARGCLASS FROM \r
-        ///(\r
-        ///SELECT CMDSTR,TARGETCLASS,ARGCLASS FROM TBL_COMMAND\r
-        ///UNION\r
-        ///SELECT L.LINK_COMMAND AS CMDSTR,M.TARGETCLASS as TARGETCLASS,M.ARGCLASS as ARGCLASS\r
-        ///FROM tbl_link L,tbl_command M\r
-        ///WHERE L.BASE_COMMAND = M.CMDSTR\r
-        ///)where CMDSTR=? に類似しているローカライズされた文字列を検索します。\r
+        ///   SELECT ID,TASKID,CREATETIME,COMMENT FROM TBL_COMMENT WHERE TASKID=? ORDER BY ID に類似しているローカライズされた文字列を検索します。\r
         /// </summary>\r
-        internal static string getCommand {\r
+        internal static string getComments {\r
             get {\r
-                return ResourceManager.GetString("getCommand", resourceCulture);\r
+                return ResourceManager.GetString("getComments", resourceCulture);\r
             }\r
         }\r
         \r
@@ -247,8 +259,8 @@ namespace com.andoutomo.kybernetes.data.connection {
         ///   SELECT  T.TASKID,T.SORTID,T.DODATE,T.TIMEAREA,C.CATEGORY,T.CONTENTS,\r
         ///T.FORCASTMIN,T.STARTTIME,T.ENDTIME,C.BGCOLOR,C.FRCOLOR,T.REPEATFLG, \r
         ///(CASE WHEN T.ENDTIME IS NULL THEN 1 ELSE 0 END) AS ENDTIMESORT,\r
-        ///(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort\r
-        ///FROM TBL_TASKS T,TBL_SETTING S LEFT OUTER JOIN tbl_category C ON C.CATEGID=T.CATEGID WHERE DATE(T.DODATE) [残りの文字列は切り詰められました]&quot;; に類似しているローカライズされた文字列を検索します。\r
+        ///(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort,\r
+        ///(Case when exists (SELECT TASKID FROM TBL_COMMENT cm where cm.taskid = T.TASKID) THEN 1 ELSE 0 END) AS H [残りの文字列は切り詰められました]&quot;; に類似しているローカライズされた文字列を検索します。\r
         /// </summary>\r
         internal static string getDailyList {\r
             get {\r
@@ -257,24 +269,6 @@ namespace com.andoutomo.kybernetes.data.connection {
         }\r
         \r
         /// <summary>\r
-        ///   select c.CMDSTR,h.SUMMARY,h.DETAIL from TBL_command c,tbl_help h where c.helpid = h.helpid AND cmdSTR=? に類似しているローカライズされた文字列を検索します。\r
-        /// </summary>\r
-        internal static string getHelp {\r
-            get {\r
-                return ResourceManager.GetString("getHelp", resourceCulture);\r
-            }\r
-        }\r
-        \r
-        /// <summary>\r
-        ///   select l.link_command as link_command from tbl_command c,tbl_link l where c.cmdstr=l.base_command and c.cmdstr = ? に類似しているローカライズされた文字列を検索します。\r
-        /// </summary>\r
-        internal static string getLink {\r
-            get {\r
-                return ResourceManager.GetString("getLink", resourceCulture);\r
-            }\r
-        }\r
-        \r
-        /// <summary>\r
         ///   SELECT LOGMODE FROM TBL_SETTING に類似しているローカライズされた文字列を検索します。\r
         /// </summary>\r
         internal static string getLogMode {\r
@@ -302,6 +296,15 @@ namespace com.andoutomo.kybernetes.data.connection {
         }\r
         \r
         /// <summary>\r
+        ///   SELECT ID,TASKID,CREATETIME,COMMENT FROM TBL_COMMENT WHERE TASKID is null AND date(CREATETIME) = (SELECT TODAY FROM TBL_SETTING) ORDER BY ID に類似しているローカライズされた文字列を検索します。\r
+        /// </summary>\r
+        internal static string getMetaComment {\r
+            get {\r
+                return ResourceManager.GetString("getMetaComment", resourceCulture);\r
+            }\r
+        }\r
+        \r
+        /// <summary>\r
         ///   SELECT MAX(TIME(ENDTIME)) AS MAXENDTIME FROM TBL_TASKS WHERE DODATE=date(?); に類似しているローカライズされた文字列を検索します。\r
         /// </summary>\r
         internal static string getNextStartTime {\r
@@ -323,9 +326,7 @@ namespace com.andoutomo.kybernetes.data.connection {
         ///   SELECT  T.TASKID,T.SORTID,T.DODATE,T.TIMEAREA,C.CATEGORY,T.CONTENTS,\r
         ///T.FORCASTMIN,T.STARTTIME,T.ENDTIME,C.BGCOLOR,C.FRCOLOR,T.REPEATFLG,\r
         ///(CASE WHEN T.ENDTIME IS NULL THEN 1 ELSE 0 END) AS ENDTIMESORT,\r
-        ///(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort\r
-        ///FROM TBL_TASKS T,TBL_SETTING S LEFT OUTER JOIN tbl_category C ON C.CATEGID=T.CATEGID \r
-        ///WHERE DATE(T.DODATE [残りの文字列は切り詰められました]&quot;; に類似しているローカライズされた文字列を検索します。\r
+        ///(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort,(Case when exists (SELECT TASKID FROM TBL_COMMENT cm where cm.taskid = T.TASKID) THEN 1 ELSE 0 END) AS HASC [残りの文字列は切り詰められました]&quot;; に類似しているローカライズされた文字列を検索します。\r
         /// </summary>\r
         internal static string getPwdList {\r
             get {\r
@@ -337,8 +338,7 @@ namespace com.andoutomo.kybernetes.data.connection {
         ///   SELECT  T.TASKID,T.SORTID,T.DODATE,T.TIMEAREA,C.CATEGORY,T.CONTENTS,\r
         ///T.FORCASTMIN,T.STARTTIME,T.ENDTIME,C.BGCOLOR,C.FRCOLOR,T.REPEATFLG, \r
         ///(CASE WHEN T.ENDTIME IS NULL THEN 1 ELSE 0 END) AS ENDTIMESORT,\r
-        ///(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort\r
-        ///FROM TBL_TASKS T,TBL_SETTING S LEFT OUTER JOIN tbl_category C ON C.CATEGID=T.CATEGID WHERE T.ENDTIME IS N [残りの文字列は切り詰められました]&quot;; に類似しているローカライズされた文字列を検索します。\r
+        ///(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort,(Case when exists (SELECT TASKID FROM TBL_COMMENT cm where cm.taskid = T.TASKID) THEN 1 ELSE 0 END) AS HAS [残りの文字列は切り詰められました]&quot;; に類似しているローカライズされた文字列を検索します。\r
         /// </summary>\r
         internal static string getRemainList {\r
             get {\r
@@ -359,8 +359,7 @@ namespace com.andoutomo.kybernetes.data.connection {
         ///   SELECT  T.TASKID,T.SORTID,T.DODATE,T.TIMEAREA,C.CATEGORY,T.CONTENTS,\r
         ///T.FORCASTMIN,T.STARTTIME,T.ENDTIME,C.BGCOLOR,C.FRCOLOR,T.REPEATFLG,\r
         ///(CASE WHEN T.ENDTIME IS NULL THEN 1 ELSE 0 END) AS ENDTIMESORT,\r
-        ///(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort\r
-        ///FROM TBL_TASKS T,TBL_SETTING S LEFT OUTER JOIN tbl_category C ON C.CATEGID=T.CATEGID WHERE DATE(T.DODATE)  [残りの文字列は切り詰められました]&quot;; に類似しているローカライズされた文字列を検索します。\r
+        ///(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort,(Case when exists (SELECT TASKID FROM TBL_COMMENT cm where cm.taskid = T.TASKID) THEN 1 ELSE 0 END) AS HASC [残りの文字列は切り詰められました]&quot;; に類似しているローカライズされた文字列を検索します。\r
         /// </summary>\r
         internal static string getTodayList {\r
             get {\r
@@ -369,38 +368,29 @@ namespace com.andoutomo.kybernetes.data.connection {
         }\r
         \r
         /// <summary>\r
-        ///   SELECT LINK_COMMAND,BASE_COMMAND FROM TBL_LINK WHERE LINK_COMMAND=? に類似しているローカライズされた文字列を検索します。\r
-        /// </summary>\r
-        internal static string hasLink {\r
-            get {\r
-                return ResourceManager.GetString("hasLink", resourceCulture);\r
-            }\r
-        }\r
-        \r
-        /// <summary>\r
-        ///   SELECT C.CMDSTR,H.SUMMARY FROM TBL_COMMAND C,TBL_HELP H WHERE C.HELPID=H.HELPID ORDER BY C.HelpID; に類似しているローカライズされた文字列を検索します。\r
+        ///   INSERT into tbl_category (CATEGID,CATEGORY,FRCOLOR,BGCOLOR) values(?,?,?,?) に類似しているローカライズされた文字列を検索します。\r
         /// </summary>\r
-        internal static string HELPALL {\r
+        internal static string insertCategory {\r
             get {\r
-                return ResourceManager.GetString("HELPALL", resourceCulture);\r
+                return ResourceManager.GetString("insertCategory", resourceCulture);\r
             }\r
         }\r
         \r
         /// <summary>\r
-        ///   INSERT into tbl_category (CATEGID,CATEGORY,FRCOLOR,BGCOLOR) values(?,?,?,?) に類似しているローカライズされた文字列を検索します。\r
+        ///   INSERT INTO TBL_COMMENT (TASKID,CREATETIME,COMMENT) VALUES(?,datetime(&apos;now&apos;,&apos;localtime&apos;),?) に類似しているローカライズされた文字列を検索します。\r
         /// </summary>\r
-        internal static string insertCategory {\r
+        internal static string insertComment {\r
             get {\r
-                return ResourceManager.GetString("insertCategory", resourceCulture);\r
+                return ResourceManager.GetString("insertComment", resourceCulture);\r
             }\r
         }\r
         \r
         /// <summary>\r
-        ///   INSERT INTO TBL_LINK (LINK_COMMAND,BASE_COMMAND) VALUES (?,?) に類似しているローカライズされた文字列を検索します。\r
+        ///   INSERT INTO TBL_COMMENT (TASKID,CREATETIME,COMMENT) VALUES(null,datetime(&apos;now&apos;,&apos;localtime&apos;),?) に類似しているローカライズされた文字列を検索します。\r
         /// </summary>\r
-        internal static string insertLink {\r
+        internal static string insertMetaComment {\r
             get {\r
-                return ResourceManager.GetString("insertLink", resourceCulture);\r
+                return ResourceManager.GetString("insertMetaComment", resourceCulture);\r
             }\r
         }\r
         \r
@@ -432,20 +422,10 @@ namespace com.andoutomo.kybernetes.data.connection {
         }\r
         \r
         /// <summary>\r
-        ///   DELETE FROM TBL_LINK WHERE LINK_COMMAND=? に類似しているローカライズされた文字列を検索します。\r
-        /// </summary>\r
-        internal static string removeLink {\r
-            get {\r
-                return ResourceManager.GetString("removeLink", resourceCulture);\r
-            }\r
-        }\r
-        \r
-        /// <summary>\r
         ///   SELECT  T.TASKID,T.SORTID,T.DODATE,T.TIMEAREA,C.CATEGORY,T.CONTENTS,\r
         ///T.FORCASTMIN,T.STARTTIME,T.ENDTIME,C.BGCOLOR,C.FRCOLOR,T.REPEATFLG, \r
         ///(CASE WHEN T.ENDTIME IS NULL THEN 1 ELSE 0 END) AS ENDTIMESORT,\r
-        ///(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort\r
-        ///FROM TBL_TASKS T,TBL_SETTING S LEFT OUTER JOIN tbl_category C ON C.CATEGID=T.CATEGID WHERE T.CONTENTS LIK [残りの文字列は切り詰められました]&quot;; に類似しているローカライズされた文字列を検索します。\r
+        ///(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort,(Case when exists (SELECT TASKID FROM TBL_COMMENT cm where cm.taskid = T.TASKID) THEN 1 ELSE 0 END) AS HAS [残りの文字列は切り詰められました]&quot;; に類似しているローカライズされた文字列を検索します。\r
         /// </summary>\r
         internal static string searchTasks {\r
             get {\r
index 4b3f96d..7730c85 100644 (file)
     <value>SELECT  T.TASKID,T.SORTID,T.DODATE,T.TIMEAREA,C.CATEGORY,T.CONTENTS,\r
 T.FORCASTMIN,T.STARTTIME,T.ENDTIME,C.BGCOLOR,C.FRCOLOR,T.REPEATFLG, \r
 (CASE WHEN T.ENDTIME IS NULL THEN 1 ELSE 0 END) AS ENDTIMESORT,\r
-(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort\r
+(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,\r
+time(startTime) as STARTTIMESORT,\r
+(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort,\r
+(Case when exists (SELECT TASKID FROM TBL_COMMENT cm where cm.taskid = T.TASKID) THEN 1 ELSE 0 END) AS HASCOMMENT\r
 FROM TBL_TASKS T,TBL_SETTING S LEFT outer join tbl_category C on C.CATEGID=T.CATEGID\r
-ORDER BY DATESORT,ENDTIMESORT,T.DODATE,T.TIMEAREA,STARTNULLSORT,STARTTIMESORT,T.SORTID</value>\r
+ORDER BY DATESORT,ENDTIMESORT,T.DODATE,T.TIMEAREA,STARTNULLSORT,STARTTIMESORT,T.SORTID;</value>\r
     <comment>全タスクを表示します。</comment>\r
   </data>\r
   <data name="getCategoryFromCategName" xml:space="preserve">\r
     <value>SELECT CategID,BGColor,FRColor FROM tbl_category WHERE Category = ?</value>\r
     <comment>カテゴリ名からIDを逆引きします。</comment>\r
   </data>\r
-  <data name="getCommand" xml:space="preserve">\r
-    <value>SELECT CMDSTR,TARGETCLASS,ARGCLASS FROM \r
-(\r
-SELECT CMDSTR,TARGETCLASS,ARGCLASS FROM TBL_COMMAND\r
-UNION\r
-SELECT L.LINK_COMMAND AS CMDSTR,M.TARGETCLASS as TARGETCLASS,M.ARGCLASS as ARGCLASS\r
-FROM tbl_link L,tbl_command M\r
-WHERE L.BASE_COMMAND = M.CMDSTR\r
-)where CMDSTR=?</value>\r
-    <comment>コマンドディスパッチャに送るクラス名と引数クラスを取得します。</comment>\r
-  </data>\r
   <data name="getDailyList" xml:space="preserve">\r
     <value>SELECT  T.TASKID,T.SORTID,T.DODATE,T.TIMEAREA,C.CATEGORY,T.CONTENTS,\r
 T.FORCASTMIN,T.STARTTIME,T.ENDTIME,C.BGCOLOR,C.FRCOLOR,T.REPEATFLG, \r
 (CASE WHEN T.ENDTIME IS NULL THEN 1 ELSE 0 END) AS ENDTIMESORT,\r
-(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort\r
+(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort,\r
+(Case when exists (SELECT TASKID FROM TBL_COMMENT cm where cm.taskid = T.TASKID) THEN 1 ELSE 0 END) AS HASCOMMENT \r
 FROM TBL_TASKS T,TBL_SETTING S LEFT OUTER JOIN tbl_category C ON C.CATEGID=T.CATEGID WHERE DATE(T.DODATE) = DATE(?) \r
 ORDER BY DATESORT,ENDTIMESORT,T.DODATE,T.TIMEAREA,STARTNULLSORT,STARTTIMESORT,T.SORTID</value>\r
     <comment>指定された日付のタスクを取得します。</comment>\r
@@ -158,7 +151,7 @@ ORDER BY DATESORT,ENDTIMESORT,T.DODATE,T.TIMEAREA,STARTNULLSORT,STARTTIMESORT,T.
     <value>SELECT  T.TASKID,T.SORTID,T.DODATE,T.TIMEAREA,C.CATEGORY,T.CONTENTS,\r
 T.FORCASTMIN,T.STARTTIME,T.ENDTIME,C.BGCOLOR,C.FRCOLOR,T.REPEATFLG, \r
 (CASE WHEN T.ENDTIME IS NULL THEN 1 ELSE 0 END) AS ENDTIMESORT,\r
-(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort\r
+(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort,(Case when exists (SELECT TASKID FROM TBL_COMMENT cm where cm.taskid = T.TASKID) THEN 1 ELSE 0 END) AS HASCOMMENT \r
 FROM TBL_TASKS T,TBL_SETTING S LEFT OUTER JOIN tbl_category C ON C.CATEGID=T.CATEGID WHERE T.ENDTIME IS NULL\r
 ORDER BY DATESORT,ENDTIMESORT,T.DODATE,T.TIMEAREA,STARTNULLSORT,STARTTIMESORT,T.SORTID</value>\r
     <comment>残り全タスクを表示します。</comment>\r
@@ -167,15 +160,11 @@ ORDER BY DATESORT,ENDTIMESORT,T.DODATE,T.TIMEAREA,STARTNULLSORT,STARTTIMESORT,T.
     <value>SELECT  T.TASKID,T.SORTID,T.DODATE,T.TIMEAREA,C.CATEGORY,T.CONTENTS,\r
 T.FORCASTMIN,T.STARTTIME,T.ENDTIME,C.BGCOLOR,C.FRCOLOR,T.REPEATFLG,\r
 (CASE WHEN T.ENDTIME IS NULL THEN 1 ELSE 0 END) AS ENDTIMESORT,\r
-(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort\r
+(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort,(Case when exists (SELECT TASKID FROM TBL_COMMENT cm where cm.taskid = T.TASKID) THEN 1 ELSE 0 END) AS HASCOMMENT \r
 FROM TBL_TASKS T,TBL_SETTING S LEFT OUTER JOIN tbl_category C ON C.CATEGID=T.CATEGID WHERE DATE(T.DODATE) = DATE(S.TODAY)\r
 ORDER BY DATESORT,ENDTIMESORT,T.DODATE,T.TIMEAREA,STARTNULLSORT,STARTTIMESORT,T.SORTID</value>\r
     <comment>今日のタスクを取得します。</comment>\r
   </data>\r
-  <data name="HELPALL" xml:space="preserve">\r
-    <value>SELECT C.CMDSTR,H.SUMMARY FROM TBL_COMMAND C,TBL_HELP H WHERE C.HELPID=H.HELPID ORDER BY C.HelpID;</value>\r
-    <comment>HELP全リストを表示します。</comment>\r
-  </data>\r
   <data name="insertTask" xml:space="preserve">\r
     <value>insert into tbl_tasks(TASKID,SORTID,DODATE,TIMEAREA,CATEGID,CONTENTS,FORCASTMIN,STARTTIME,ENDTIME) values(?,?,date(?),?,?,?,?,null,null)</value>\r
     <comment>タスクを追加します。</comment>\r
@@ -240,18 +229,6 @@ ORDER BY DATESORT,ENDTIMESORT,T.DODATE,T.TIMEAREA,STARTNULLSORT,STARTTIMESORT,T.
     <value>update tbl_tasks set sortid = ? where taskid=?</value>\r
     <comment>ソート番号を変更します。</comment>\r
   </data>\r
-  <data name="hasLink" xml:space="preserve">\r
-    <value>SELECT LINK_COMMAND,BASE_COMMAND FROM TBL_LINK WHERE LINK_COMMAND=?</value>\r
-    <comment>リンクが有るかどうかを確認します。</comment>\r
-  </data>\r
-  <data name="insertLink" xml:space="preserve">\r
-    <value>INSERT INTO TBL_LINK (LINK_COMMAND,BASE_COMMAND) VALUES (?,?)</value>\r
-    <comment>リンクを作成します。</comment>\r
-  </data>\r
-  <data name="removeLink" xml:space="preserve">\r
-    <value>DELETE FROM TBL_LINK WHERE LINK_COMMAND=?</value>\r
-    <comment>リンクを削除します。</comment>\r
-  </data>\r
   <data name="clearTimeArea" xml:space="preserve">\r
     <value>delete from tbl_timearea</value>\r
     <comment>時間帯をクリアします。</comment>\r
@@ -260,19 +237,11 @@ ORDER BY DATESORT,ENDTIMESORT,T.DODATE,T.TIMEAREA,STARTNULLSORT,STARTTIMESORT,T.
     <value>INSERT INTO tbl_timearea (TIMEAREA,START,END) values(?,?,?)</value>\r
     <comment>時間帯を追加します。</comment>\r
   </data>\r
-  <data name="getHelp" xml:space="preserve">\r
-    <value>select c.CMDSTR,h.SUMMARY,h.DETAIL from TBL_command c,tbl_help h where c.helpid = h.helpid AND cmdSTR=?</value>\r
-    <comment>個別ヘルプの内容を取得します。</comment>\r
-  </data>\r
-  <data name="getLink" xml:space="preserve">\r
-    <value>select l.link_command as link_command from tbl_command c,tbl_link l where c.cmdstr=l.base_command and c.cmdstr = ?</value>\r
-    <comment>個別ヘルプ用に、アライアスを取得します。</comment>\r
-  </data>\r
   <data name="getPwdList" xml:space="preserve">\r
     <value>SELECT  T.TASKID,T.SORTID,T.DODATE,T.TIMEAREA,C.CATEGORY,T.CONTENTS,\r
 T.FORCASTMIN,T.STARTTIME,T.ENDTIME,C.BGCOLOR,C.FRCOLOR,T.REPEATFLG,\r
 (CASE WHEN T.ENDTIME IS NULL THEN 1 ELSE 0 END) AS ENDTIMESORT,\r
-(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort\r
+(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort,(Case when exists (SELECT TASKID FROM TBL_COMMENT cm where cm.taskid = T.TASKID) THEN 1 ELSE 0 END) AS HASCOMMENT \r
 FROM TBL_TASKS T,TBL_SETTING S LEFT OUTER JOIN tbl_category C ON C.CATEGID=T.CATEGID \r
 WHERE DATE(T.DODATE) = DATE(S.TODAY) AND T.ENDTIME IS NULL AND T.STARTTIME IS NOT NULL \r
 ORDER BY DATESORT,ENDTIMESORT,T.DODATE,T.TIMEAREA,STARTNULLSORT,STARTTIMESORT,T.SORTID</value>\r
@@ -306,10 +275,6 @@ ORDER BY DATESORT,ENDTIMESORT,T.DODATE,T.TIMEAREA,STARTNULLSORT,STARTTIMESORT,T.
     <value>DELETE FROM tbl_tasks where sortid between ? and ?</value>\r
     <comment>タスクを削除します。</comment>\r
   </data>\r
-  <data name="getAllLink" xml:space="preserve">\r
-    <value>SELECT LINK_COMMAND,BASE_COMMAND FROM TBL_LINK ORDER BY BASE_COMMAND</value>\r
-    <comment>リンク一覧を出力します。</comment>\r
-  </data>\r
   <data name="getAllTimeArea" xml:space="preserve">\r
     <value>SELECT TIMEAREA,START,END FROM tbl_timearea</value>\r
     <comment>タイムエリアを取得します。</comment>\r
@@ -330,9 +295,37 @@ ORDER BY DATESORT,ENDTIMESORT,T.DODATE,T.TIMEAREA,STARTNULLSORT,STARTTIMESORT,T.
     <value>SELECT  T.TASKID,T.SORTID,T.DODATE,T.TIMEAREA,C.CATEGORY,T.CONTENTS,\r
 T.FORCASTMIN,T.STARTTIME,T.ENDTIME,C.BGCOLOR,C.FRCOLOR,T.REPEATFLG, \r
 (CASE WHEN T.ENDTIME IS NULL THEN 1 ELSE 0 END) AS ENDTIMESORT,\r
-(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort\r
+(CASE WHEN T.DODATE =S.TODAY THEN 0 ELSE (CASE WHEN DODATE&gt;S.TODAY THEN 2 ELSE 3 END) END) AS DATESORT,time(startTime) as STARTTIMESORT,(Case when STARTTIME IS NULL THEN 1 ELSE 0 END) AS STARTNullSort,(Case when exists (SELECT TASKID FROM TBL_COMMENT cm where cm.taskid = T.TASKID) THEN 1 ELSE 0 END) AS HASCOMMENT \r
 FROM TBL_TASKS T,TBL_SETTING S LEFT OUTER JOIN tbl_category C ON C.CATEGID=T.CATEGID WHERE T.CONTENTS LIKE ? OR C.Category LIKE ?\r
 ORDER BY DATESORT,ENDTIMESORT,T.DODATE,T.TIMEAREA,STARTNULLSORT,STARTTIMESORT,T.SORTID</value>\r
     <comment>与えられたキーワードをコンテンツに持つタスクを検索します。</comment>\r
   </data>\r
+  <data name="clearMetaComment" xml:space="preserve">\r
+    <value>DELETE FROM TBL_COMMENT WHERE TASKID IS NULL AND DATE(CREATETIME) = DATE(?)</value>\r
+    <comment>日付単位でメタコメントを削除します。</comment>\r
+  </data>\r
+  <data name="clearTaskComment" xml:space="preserve">\r
+    <value>DELETE FROM TBL_COMMENT WHERE TASKID=?</value>\r
+    <comment>タスク単位でコメントを削除します。</comment>\r
+  </data>\r
+  <data name="clearZombieComment" xml:space="preserve">\r
+    <value>DELETE FROM TBL_COMMENT WHERE TASKID IS NOT NULL AND TASKID NOT IN(SELECT TASKID FROM TBL_TASKS)</value>\r
+    <comment>タスク削除時に、タスクに紐付かないコメントをすべて削除します。</comment>\r
+  </data>\r
+  <data name="getComments" xml:space="preserve">\r
+    <value>SELECT ID,TASKID,CREATETIME,COMMENT FROM TBL_COMMENT WHERE TASKID=? ORDER BY ID</value>\r
+    <comment>当該タスクに関するコメントを照会します。</comment>\r
+  </data>\r
+  <data name="getMetaComment" xml:space="preserve">\r
+    <value>SELECT ID,TASKID,CREATETIME,COMMENT FROM TBL_COMMENT WHERE TASKID is null AND date(CREATETIME) = (SELECT TODAY FROM TBL_SETTING) ORDER BY ID</value>\r
+    <comment>当日のメタコメントを参照します。</comment>\r
+  </data>\r
+  <data name="insertComment" xml:space="preserve">\r
+    <value>INSERT INTO TBL_COMMENT (TASKID,CREATETIME,COMMENT) VALUES(?,datetime('now','localtime'),?)</value>\r
+    <comment>タスクに対してコメントを追加します。</comment>\r
+  </data>\r
+  <data name="insertMetaComment" xml:space="preserve">\r
+    <value>INSERT INTO TBL_COMMENT (TASKID,CREATETIME,COMMENT) VALUES(null,datetime('now','localtime'),?)</value>\r
+    <comment>その日全体についてコメントを追加します。</comment>\r
+  </data>\r
 </root>
\ No newline at end of file
diff --git a/KyberNetes/data/connection/TaskDBConnection.cs b/KyberNetes/data/connection/TaskDBConnection.cs
new file mode 100644 (file)
index 0000000..a45f886
--- /dev/null
@@ -0,0 +1,32 @@
+using System;\r
+using System.Collections.Generic;\r
+using System.Linq;\r
+using System.Text;\r
+\r
+namespace com.andoutomo.kybernetes.data.connection\r
+{\r
+    class TaskDBConnection:DBConnection\r
+    {\r
+        internal override string targetDbFile()\r
+        {\r
+            return "user.db";\r
+        }\r
+        #region singleton\r
+        private static TaskDBConnection connection;\r
+        private TaskDBConnection() { }\r
+        internal static TaskDBConnection Connection\r
+        {\r
+            get\r
+            {\r
+                if (connection == null)\r
+                {\r
+                    connection = new TaskDBConnection();\r
+                }\r
+                return connection;\r
+            }\r
+            private set { }\r
+        }\r
+\r
+        #endregion\r
+    }\r
+}\r
index 89c3e8b..6f3a4c4 100644 (file)
         private void InitializeComponent()\r
         {\r
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BaseForm));\r
-            this.panel1 = new System.Windows.Forms.Panel();\r
+            this.pnlTask = new System.Windows.Forms.Panel();\r
             this.txtInput = new System.Windows.Forms.TextBox();\r
             this.rConsole = new System.Windows.Forms.RichTextBox();\r
             this.expData = new System.Windows.Forms.SaveFileDialog();\r
             this.dmpData = new System.Windows.Forms.SaveFileDialog();\r
             this.SuspendLayout();\r
             // \r
-            // panel1\r
+            // pnlTask\r
             // \r
-            this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));\r
-            this.panel1.AutoScroll = true;\r
-            this.panel1.AutoSize = true;\r
-            this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r
-            this.panel1.Location = new System.Drawing.Point(6, 5);\r
-            this.panel1.MaximumSize = new System.Drawing.Size(780, 400);\r
-            this.panel1.MinimumSize = new System.Drawing.Size(780, 400);\r
-            this.panel1.Name = "panel1";\r
-            this.panel1.Size = new System.Drawing.Size(780, 400);\r
-            this.panel1.TabIndex = 0;\r
+            this.pnlTask.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));\r
+            this.pnlTask.AutoScroll = true;\r
+            this.pnlTask.AutoSize = true;\r
+            this.pnlTask.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;\r
+            this.pnlTask.Location = new System.Drawing.Point(5, 5);\r
+            this.pnlTask.MaximumSize = new System.Drawing.Size(780, 400);\r
+            this.pnlTask.MinimumSize = new System.Drawing.Size(780, 400);\r
+            this.pnlTask.Name = "pnlTask";\r
+            this.pnlTask.Size = new System.Drawing.Size(780, 400);\r
+            this.pnlTask.TabIndex = 0;\r
             // \r
             // txtInput\r
             // \r
             this.txtInput.BackColor = System.Drawing.Color.Black;\r
             this.txtInput.Font = new System.Drawing.Font("MS ゴシック", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128)));\r
             this.txtInput.ForeColor = System.Drawing.Color.White;\r
-            this.txtInput.Location = new System.Drawing.Point(792, 387);\r
+            this.txtInput.Location = new System.Drawing.Point(792, 389);\r
             this.txtInput.Name = "txtInput";\r
             this.txtInput.Size = new System.Drawing.Size(388, 19);\r
-            this.txtInput.TabIndex = 2;\r
+            this.txtInput.TabIndex = 1;\r
             this.txtInput.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtInput_KeyDown);\r
             // \r
             // rConsole\r
@@ -72,7 +72,7 @@
             this.rConsole.Name = "rConsole";\r
             this.rConsole.ReadOnly = true;\r
             this.rConsole.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.ForcedVertical;\r
-            this.rConsole.Size = new System.Drawing.Size(388, 377);\r
+            this.rConsole.Size = new System.Drawing.Size(388, 379);\r
             this.rConsole.TabIndex = 0;\r
             this.rConsole.TabStop = false;\r
             this.rConsole.Text = "";\r
             // \r
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\r
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r
-            this.ClientSize = new System.Drawing.Size(1184, 410);\r
+            this.ClientSize = new System.Drawing.Size(1184, 412);\r
             this.Controls.Add(this.rConsole);\r
             this.Controls.Add(this.txtInput);\r
-            this.Controls.Add(this.panel1);\r
+            this.Controls.Add(this.pnlTask);\r
             this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));\r
             this.Name = "BaseForm";\r
             this.Text = "Kybernetes v1.0.0";\r
 \r
         #endregion\r
 \r
-        private System.Windows.Forms.Panel panel1;\r
+        private System.Windows.Forms.Panel pnlTask;\r
         private System.Windows.Forms.TextBox txtInput;\r
         private System.Windows.Forms.RichTextBox rConsole;\r
         private System.Windows.Forms.SaveFileDialog expData;\r
index 4709f76..ec2b52d 100644 (file)
@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Windows.Forms;\r
 using com.andoutomo.kybernetes.control;\r
 using com.andoutomo.kybernetes.data.DAO;\r
+using System.Drawing;\r
 \r
 \r
 namespace com.andoutomo.kybernetes.view\r
@@ -23,12 +24,15 @@ namespace com.andoutomo.kybernetes.view
             addMultiText(initialText);\r
 \r
             addPrompt();\r
+            history = new CmdHistory();\r
 \r
             this.Text = AppInfoContainer.Title + " " + AppInfoContainer.Description;\r
             Echo = true;\r
-\r
+            \r
 \r
         }\r
+        private CmdHistory history;\r
+\r
 \r
         internal void invokeCategSettingDialog(List<CategoryData> arg)\r
         {\r
@@ -120,7 +124,7 @@ namespace com.andoutomo.kybernetes.view
         internal void clearText()\r
         {\r
             rConsole.Clear();\r
-            rConsole.AppendText("> ");\r
+            \r
         }\r
 \r
         private bool exitSwitch = false;\r
@@ -138,7 +142,7 @@ namespace com.andoutomo.kybernetes.view
         {\r
             Panel targetPanel = new PanelController(this).createRow(lastRow,data);\r
             \r
-            panel1.Controls.Add(targetPanel);\r
+            pnlTask.Controls.Add(targetPanel);\r
             lastRow += targetPanel.Height-1;\r
         }\r
 \r
@@ -159,9 +163,9 @@ namespace com.andoutomo.kybernetes.view
         /// </summary>\r
         internal void clearPanel()\r
         {\r
-            panel1.Controls.Clear();\r
+            pnlTask.Controls.Clear();\r
             //先頭行は足す\r
-            panel1.Controls.Add(new CaptionPanelController().createRow());\r
+            pnlTask.Controls.Add(new CaptionPanelController().createRow());\r
             lastRow = 17;\r
         }\r
         /// <summary>\r
@@ -179,11 +183,13 @@ namespace com.andoutomo.kybernetes.view
         /// <param name="e"></param>\r
         private void txtInput_KeyDown(object sender, KeyEventArgs e)\r
         {\r
+            int currentYPosition;\r
             switch (e.KeyCode)\r
             {\r
                 case Keys.Enter:\r
                     e.SuppressKeyPress = true;\r
                     doCommand();\r
+                    \r
                     break;\r
 \r
                 case Keys.Space:\r
@@ -202,8 +208,27 @@ namespace com.andoutomo.kybernetes.view
                     break;\r
                 case Keys.Escape:\r
                     e.SuppressKeyPress = true;\r
+                    history.resetPosition();\r
                     txtInput.Clear();\r
                     break;\r
+                case Keys.Up:\r
+                    e.SuppressKeyPress = true;\r
+                    txtInput.Text = history.prevCommand();\r
+                    break;\r
+                case Keys.Down:\r
+                    e.SuppressKeyPress = true;\r
+                    txtInput.Text = history.nextCommand();\r
+                    break;\r
+\r
+                case Keys.PageDown:\r
+                        currentYPosition = Math.Abs(this.pnlTask.AutoScrollPosition.Y);\r
+                        this.pnlTask.AutoScrollPosition = new Point(0, currentYPosition + 380);\r
+                    break;\r
+\r
+                case Keys.PageUp:\r
+                        currentYPosition = Math.Abs(this.pnlTask.AutoScrollPosition.Y);\r
+                        this.pnlTask.AutoScrollPosition = new Point(0, currentYPosition - 380);\r
+                    break;\r
             }\r
         }\r
         /// <summary>\r
@@ -227,7 +252,10 @@ namespace com.andoutomo.kybernetes.view
             }\r
 \r
             addPrompt();\r
-\r
+            if (!string.IsNullOrEmpty(txtInput.Text))\r
+            {\r
+                history.stackCmd(txtInput.Text);\r
+            }\r
             txtInput.Clear();\r
             txtInput.ImeMode = ImeMode.Off;\r
 \r
@@ -361,6 +389,7 @@ namespace com.andoutomo.kybernetes.view
         {\r
             txtInput.Text += rConsole.SelectedText.Trim();\r
             txtInput.Focus();\r
+            //選択状態を解除する\r
             this.txtInput.Select(this.txtInput.Text.Length, 0);\r
             \r
         }\r
index 00a8214..872e533 100644 (file)
@@ -14,13 +14,14 @@ namespace com.andoutomo.kybernetes.view
             rowPanel.Controls.Add(new CustomLabel("@", Color.FromArgb(0, 0, 0), Color.FromArgb(255, 255, 255), FontStyle.Regular, 9F, 100, 21, 16, ContentAlignment.MiddleCenter));\r
             rowPanel.Controls.Add(new CustomLabel("ID", Color.FromArgb(0, 0, 0), Color.FromArgb(255, 255, 255), FontStyle.Regular, 9F, 120, 41, 16, ContentAlignment.MiddleCenter));\r
             rowPanel.Controls.Add(new CustomLabel("Category", Color.FromArgb(0, 0, 0), Color.FromArgb(255, 255, 255), FontStyle.Regular, 9F, 160, 81, 16, ContentAlignment.MiddleCenter));\r
-            rowPanel.Controls.Add(new CustomLabel("作業内容", Color.FromArgb(0, 0, 0), Color.FromArgb(255, 255, 255), FontStyle.Regular, 9F, 240, 231, 16, ContentAlignment.MiddleCenter));\r
-            rowPanel.Controls.Add(new CustomLabel("見積H", Color.FromArgb(0, 0, 0), Color.FromArgb(255, 255, 255), FontStyle.Regular, 9F, 470, 51, 16, ContentAlignment.MiddleCenter));\r
-            rowPanel.Controls.Add(new CustomLabel("見積m", Color.FromArgb(0, 0, 0), Color.FromArgb(255, 255, 255), FontStyle.Regular, 9F, 520, 51, 16, ContentAlignment.MiddleCenter));\r
-            rowPanel.Controls.Add(new CustomLabel("実績", Color.FromArgb(0, 0, 0), Color.FromArgb(255, 255, 255), FontStyle.Regular, 9F, 570, 51, 16, ContentAlignment.MiddleCenter));\r
-            rowPanel.Controls.Add(new CustomLabel("開始", Color.FromArgb(0, 0, 0), Color.FromArgb(255, 255, 255), FontStyle.Regular, 9F, 620, 61, 16, ContentAlignment.MiddleCenter));\r
-            rowPanel.Controls.Add(new CustomLabel("終了", Color.FromArgb(0, 0, 0), Color.FromArgb(255, 255, 255), FontStyle.Regular, 9F, 680, 61, 16, ContentAlignment.MiddleCenter));\r
-            rowPanel.Controls.Add(new CustomLabel("R", Color.FromArgb(0, 0, 0), Color.FromArgb(255, 255, 255), FontStyle.Regular, 9F, 740, 21, 16, ContentAlignment.MiddleCenter));\r
+            rowPanel.Controls.Add(new CustomLabel("作業内容", Color.FromArgb(0, 0, 0), Color.FromArgb(255, 255, 255), FontStyle.Regular, 9F, 240, 211, 16, ContentAlignment.MiddleCenter));\r
+            rowPanel.Controls.Add(new CustomLabel("見積H", Color.FromArgb(0, 0, 0), Color.FromArgb(255, 255, 255), FontStyle.Regular, 9F, 450, 51, 16, ContentAlignment.MiddleCenter));\r
+            rowPanel.Controls.Add(new CustomLabel("見積m", Color.FromArgb(0, 0, 0), Color.FromArgb(255, 255, 255), FontStyle.Regular, 9F, 500, 51, 16, ContentAlignment.MiddleCenter));\r
+            rowPanel.Controls.Add(new CustomLabel("実績", Color.FromArgb(0, 0, 0), Color.FromArgb(255, 255, 255), FontStyle.Regular, 9F, 550, 51, 16, ContentAlignment.MiddleCenter));\r
+            rowPanel.Controls.Add(new CustomLabel("開始", Color.FromArgb(0, 0, 0), Color.FromArgb(255, 255, 255), FontStyle.Regular, 9F, 600, 61, 16, ContentAlignment.MiddleCenter));\r
+            rowPanel.Controls.Add(new CustomLabel("終了", Color.FromArgb(0, 0, 0), Color.FromArgb(255, 255, 255), FontStyle.Regular, 9F, 660, 61, 16, ContentAlignment.MiddleCenter));\r
+            rowPanel.Controls.Add(new CustomLabel("R", Color.FromArgb(0, 0, 0), Color.FromArgb(255, 255, 255), FontStyle.Regular, 9F, 720, 21, 16, ContentAlignment.MiddleCenter));\r
+            rowPanel.Controls.Add(new CustomLabel("C", Color.FromArgb(0, 0, 0), Color.FromArgb(255, 255, 255), FontStyle.Regular, 9F, 740, 21, 16, ContentAlignment.MiddleCenter));\r
 \r
             rowPanel.Location = new Point(0, 0);\r
             rowPanel.Size = new Size(761, 16);\r
index d6351b4..4a21bd4 100644 (file)
@@ -86,7 +86,7 @@
             this.btnSetFR.Location = new System.Drawing.Point(84, 200);\r
             this.btnSetFR.Name = "btnSetFR";\r
             this.btnSetFR.Size = new System.Drawing.Size(59, 22);\r
-            this.btnSetFR.TabIndex = 4;\r
+            this.btnSetFR.TabIndex = 3;\r
             this.btnSetFR.Text = "文字";\r
             this.btnSetFR.UseVisualStyleBackColor = true;\r
             this.btnSetFR.Click += new System.EventHandler(this.btnSetFR_Click);\r
@@ -96,7 +96,7 @@
             this.btnApply.Location = new System.Drawing.Point(111, 239);\r
             this.btnApply.Name = "btnApply";\r
             this.btnApply.Size = new System.Drawing.Size(75, 22);\r
-            this.btnApply.TabIndex = 5;\r
+            this.btnApply.TabIndex = 6;\r
             this.btnApply.Text = "適用";\r
             this.btnApply.UseVisualStyleBackColor = true;\r
             this.btnApply.Click += new System.EventHandler(this.btnApply_Click);\r
             this.btnClose.Location = new System.Drawing.Point(196, 239);\r
             this.btnClose.Name = "btnClose";\r
             this.btnClose.Size = new System.Drawing.Size(75, 22);\r
-            this.btnClose.TabIndex = 5;\r
+            this.btnClose.TabIndex = 7;\r
             this.btnClose.Text = "閉じる";\r
             this.btnClose.UseVisualStyleBackColor = true;\r
             this.btnClose.Click += new System.EventHandler(this.btnClose_Click);\r
index 5bc008d..d80cec0 100644 (file)
@@ -40,7 +40,7 @@ namespace com.andoutomo.kybernetes.view
                 sqlList.Add(new MultiSQLRunnningBean(SqlDictionary.insertCategory, argList));\r
             }\r
 \r
-            AsuradaDBConnection.getObject.updateData(sqlList);\r
+            TaskDBConnection.Connection.updateData(sqlList);\r
 \r
 \r
             this.Close();\r
diff --git a/KyberNetes/view/CmdHistory.cs b/KyberNetes/view/CmdHistory.cs
new file mode 100644 (file)
index 0000000..582714a
--- /dev/null
@@ -0,0 +1,94 @@
+using System;\r
+using System.Collections.Generic;\r
+using System.Linq;\r
+using System.Text;\r
+\r
+namespace com.andoutomo.kybernetes.view\r
+{\r
+    /// <summary>\r
+    /// コマンドヒストリを保持します。\r
+    /// </summary>\r
+    internal class CmdHistory\r
+    {\r
+        private string[] commandHist;\r
+        private int currentPosition;\r
+        const int MAXHIST = 10; \r
+\r
+        internal CmdHistory()\r
+        {\r
+            commandHist = new string[MAXHIST];\r
+            currentPosition = 0;\r
+        }\r
+        /// <summary>\r
+        /// 直前に実行されたコマンドをを提示します。\r
+        /// 同時にカレント位置を動かし、さらにその前のコマンドを提示する準備を行います。\r
+        /// </summary>\r
+        /// <returns></returns>\r
+        internal string prevCommand()\r
+        {\r
+            //終点まで来ている場合は最後のコマンドを表示。カレント位置も動かさない。\r
+            if (currentPosition == MAXHIST)\r
+            {\r
+                return commandHist[MAXHIST-1];\r
+            }\r
+            //次に提示するコマンドがある場合は、カレント位置を動かす。\r
+            if (!string.IsNullOrEmpty(commandHist[currentPosition]))\r
+            {\r
+                currentPosition++;\r
+            }\r
+            //ヒストリ配列からコマンドを取得してreturn\r
+            if (currentPosition > 0)\r
+            {\r
+                return commandHist[currentPosition - 1];\r
+            }\r
+            //この段階でcurrentPosition=0(ヒストリがない)場合は、空文字を返す。\r
+            else\r
+            {\r
+                return string.Empty;\r
+            }\r
+        }\r
+        /// <summary>\r
+        /// カレント位置の次に実行されたコマンドを提示します。\r
+        /// </summary>\r
+        /// <returns></returns>\r
+        internal string nextCommand()\r
+        {\r
+            currentPosition--;\r
+            if (currentPosition <= 0)\r
+            {\r
+                currentPosition = 0;\r
+                return string.Empty;\r
+            }\r
+            return commandHist[currentPosition-1];\r
+        }\r
+        /// <summary>\r
+        /// コマンド受け入れを行います。\r
+        /// コマンドはスタックされ、10件以上の場合は10番目が破棄されます。\r
+        /// また、同一のコマンドを連続入力した場合はスタックを行いません。\r
+        /// </summary>\r
+        /// <param name="command"></param>\r
+        internal void stackCmd(string command)\r
+        {\r
+            if (command != commandHist[0])\r
+            {\r
+                //スタックを行う\r
+                for (int i = MAXHIST-1; i > 0; i--)\r
+                {\r
+                    commandHist[i] = commandHist[i - 1];\r
+                }\r
+\r
+                //新たなコマンドを追加する\r
+                commandHist[0] = command;\r
+            }\r
+            //ポジションをリセット\r
+            resetPosition();\r
+        }\r
+        /// <summary>\r
+        /// ヒストリで参照するポジションをリセットします。\r
+        /// </summary>\r
+        internal void resetPosition()\r
+        {\r
+            currentPosition = 0;\r
+        }\r
+    }\r
+}\r
index a9e0fce..3ebb793 100644 (file)
@@ -82,20 +82,20 @@ namespace com.andoutomo.kybernetes.view
             }\r
             sortID = data.SortID;\r
 \r
-            rowPanel.Controls.Add(new CustomLabel(data.Indicator, frColor, bgColor, FontStyle.Regular, 9F, 0, 21, rowsize));\r
-            rowPanel.Controls.Add(new CustomLabel(data.DoDate.getDateString(), frColor, bgColor, style, 9F, 20, 56, rowsize));\r
-            rowPanel.Controls.Add(new CustomLabel(data.DoDate.getDowStr(), frColor, bgColor, style, 9F, 75, 26, rowsize));\r
-            rowPanel.Controls.Add(new CustomLabel(data.TimeArea, frColor, bgColor, style, 9F, 100, 21, rowsize));\r
-            rowPanel.Controls.Add(new CustomLabel(data.SortID.ToString(), frColor, bgColor, style, 9F, 120, 41, rowsize));\r
+            rowPanel.Controls.Add(new CustomLabel(data.Indicator, frColor, bgColor, FontStyle.Regular, 9F, 0, 21, rowsize,ContentAlignment.MiddleCenter));\r
+            rowPanel.Controls.Add(new CustomLabel(data.DoDate.getDateString(), frColor, bgColor, style, 9F, 20, 56, rowsize,ContentAlignment.MiddleCenter));\r
+            rowPanel.Controls.Add(new CustomLabel(data.DoDate.getDowStr(), frColor, bgColor, style, 9F, 75, 26, rowsize,ContentAlignment.MiddleCenter));\r
+            rowPanel.Controls.Add(new CustomLabel(data.TimeArea, frColor, bgColor, style, 9F, 100, 21, rowsize,ContentAlignment.MiddleCenter));\r
+            rowPanel.Controls.Add(new CustomLabel(data.SortID.ToString(), frColor, bgColor, style, 9F, 120, 41, rowsize,ContentAlignment.MiddleRight));\r
             rowPanel.Controls.Add(new CustomLabel(data.Category, frColor, bgColor, style, 9F, 160, 81, rowsize));\r
-\r
-            rowPanel.Controls.Add(new CustomLabel(data.Contents, frColor, bgColor, style, 9F, 240, 231, rowsize));\r
-            rowPanel.Controls.Add(new CustomLabel(data.getForcastHourStr, frColor, bgColor, timeStyle, fontsize, 470, 51, rowsize));\r
-            rowPanel.Controls.Add(new CustomLabel(data.ForecastMin.ToString(), frColor, bgColor, timeStyle, fontsize, 520, 51, rowsize));\r
-            rowPanel.Controls.Add(new CustomLabel(data.RealMin.ToString(), frColor, bgColor, timeStyle, fontsize, 570, 51, rowsize));\r
-            rowPanel.Controls.Add(new CustomLabel(data.StartTime.ToString(), frColor, bgColor, style, 9F, 620, 61, rowsize));\r
-            rowPanel.Controls.Add(new CustomLabel(data.EndTime.ToString(), frColor, bgColor, style, 9F, 680, 61, rowsize));\r
-            rowPanel.Controls.Add(new CustomLabel((data.IsRepeat == 1 ? "R" : ""), frColor, bgColor, style, 9F, 740, 21, rowsize));\r
+            rowPanel.Controls.Add(new CustomLabel(data.Contents, frColor, bgColor, style, 9F, 240, 211, rowsize));\r
+            rowPanel.Controls.Add(new CustomLabel(data.getForcastHourStr, frColor, bgColor, timeStyle, fontsize, 450, 51, rowsize,ContentAlignment.MiddleRight));\r
+            rowPanel.Controls.Add(new CustomLabel(data.ForecastMin.ToString(), frColor, bgColor, timeStyle, fontsize, 500, 51, rowsize,ContentAlignment.MiddleRight));\r
+            rowPanel.Controls.Add(new CustomLabel(data.RealMin.ToString(), frColor, bgColor, timeStyle, fontsize, 550, 51, rowsize,ContentAlignment.MiddleRight));\r
+            rowPanel.Controls.Add(new CustomLabel(data.StartTime.ToString(), frColor, bgColor, style, 9F, 600, 61, rowsize,ContentAlignment.MiddleCenter));\r
+            rowPanel.Controls.Add(new CustomLabel(data.EndTime.ToString(), frColor, bgColor, style, 9F, 660, 61, rowsize,ContentAlignment.MiddleCenter));\r
+            rowPanel.Controls.Add(new CustomLabel((data.IsRepeat == 1 ? "R" : ""), frColor, bgColor, style, 9F, 720, 21, rowsize,ContentAlignment.MiddleCenter));\r
+            rowPanel.Controls.Add(new CustomLabel((data.HasComment==1 ? "*" : ""), frColor, bgColor, style, 9F, 740, 21, rowsize,ContentAlignment.MiddleCenter));\r
 \r
             rowPanel.Location = new Point(0, point);\r
             rowPanel.Size = new Size(761, rowsize);\r
index af81579..45e85aa 100644 (file)
@@ -55,7 +55,7 @@ namespace com.andoutomo.kybernetes.view
                 sqlList.Add(new MultiSQLRunnningBean(SqlDictionary.insertTimeArea, argList));\r
             }\r
 \r
-            AsuradaDBConnection.getObject.updateData(sqlList);\r
+            TaskDBConnection.Connection.updateData(sqlList);\r
 \r
             this.Close();\r
         }\r
index 79e4cf1..f5d8474 100644 (file)
Binary files a/kybernetes_prj.suo and b/kybernetes_prj.suo differ