diff --git a/judge/scripts/lib/submission_helper.rb b/judge/scripts/lib/submission_helper.rb deleted file mode 100644 --- a/judge/scripts/lib/submission_helper.rb +++ /dev/null @@ -1,123 +0,0 @@ -module Grader - - class SubmissionRoomMaker - def initialize - @config = Grader::Configuration.get_instance - end - - def produce_grading_room(submission) - user = submission.user - problem = submission.problem - grading_room = "#{@config.user_result_dir}/" + - "#{user.login}/#{problem.name}/#{submission.id}" - - FileUtils.mkdir_p(grading_room) - grading_room - end - - def find_problem_home(submission) - problem = submission.problem - "#{@config.problems_dir}/#{problem.name}" - end - - def save_source(submission,source_name) - dir = self.produce_grading_room(submission) - f = File.open("#{dir}/#{source_name}","w") - f.write(submission.source) - f.close - end - - def clean_up(submission) - end - end - - class SubmissionReporter - def initialize - @config = Grader::Configuration.get_instance - end - - def report(sub,test_result_dir) - save_result(sub,read_result(test_result_dir)) - end - - def report_error(sub,msg) - save_result(sub,{:points => 0, - :comment => "Grading error: #{msg}" }) - end - - protected - def read_result(test_result_dir) - cmp_msg_fname = "#{test_result_dir}/compiler_message" - if FileTest.exist?(cmp_msg_fname) - cmp_file = File.open(cmp_msg_fname) - cmp_msg = cmp_file.read - cmp_file.close - else - cmp_msg = "" - end - - result_fname = "#{test_result_dir}/result" - comment_fname = "#{test_result_dir}/comment" - if FileTest.exist?(result_fname) - comment = "" - begin - result_file = File.open(result_fname) - result = result_file.readline.to_i - result_file.close - rescue - result = 0 - comment = "error reading result file." - end - - begin - comment_file = File.open(comment_fname) - comment += comment_file.readline.chomp - comment_file.close - rescue - comment += "" - end - - return {:points => result, - :comment => comment, - :cmp_msg => cmp_msg} - else - if FileTest.exist?("#{test_result_dir}/a.out") - return {:points => 0, - :comment => 'error during grading', - :cmp_msg => cmp_msg} - else - return {:points => 0, - :comment => 'compilation error', - :cmp_msg => cmp_msg} - end - end - end - - def save_result(submission,result) - problem = submission.problem - submission.graded_at = Time.now.gmtime - points = result[:points] - submission.points = points - comment = @config.report_comment(result[:comment]) - - # - # TODO: FIX THIS MESSAGE - # - if problem == nil - submission.grader_comment = 'PASSED: ' + comment + '(problem is nil)' - elsif points == problem.full_score - #submission.grader_comment = 'PASSED: ' + comment - submission.grader_comment = comment - elsif result[:comment].chomp =~ /^[\[\]P]+$/ - submission.grader_comment = 'PASSED: ' + comment + '(inconsistent score)' - else - #submission.grader_comment = 'FAILED: ' + comment - submission.grader_comment = comment - end - submission.compiler_message = result[:cmp_msg] or '' - submission.save - end - - end - -end