예제 #1
0
        private TaskStatusItemType[] CreateTaskStatusList()
        {
            List <TaskStatusItemType> statusList = new List <TaskStatusItemType>();

            foreach (ServerTaskListItemType taskItem in taskList)
            {
                TaskStatusItemType statusItem = new TaskStatusItemType();
                statusItem.taskId     = taskItem.task.serverTask_ID;
                statusItem.taskStatus = taskItem.taskStatus;
                statusList.Add(statusItem);
            }

            return(statusList.ToArray());
        }
예제 #2
0
        public TaskStatusItemType[] SetTaskList(ServerTaskListItemType[] ControlTaskList)
        {
            lock (taskListLock)
            {
                List <TaskStatusItemType> statusList = new List <TaskStatusItemType>();
                List <uint> delIdList = new List <uint>();

                foreach (ServerTaskListItemType controlTaskItem in ControlTaskList)
                {
                    bool exists = false;
                    bool del    = false;
                    TaskStatusItemType statusItem = new TaskStatusItemType();
                    statusItem.taskId = controlTaskItem.task.serverTask_ID;

                    foreach (ServerTaskListItemType taskItem in taskList)
                    {
                        if (controlTaskItem.task.serverTask_ID == taskItem.task.serverTask_ID)
                        {
                            exists = true;
                            if (controlTaskItem.taskStatus == TaskStatusType.CONTROL_DEL)
                            {
                                if (!(controlTaskItem.task is TaskWithActivity))
                                {
                                    delIdList.Add(controlTaskItem.task.serverTask_ID);
                                    del = true;
                                }
                                else
                                {
                                    taskItem.taskStatus   = TaskStatusType.SERVER_DEL;
                                    statusItem.taskStatus = TaskStatusType.SERVER_DEL;
                                }
                            }
                            else
                            {
                                statusItem.taskStatus = TaskStatusType.CONFLICT_CREATE_EXISTENT;
                            }
                            break;
                        }
                    }

                    if (!exists)
                    {
                        if (controlTaskItem.taskStatus == TaskStatusType.CONTROL)
                        {
                            controlTaskItem.taskStatus = TaskStatusType.SERVER;
                            statusItem.taskStatus      = TaskStatusType.SERVER;
                            taskList.Add(controlTaskItem);
                        }
                        else
                        {
                            statusItem.taskStatus = TaskStatusType.CONFLICT_DEL_NON_EXISTENT;
                        }
                    }

                    if (!del)
                    {
                        statusList.Add(statusItem);
                    }
                }

                // delete items without activity
                foreach (uint id in delIdList)
                {
                    for (int i = 0; i < taskList.Count; i++)
                    {
                        if (taskList[i].task.serverTask_ID == id)
                        {
                            taskList.RemoveAt(i);
                            break;
                        }
                    }
                }

                return(statusList.ToArray());
            }
        }