public void Remove(LPlan p) { if (planDictionary.ContainsKey(p.id)) { lock (_lock) { if (planDictionary.ContainsKey(p.id)) { planDictionary.Remove(p.id); } } } }
public void Add(LPlan p) { if (!planDictionary.ContainsKey(p.id)) { lock (_lock) { if (!planDictionary.ContainsKey(p.id)) { planDictionary.Add(p.id, p); } } } }
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); } }
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); } }