コード例 #1
0
        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();
            }
        }
コード例 #2
0
        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();
        }