예제 #1
0
        public static void Make(StreamWriter f, ref Jobs jobs)
        {
            int[]    codes     = { 0, 1, 2, 3, 4, 6, 5, 7, 8, 9, 98, 99 };
            string[] codenames = { "SAT", "UNSAT", "UNKNOWN", "BUG", "ERROR", "MEMORY", "TIMEOUT", "SATTIME", "UNSATTIME", "INFERR", "OVERPERF", "UNDERPERF" };

            f.Write("Date,ID");
            HashSet <string> categories = new HashSet <string>();

            foreach (Job j in jobs)
            {
                foreach (string cat in j.Summary.Categories)
                {
                    if (!categories.Contains(cat))
                    {
                        categories.Add(cat);
                    }
                }
            }

            foreach (string c in categories)
            {
                for (int i = 0; i < codes.Length; i++)
                {
                    f.Write(",\"" + c + "|" + codenames[i] + "\"");
                }
            }

            f.WriteLine();

            foreach (Job j in jobs)
            {
                f.Write("\"" + j.MetaData.SubmissionTime.ToString(Global.culture) + "\",");
                f.Write(j.MetaData.Id.ToString());

                foreach (string category in categories)
                {
                    Summary s = j.Summary;

                    for (int i = 0; i < codes.Length; i++)
                    {
                        int    code = codes[i];
                        string name = codenames[i];
                        if (!s.ContainsKey(category))
                        {
                            f.Write(",0");
                        }
                        else
                        {
                            CategoryStatistics cs = s[category];
                            switch (code)
                            {
                            case 0: f.Write("," + cs.SAT.ToString()); break;

                            case 1: f.Write("," + cs.UNSAT.ToString()); break;

                            case 2: f.Write("," + cs.UNKNOWN.ToString()); break;

                            case 3: f.Write("," + cs.Bugs.ToString()); break;

                            case 4: f.Write("," + cs.Errors.ToString()); break;

                            case 5: f.Write("," + cs.Timeout.ToString()); break;

                            case 6: f.Write("," + cs.Memout.ToString()); break;

                            case 7: f.Write("," + cs.TimeSAT.ToString()); break;

                            case 8: f.Write("," + cs.TimeUNSAT.ToString()); break;

                            case 9: f.Write("," + cs.InfrastructureErrors.ToString()); break;

                            case 98: f.Write("," + cs.Overperformers.ToString()); break;

                            case 99: f.Write("," + cs.UnderPerformers.ToString()); break;
                            }
                        }
                    }
                }

                f.WriteLine();
            }
        }