protected SubjResult.SubjResultList ParseSubjXmlResults(string xmlresults, Submission sub) { SubjResult.SubjResultList ress = new SubjResult.SubjResultList(); XPathNavigator xnav = new XmlWizard().GetXPathNavigator(xmlresults); FileSystem fs = new FileSystem(m_ident); CFile zone = fs.GetFile(sub.LocationID); xnav.MoveToFirstChild(); xnav.MoveToFirstChild(); XPathNavigator comments = xnav.Clone(); while (comments.MoveToNext()) { SubjResult res = new SubjResult(); XPathNavigator comment = comments.Clone(); comment.MoveToFirstChild(); string subjtype = comment.Value; comment.MoveToNext(); switch (subjtype) { case "Warning": res.SubjType = Rubric.WARNING; break; case "Error": res.SubjType = Rubric.ERROR; break; case "Good": res.SubjType = Rubric.GOOD; break; }; res.Points = Convert.ToDouble(comment.Value); comment.MoveToNext(); res.Comment = comment.Value; comment.MoveToNext(); string filename = comment.Value; comment.MoveToNext(); if (filename.StartsWith(@".\")) filename = filename.Substring(2, filename.Length-2); CFile file = fs.GetFile(Path.Combine(zone.FullPath, filename)); if (file != null) { res.FileID = file.ID; res.Line = Convert.ToInt32(comment.Value); ress.Add(res); } } return ress; }
private void LoadComments(CFile file) { Result.ResultList cms = new Results(Globals.CurrentIdentity).GetFileResults(file.ID); m_comments = new Hashtable(); m_linesaffect = new Hashtable(); foreach (SubjResult res in cms) { SubjResult.SubjResultList ress = (SubjResult.SubjResultList) m_comments[res.Line]; if (ress == null) m_comments.Add(res.Line, (ress = new SubjResult.SubjResultList())); ress.Add(res); foreach (int line in res.LinesAffected) if (m_linesaffect[line] == null) m_linesaffect.Add(line, res); } }