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); }
protected bool PostResult(AutoJobTest job, string xmloutput) { Results resda = new Results(m_ident); if (job.AutoEval.ResultType == Result.AUTO_TYPE) { new Activities(m_ident).Create(job.JobCreator, Activity.SUBMISSION, job.SubmissionID, "Result posted for evaluation: " + job.AutoEval.Name); if (!job.OnSubmit) { return(resda.CreateAuto( job.AutoEval.ID, job.JobCreator, job.SubmissionID, xmloutput)); } else { Components.Submission sub = new Submissions(m_ident).GetInfo(job.SubmissionID); new EmailWizard(m_ident).SendByPrincipal(sub.PrincipalID, "FrontDesk Submission Results: " + job.AutoEval.Name, ConvertXmlToText(xmloutput, job.AutoEval.CourseID, job.AutoEval.AsstID)); m_logger.Log("Result emailed to submitter"); if (job.AutoEval.Competitive) { m_logger.Log("Competitive pre-test result stored"); return(resda.CreateAuto( job.AutoEval.ID, job.JobCreator, job.SubmissionID, xmloutput)); } else { return(true); } } } else { SubjResult.SubjResultList ress = ParseSubjXmlResults(xmloutput, new Submissions(m_ident).GetInfo(job.SubmissionID)); Rubric rub = new Evaluations(m_ident).GetRubric(job.AutoEval.ID); new Rubrics(m_ident).ClearResults(rub.ID, job.SubmissionID); foreach (SubjResult res in ress) { resda.CreateSubj(job.SubmissionID, rub.ID, res.Comment, res.FileID, res.Line, res.Points, new ArrayList(), res.SubjType); } return(true); } }
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); } } } }