public void ReadStats() { string statsPath = string.Format("{0}/stats.xml", Jarvis.Config.AppSettings.Settings["workingDir"].Value); if (File.Exists(statsPath)) { string currentAssignmentKey = string.Empty; FileStream stream = File.OpenRead(statsPath); using (XmlReader reader = XmlReader.Create(stream)) { while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: switch (reader.Name) { case "JarvisStats": TotalBadHeaders = int.Parse(reader.GetAttribute("TotalBadHeaders")); TotalFilesProcessed = int.Parse(reader.GetAttribute("TotalFilesProcessed")); break; case "Assignment": AssignmentStats stats = new AssignmentStats(); stats.Name = reader.GetAttribute("Name"); stats.TotalSubmissions = int.Parse(reader.GetAttribute("TotalSubmissions")); if (!string.IsNullOrEmpty(reader.GetAttribute("TotalNonCompile"))) { stats.TotalNonCompile = int.Parse(reader.GetAttribute("TotalNonCompile")); stats.TotalBadStyle = int.Parse(reader.GetAttribute("TotalBadStyle")); } AssignmentData.Add(stats.Name, stats); currentAssignmentKey = stats.Name; break; case "Submission": string studentId = reader.GetAttribute("Student"); string grade = reader.GetAttribute("Grade"); if (AssignmentData.ContainsKey(currentAssignmentKey)) { AssignmentData[currentAssignmentKey].TotalUniqueStudentsSubmissions.Add(studentId, grade); } break; } break; } } } stream.Close(); stream.Dispose(); } }
public static void UpdateStats(Assignment homework, RunResult result) { AssignmentStats stats = null; string name = homework.Course + " - hw" + homework.HomeworkId; if (!Jarvis.Stats.AssignmentData.ContainsKey(name)) { stats = new AssignmentStats(); stats.Name = name; Jarvis.Stats.AssignmentData.Add(name, stats); } else { stats = Jarvis.Stats.AssignmentData[name]; } stats.TotalSubmissions++; if (!stats.TotalUniqueStudentsSubmissions.ContainsKey(homework.StudentId)) { stats.TotalUniqueStudentsSubmissions.Add(homework.StudentId, string.Empty); } if (result != null && !result.OutputMessage.Contains("Is your assignment number correct")) { stats.TotalUniqueStudentsSubmissions[homework.StudentId] = result.Grade.ToString(); if (!result.CompileMessage.Contains("Success!!")) { stats.TotalNonCompile++; } if (!result.StyleMessage.Contains("Total errors found: 0")) { stats.TotalBadStyle++; } } Jarvis.Stats.WriteStats(); }