예제 #1
0
 public void Remove(LPlan p)
 {
     if (planDictionary.ContainsKey(p.id))
     {
         lock (_lock)
         {
             if (planDictionary.ContainsKey(p.id))
             {
                 planDictionary.Remove(p.id);
             }
         }
     }
 }
예제 #2
0
 public void Add(LPlan p)
 {
     if (!planDictionary.ContainsKey(p.id))
     {
         lock (_lock)
         {
             if (!planDictionary.ContainsKey(p.id))
             {
                 planDictionary.Add(p.id, p);
             }
         }
     }
 }
예제 #3
0
 public bool Upgrade(LPlan oldp, LPlan newp)
 {
     try
     {
         lock (_lock)
         {
             if (planDictionary.ContainsKey(oldp.id))
             {
                 planDictionary.Remove(oldp.id);
             }
             planDictionary.Add(newp.id, newp);
             return(true);
         }
     }
     catch (Exception ex)
     {
         //MessageBox.Show(ex.Message);
         return(false);
     }
 }
예제 #4
0
파일: xmlIO.cs 프로젝트: cweinone/TnP
        public static void ReadXML(string filePath, XmlDocument xmlDoc)
        {
            xmlDoc.Load(filePath);

            //try
            //{
            //    //load plan

            //    XmlNodeList planNodeList = xmlDoc.SelectSingleNode("Information/Plans").ChildNodes;

            //    foreach (XmlNode xnode in planNodeList)
            //    {
            //        EPlan plan = new EPlan();
            //        XmlElement xe = (XmlElement)xnode;

            //        plan.name = xe.GetElementsByTagName("name")[0].InnerText;
            //        plan.id = long.Parse(xe.GetElementsByTagName("id")[0].InnerText);
            //        plan.progress = int.Parse(xe.GetElementsByTagName("progress")[0].InnerText);
            //        if (xe.GetElementsByTagName("state")[0].InnerText == "activated") plan.state = true;
            //        else if (xe.GetElementsByTagName("state")[0].InnerText == "inactivated") plan.state = false;
            //        plan.showT = Convert.ToDateTime(xe.GetElementsByTagName("appeared_time")[0].InnerText);
            //        plan.startT = Convert.ToDateTime(xe.GetElementsByTagName("started_time")[0].InnerText);
            //        plan.endT = Convert.ToDateTime(xe.GetElementsByTagName("end_time")[0].InnerText);
            //        plan.finalT = Convert.ToDateTime(xe.GetElementsByTagName("expected_end_time")[0].InnerText);
            //        plan.startF = int.Parse(xe.GetElementsByTagName("started_frequency")[0].InnerText);
            //        plan.stopF = int.Parse(xe.GetElementsByTagName("stopped_frequency")[0].InnerText);
            //        if (xe.GetElementsByTagName("end_state")[0].InnerText == "done") plan.endState = true;
            //        else if (xe.GetElementsByTagName("end_state")[0].InnerText == "gave_up") plan.endState = false;
            //        plan.lastT = TimeSpan.Parse(xe.GetElementsByTagName("last_time")[0].InnerText);
            //        for (int i = 0; i < xe.GetElementsByTagName("steps")[0].ChildNodes.Count; i++)
            //        {
            //            Step s = new Step();
            //            s.name = xe.GetElementsByTagName("steps")[0].ChildNodes[i].InnerText;
            //            plan.steps.Add(s);
            //        }

            //        EPlanDictionary.GetInstance().Add(plan);
            //    }
            //}
            //catch(Exception ex)
            //{
            //    Logger.WriteLogs("Loading eplan XML error: " + ex.Message);
            //}

            try
            {
                //load lplan

                XmlNodeList lplanNodeList = xmlDoc.SelectSingleNode("Information/LPlans").ChildNodes;


                foreach (XmlNode xnode in lplanNodeList)
                {
                    LPlan      lplan = new LPlan();
                    XmlElement xe    = (XmlElement)xnode;

                    lplan.name = xe.GetElementsByTagName("name")[0].InnerText;
                    lplan.id   = long.Parse(xe.GetElementsByTagName("id")[0].InnerText);

                    LPlanDictionary.GetInstance().Add(lplan);
                }
            }
            catch (Exception ex)
            {
                Logger.WriteLogs("Loading lplan XML error: " + ex.Message);
            }

            try
            {
                //load allsub

                XmlNodeList subNodeList = xmlDoc.SelectSingleNode("Information/AllSub").ChildNodes;


                foreach (XmlNode xnode in subNodeList)
                {
                    AllSub     alls = new AllSub();
                    XmlElement xe   = (XmlElement)xnode;

                    alls.name = xe.GetElementsByTagName("name")[0].InnerText;
                    alls.id   = long.Parse(xe.GetElementsByTagName("id")[0].InnerText);

                    AllSubDictionary.GetInstance().Add(alls);
                }
            }
            catch (Exception ex)
            {
                Logger.WriteLogs("Loading lplan XML error: " + ex.Message);
            }

            try
            {
                //load task
                XmlNodeList taskNodeList = xmlDoc.SelectSingleNode("Information/Tasks").ChildNodes;


                foreach (XmlNode xnode in taskNodeList)
                {
                    Task       task = new Task();
                    XmlElement xe   = (XmlElement)xnode;

                    task.name     = xe.GetElementsByTagName("name")[0].InnerText;
                    task.id       = long.Parse(xe.GetElementsByTagName("id")[0].InnerText);
                    task.progress = int.Parse(xe.GetElementsByTagName("progress")[0].InnerText);
                    task.goalID   = long.Parse(xe.GetElementsByTagName("goalID")[0].InnerText);
                    for (int i = 0; i < xe.GetElementsByTagName("staskIDs")[0].ChildNodes.Count; i++)
                    {
                        long l = long.Parse(xe.GetElementsByTagName("staskIDs")[0].ChildNodes[i].InnerText);
                        task.staskID.Add(l);
                    }
                    for (int i = 0; i < xe.GetElementsByTagName("allSubIDs")[0].ChildNodes.Count; i++)
                    {
                        long l = long.Parse(xe.GetElementsByTagName("allSubIDs")[0].ChildNodes[i].InnerText);
                        task.allSubID.Add(l);
                    }
                    task.expecT = Convert.ToDateTime(xe.GetElementsByTagName("expecT")[0].InnerText);
                    task.creatT = Convert.ToDateTime(xe.GetElementsByTagName("creatT")[0].InnerText);
                    task.totalT = TimeSpan.Parse(xe.GetElementsByTagName("totalT")[0].InnerText);
                    for (int i = 0; i < xe.GetElementsByTagName("dailyDoneCount")[0].ChildNodes.Count; i++)
                    {
                        int l = int.Parse(xe.GetElementsByTagName("dailyDoneCount")[0].ChildNodes[i].InnerText);
                        task.dailyDoneCount.Add(l);
                    }
                    task.totalSubtaskNum = int.Parse(xe.GetElementsByTagName("totalSubtaskNum")[0].InnerText);
                    task.doneSubtaskNum  = int.Parse(xe.GetElementsByTagName("doneSubtaskNum")[0].InnerText);
                    task.popularity      = int.Parse(xe.GetElementsByTagName("popularity")[0].InnerText);
                    task.reward          = int.Parse(xe.GetElementsByTagName("reward")[0].InnerText);
                    if (xe.GetElementsByTagName("state")[0].InnerText == "closed")
                    {
                        task.state = true;
                    }
                    else if (xe.GetElementsByTagName("state")[0].InnerText == "open")
                    {
                        task.state = false;
                    }


                    TaskDictionary.GetInstance().Add(task);
                }
            }
            catch (Exception ex)
            {
                Logger.WriteLogs("Loading task XML error: " + ex.Message);
            }

            try
            {
                //load goal

                XmlNodeList goalNodeList = xmlDoc.SelectSingleNode("Information/Goals").ChildNodes;


                foreach (XmlNode xnode in goalNodeList)
                {
                    Goal       goal = new Goal();
                    XmlElement xe   = (XmlElement)xnode;

                    goal.name = xe.GetElementsByTagName("name")[0].InnerText;
                    goal.id   = long.Parse(xe.GetElementsByTagName("id")[0].InnerText);

                    GoalDictionary.GetInstance().Add(goal);
                }
            }
            catch (Exception ex)
            {
                Logger.WriteLogs("Loading goal XML error: " + ex.Message);
            }

            try
            {
                //load thought

                XmlNodeList thoughtNodeList = xmlDoc.SelectSingleNode("Information/Thoughts").ChildNodes;


                foreach (XmlNode xnode in thoughtNodeList)
                {
                    Thought    thought = new Thought();
                    XmlElement xe      = (XmlElement)xnode;

                    thought.name = xe.GetElementsByTagName("name")[0].InnerText;
                    thought.id   = long.Parse(xe.GetElementsByTagName("id")[0].InnerText);

                    ThoughtDictionary.GetInstance().Add(thought);
                }
            }
            catch (Exception ex)
            {
                Logger.WriteLogs("Loading thought XML error: " + ex.Message);
            }

            try
            {
                //load stask

                XmlNodeList sTaskNodeList = xmlDoc.SelectSingleNode("Information/STasks").ChildNodes;


                foreach (XmlNode xnode in sTaskNodeList)
                {
                    STask      sTask = new STask();
                    XmlElement xe    = (XmlElement)xnode;

                    sTask.name            = xe.GetElementsByTagName("name")[0].InnerText;
                    sTask.id              = long.Parse(xe.GetElementsByTagName("id")[0].InnerText);
                    sTask.taskID          = long.Parse(xe.GetElementsByTagName("taskID")[0].InnerText);
                    sTask.order           = int.Parse(xe.GetElementsByTagName("order")[0].InnerText);
                    sTask.lplanID         = int.Parse(xe.GetElementsByTagName("lplanID")[0].InnerText);
                    sTask.totalSubtaskNum = int.Parse(xe.GetElementsByTagName("totalSubtaskNum")[0].InnerText);
                    sTask.doneSubtaskNum  = int.Parse(xe.GetElementsByTagName("doneSubtaskNum")[0].InnerText);
                    sTask.reward          = int.Parse(xe.GetElementsByTagName("reward")[0].InnerText);
                    for (int i = 0; i < xe.GetElementsByTagName("subtaskIDs")[0].ChildNodes.Count; i++)
                    {
                        long l = long.Parse(xe.GetElementsByTagName("subtaskIDs")[0].ChildNodes[i].InnerText);
                        sTask.subtaskID.Add(l);
                    }
                    if (xe.GetElementsByTagName("state")[0].InnerText == "closed")
                    {
                        sTask.state = true;
                    }
                    else if (xe.GetElementsByTagName("state")[0].InnerText == "open")
                    {
                        sTask.state = false;
                    }
                    if (xe.GetElementsByTagName("procedure")[0].InnerText == "procedure")
                    {
                        sTask.procedure = true;
                    }
                    else if (xe.GetElementsByTagName("procedure")[0].InnerText == "nprocedure")
                    {
                        sTask.procedure = false;
                    }
                    if (xe.GetElementsByTagName("structure")[0].InnerText == "structure")
                    {
                        sTask.structure = true;
                    }
                    else if (xe.GetElementsByTagName("structure")[0].InnerText == "nstructure")
                    {
                        sTask.structure = false;
                    }
                    sTask.totalT = TimeSpan.Parse(xe.GetElementsByTagName("totalT")[0].InnerText);


                    STaskDictionary.GetInstance().Add(sTask);
                }
            }
            catch (Exception ex)
            {
                Logger.WriteLogs("Loading stask XML error: " + ex.Message);
            }

            try
            {
                //load subtask

                XmlNodeList subTaskNodeList = xmlDoc.SelectSingleNode("Information/SubTasks").ChildNodes;


                foreach (XmlNode xnode in subTaskNodeList)
                {
                    SubTask    subTask = new SubTask();
                    XmlElement xe      = (XmlElement)xnode;

                    subTask.name       = xe.GetElementsByTagName("name")[0].InnerText;
                    subTask.id         = long.Parse(xe.GetElementsByTagName("id")[0].InnerText);
                    subTask.staskID    = long.Parse(xe.GetElementsByTagName("staskID")[0].InnerText);
                    subTask.order      = int.Parse(xe.GetElementsByTagName("order")[0].InnerText);
                    subTask.eplanID    = long.Parse(xe.GetElementsByTagName("eplanID")[0].InnerText);
                    subTask.difficulty = int.Parse(xe.GetElementsByTagName("difficulty")[0].InnerText);
                    subTask.reward     = int.Parse(xe.GetElementsByTagName("reward")[0].InnerText);
                    if (xe.GetElementsByTagName("state")[0].InnerText == "closed")
                    {
                        subTask.state = true;
                    }
                    else if (xe.GetElementsByTagName("state")[0].InnerText == "open")
                    {
                        subTask.state = false;
                    }
                    if (xe.GetElementsByTagName("ready")[0].InnerText == "is_ready")
                    {
                        subTask.ready = true;
                    }
                    else if (xe.GetElementsByTagName("ready")[0].InnerText == "not_ready")
                    {
                        subTask.ready = false;
                    }
                    if (xe.GetElementsByTagName("inout")[0].InnerText == "in")
                    {
                        subTask.inout = true;
                    }
                    else if (xe.GetElementsByTagName("inout")[0].InnerText == "out")
                    {
                        subTask.inout = false;
                    }


                    SubTaskDictionary.GetInstance().Add(subTask);
                }
            }
            catch (Exception ex)
            {
                Logger.WriteLogs("Loading subtask XML error: " + ex.Message);
            }
        }