コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
ファイル: codeviewer.ascx.cs プロジェクト: lokygb/FrontDesk
        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);
                    }
                }
            }
        }