From: <Or...@us...> - 2009-02-04 18:49:23
|
Revision: 490 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=490&view=rev Author: Oracle_ Date: 2009-02-04 18:49:19 +0000 (Wed, 04 Feb 2009) Log Message: ----------- Fixed bug with HTML results. Fixed bug with ResultIoi. Fixed bug with CE result. Modified Paths: -------------- ACMServer/trunk/ACMServer/Library/LibraryExtention/HtmlBuilder.cs ACMServer/trunk/ACMServer/Plugins/IoiPlugin/IoiInformerPlugin/IoiInformerPlugin.cs ACMServer/trunk/ACMServer/Runner/Class1.cs Modified: ACMServer/trunk/ACMServer/Library/LibraryExtention/HtmlBuilder.cs =================================================================== --- ACMServer/trunk/ACMServer/Library/LibraryExtention/HtmlBuilder.cs 2009-02-04 17:28:44 UTC (rev 489) +++ ACMServer/trunk/ACMServer/Library/LibraryExtention/HtmlBuilder.cs 2009-02-04 18:49:19 UTC (rev 490) @@ -8,7 +8,8 @@ { private string title; private string body; - private string bgcolor; + private string bgcolor="White"; + private string meta; public string Title { @@ -22,6 +23,18 @@ } } + public string Meta + { + get + { + return meta; + } + set + { + meta = value; + } + } + public string BackgroundColor { get @@ -38,15 +51,16 @@ { get { - string res = "<html>\n<head>\n\t<title>" + title + "</title>\n</head>"; - res = res + "<body bgcolor=\"" + bgcolor + ">\n" + body + "</body>\n</html>"; + string res = "<html>\n<head>\n\t<meta " + meta + "/>\n\t"; + res+="<title>" + title + "</title>\n</head>"; + res = res + "<body bgcolor=\"" + bgcolor + "\">\n" + body + "</body>\n</html>"; return res; } } - public void AddTable(string[,] data,string[] header,string caption) + public void AddTable(string[,] data,string[] header,string caption,int borderwidth,int cellspacing,int cellpadding) { - body += "<table>\n"; + body += "<table border=\""+borderwidth.ToString()+"\" cellspacing=\""+cellspacing.ToString()+"\" cellpadding=\""+cellpadding.ToString()+"\">\n"; if (caption!="") body+="<caption>" + caption + "</caption>\n"; if (header.Length>0) @@ -71,9 +85,9 @@ body += "<a href=\"" + URL + "\">" + text + "</a> "; } - public void AddReference(string URL, string text, string align) + public void AddPre(string data) { - body += "<a align=\""+align+"\" href=\"" + URL + "\">" + text + "</a> "; + body += "<pre>" + data + "</pre>"; } public void AddParagraph(string data, string align, string color) Modified: ACMServer/trunk/ACMServer/Plugins/IoiPlugin/IoiInformerPlugin/IoiInformerPlugin.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/IoiPlugin/IoiInformerPlugin/IoiInformerPlugin.cs 2009-02-04 17:28:44 UTC (rev 489) +++ ACMServer/trunk/ACMServer/Plugins/IoiPlugin/IoiInformerPlugin/IoiInformerPlugin.cs 2009-02-04 18:49:19 UTC (rev 490) @@ -13,6 +13,19 @@ base.Control = new IoiInformerControl(); } + public string GetLanguage(int id) + { + StreamReader r = File.OpenText("Comps.txt"); + while (!r.EndOfStream) + { + string[] s = r.ReadLine().Split(' '); + if (s[0] == id.ToString()) + return s[1]; + } + r.Close(); + return id.ToString(); + } + public override void Send(SystemMessage message) { if (message.IsType("TestingResultIoi") == true) @@ -21,53 +34,76 @@ ((IoiInformerControl)base.Control).UpCount(); HtmlBuilder h=new HtmlBuilder(); - h.Title = "\xD0\xE5\xE7\xF3\xEB\xFC\xF2\xE0\xF2\xE8 \xF2\xE5\xF1\xF2\xF3\xE2\xE0\xED\xED\xFF"; + string[,] subdata=new string[5,2]; + + h.Title = "\xD0\xE5\xE7\xF3\xEB\xFC\xF2\xE0\xF2\xE8 \xF2\xE5\xF1\xF2\xF3\xE2\xE0\xED\xED\xFF: "; + h.Meta="HTTP-EQUIV=\"Content-Type\" content=\"text/html; charset=utf-8\""; h.AddHeader("\xC4\xE0\xED\xB3 \xEF\xF0\xEE \xF1\xE0\xE1\xEC\xB3\xF2:", 4, "left"); - h.AddText("\xD3\xF7\xE0\xF1\xED\xE8\xEA: " + result.Submit.name + "<br>"); - h.AddText("\xCA\xEB\xE0\xF1: " + result.Submit.form + "<br>"); - h.AddText("\xC7\xE0\xE4\xE0\xF7\xE0: " + result.Submit.submit.pbolemID + "<br>"); - h.AddText("\xCC\xEE\xE2\xE0 \xEF\xF0\xEE\xE3\xF0\xE0\xEC\xF3\xE2\xE0\xED\xED\xFF: " + result.Submit.submit.language + "<br>"); - h.AddText("\xCD\xEE\xEC\xE5\xF0 \xF1\xE0\xE1\xEC\xB3\xF2\xF3: " + result.Submit.submit.id + "<br>"); + subdata[0,0]="\xD3\xF7\xE0\xF1\xED\xE8\xEA:"; + subdata[0,1]=result.Submit.name; + subdata[1,0]="\xCA\xEB\xE0\xF1:"; + subdata[1,1]=result.Submit.form.ToString(); + subdata[2,0]="\xC7\xE0\xE4\xE0\xF7\xE0:"; + subdata[2,1]=result.Submit.submit.pbolemID.ToString(); + subdata[3,0]="\xCC\xEE\xE2\xE0 \xEF\xF0\xEE\xE3\xF0\xE0\xEC\xF3\xE2\xE0\xED\xED\xFF:"; + subdata[3,1]=GetLanguage(result.Submit.submit.language); + subdata[4,0]="\xCD\xEE\xEC\xE5\xF0 \xF1\xE0\xE1\xEC\xB3\xF2\xF3:"; + subdata[4,1]=result.Submit.submit.id.ToString(); + h.AddTable(subdata, new string[0], "", 2, 0, 5); + h.AddHorizLine(); h.AddHeader("\xC2\xE8\xF5\xB3\xE4\xED\xE8\xE9 \xEA\xEE\xE4",4,"center"); - h.AddCode(result.Submit.submit.sourceCode); + h.AddPre(result.Submit.submit.sourceCode); h.AddHorizLine(); h.AddHeader("\xD0\xE5\xE7\xF3\xEB\xFC\xF2\xE0\xF2 \xE2\xE8\xEA\xEE\xED\xE0\xED\xED\xFF", 4, "center"); - string[,] data=new string[result.testResults.Length+1,8]; - string[] header = new string[8]; - header[0] = "\xB9"; - header[1] = "\xE2\xF5\xB3\xE4"; - header[2] = "\xEA\xEE\xF0\xE5\xEA\xF2\xED\xE8\xE9 \xF0\xE5\xE7\xF3\xEB\xFC\xF2\xE0\xF2"; - header[3] = "\xF0\xE5\xE7\xF3\xEB\xFC\xF2\xE0\xF2 \xF3\xF7\xE0\xF1\xED\xE8\xEA\xE0"; - header[4] = "\xE2\xE8\xEA\xEE\xF0\xE8\xF1\xF2\xE0\xED\xE8\xE9 \xF7\xE0\xF1"; - header[5] = "\xE2\xE8\xEA\xEE\xF0\xE8\xF1\xF2\xE0\xED\xE0 \xEF\xE0\xEC\'\xFF\xF2\xFC"; - header[6] = "\xE2\xE5\xF0\xE4\xE8\xEA\xF2 \xF1\xF3\xE4\xE4\xB3"; - header[7] = "\xEA-\xF1\xF2\xFC \xE1\xE0\xEB\xB3\xE2 \xE7\xE0 \xF2\xE5\xF1\xF2"; - int n = result.testResults.Length; - int sumPoints = 0; - for (int i = 0; i < n; i++) + if (result.testResults != null) { - data[i,0] = result.testResults[i].id.ToString(); - data[i,1] = result.testResults[i].input; - data[i,2] = result.testResults[i].output; - data[i,3] = result.testResults[i].contestantOutput; - data[i,4] = result.testResults[i].usedTime.ToString(); - data[i,5] = result.testResults[i].usedMemory.ToString(); - data[i,6] = result.testResults[i].res; - data[i,7] = result.testResults[i].points.ToString(); - sumPoints += result.testResults[i].points; + string[,] data = new string[result.testResults.Length + 1, 8]; + string[] header = new string[8]; + header[0] = "\xB9"; + header[1] = "\xC2\xF5\xB3\xE4"; + header[2] = "\xCA\xEE\xF0\xE5\xEA\xF2\xED\xE8\xE9 \xD0\xE5\xE7\xF3\xEB\xFC\xF2\xE0\xF2"; + header[3] = "\xD0\xE5\xE7\xF3\xEB\xFC\xF2\xE0\xF2 \xD3\xF7\xE0\xF1\xED\xE8\xEA\xE0"; + header[4] = "\xC2\xE8\xEA\xEE\xF0\xE8\xF1\xF2\xE0\xED\xE8\xE9 \xD7\xE0\xF1"; + header[5] = "\xC2\xE8\xEA\xEE\xF0\xE8\xF1\xF2\xE0\xED\xE0 \xCF\xE0\xEC\'\xFF\xF2\xFC"; + header[6] = "\xC2\xE5\xF0\xE4\xE8\xEA\xF2 \xD1\xF3\xE4\xE4\xB3"; + header[7] = "\xCA-\xF1\xF2\xFC \xE1\xE0\xEB\xB3\xE2 \xE7\xE0 \xF2\xE5\xF1\xF2"; + int n = result.testResults.Length; + int allPoints = 0, myPoints = 0; + for (int i = 0; i < n; i++) + { + data[i, 0] = result.testResults[i].id.ToString(); + data[i, 1] = "<pre>"+result.testResults[i].input+"</pre>"; + data[i, 2] = "<pre>"+result.testResults[i].output+"</pre>"; + data[i, 3] = "<pre>"+result.testResults[i].contestantOutput+"</pre>"; + data[i, 4] = result.testResults[i].usedTime.ToString(); + data[i, 5] = result.testResults[i].usedMemory.ToString(); + data[i, 6] = result.testResults[i].res; + int curpoints = (result.testResults[i].res == "Accepted") ? result.testResults[i].points : 0; + data[i, 7] = curpoints.ToString() + "/" + result.testResults[i].points.ToString(); + myPoints += curpoints; + allPoints += result.testResults[i].points; + } + data[n, 0] = "<b>\xD1\xF3\xEC\xE0\xF0\xED\xB3</b>"; + data[n, 4] = "<b>" + result.usedMemory.ToString() + "</b>"; + data[n, 5] = "<b>" + result.usedTime.ToString() + "</b>"; + data[n, 6] = "<b>" + result.res + "</b>"; + data[n, 7] = "<b>" + myPoints.ToString() + "/" + allPoints.ToString() + "</b>"; + h.AddTable(data, header, "", 2, 0, 5); + h.Title += myPoints.ToString() + "/" + allPoints.ToString(); } - data[n,0] = "\xD1\xF3\xEC\xE0\xF0\xED\xB3"; - data[n,4] = result.usedTime.ToString(); - data[n,5] = result.usedMemory.ToString(); - data[n,6] = result.res; - data[n,7] = sumPoints.ToString(); - h.AddTable(data, header, ""); + else + { + h.Title += "\xCF\xEE\xEC\xE8\xEB\xEA\xE0 \xCA\xEE\xEC\xEF\xB3\xEB\xFF\xF6\xB3\xBF!"; + h.AddParagraph("\xCF\xEE\xEC\xE8\xEB\xEA\xE0 \xCA\xEE\xEC\xEF\xB3\xEB\xFF\xF6\xB3\xBF!"); + } + h.AddHorizLine(); + h.AddReference("http://acm.lviv.ua","<small>\xC0\xD1\xCC \xCA\xEE\xED\xF2\xE5\xF1\xF2\xE5\xF0 - \xF0\xF3\xF5 \xE2\xEF\xE5\xF0\xE5\xE4</small>"); - h.AddReference("http://acm.lviv.ua","<small><small>\xC0\xD1\xCC \xCA\xEE\xED\xF2\xE5\xF1\xF2\xE5\xF0 - \xF0\xF3\xF5 \xE2\xEF\xE5\xF0\xE5\xE4</small></small>","right"); - - StreamWriter w = File.CreateText(result.Submit.submit.id.ToString() + ".html"); + string dir = "IoiResults\\" + result.Submit.form.ToString() + " form\\" + result.Submit.name; + Directory.CreateDirectory(dir); + StreamWriter w = File.CreateText(dir+"\\"+result.Submit.submit.pbolemID.ToString() + ".html"); w.Write(h.Result); w.Close(); Modified: ACMServer/trunk/ACMServer/Runner/Class1.cs =================================================================== --- ACMServer/trunk/ACMServer/Runner/Class1.cs 2009-02-04 17:28:44 UTC (rev 489) +++ ACMServer/trunk/ACMServer/Runner/Class1.cs 2009-02-04 18:49:19 UTC (rev 490) @@ -211,12 +211,14 @@ int usedTime = -1; int usedMemory = -1; result.testResults = new TestResIoi[test.run.results.Length]; + result.res = TestResult.Accepted.ToString(); for (int i = 0; i < test.run.results.Length; i++) { result.testResults[i] = new TestResIoi(); - usedTime = Math.Max(usedTime, test.run.results[i].UsedTime); - usedMemory = Math.Max(usedMemory, test.run.results[i].UsedMemory); + usedTime = Math.Max(usedTime, test.run.results[i].UsedTime); + usedMemory = Math.Max(usedMemory, test.run.results[i].UsedMemory); + if (test.run.results[i].res != TestResult.Accepted) result.res = test.run.results[i].res.ToString(); result.testResults[i].input = test.run.test.tests[i].input; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |