package org.verwandlung.voj.web.model;
import java.io.Serializable;
import java.util.Date;
/**
* 评测记录的Model.
* 对应数据库中的voj_submissions数据表.
*
* @author Haozhe Xie
*/
public class Submission implements Serializable {
/**
* 评测记录类的默认构造函数.
*/
public Submission() { }
/**
* 评测记录类的构造函数.
* @param problem - 评测对应的试题对象
* @param user - 评测提交者的用户对象
* @param language - 提交所使用的语言对象
* @param submitTime - 评测提交时间
* @param code - 评测所执行的代码
*/
public Submission(Problem problem, User user, Language language, String code) {
this.problem = problem;
this.user = user;
this.language = language;
this.code = code;
}
/**
* 评测记录类的构造函数.
* @param problem - 评测对应的试题对象
* @param user - 评测提交者的用户对象
* @param language - 提交所使用的语言对象
* @param submitTime - 评测提交时间
* @param executeTime - 评测开始执行时间
* @param usedTime - 评测运行总时间
* @param usedMemory - 评测运行占用最大内存
* @param judgeResult - 评测结果
* @param judgeScore - 评测运行得分
* @param judgeLog - 评测运行日志
* @param code - 评测所执行的代码
*/
public Submission(Problem problem, User user, Language language, Date submitTime, Date executeTime,
int usedTime, int usedMemory, JudgeResult judgeResult, int judgeScore, String judgeLog, String code) {
this(problem, user, language, code);
this.submitTime = submitTime;
this.executeTime = executeTime;
this.usedTime = usedTime;
this.usedMemory = usedMemory;
this.judgeResult = judgeResult;
this.judgeScore = judgeScore;
this.judgeLog = judgeLog;
}
/**
* 评测记录类的构造函数.
* @param submissionId - 评测记录的唯一标识符
* @param problem - 评测对应的试题对象
* @param user - 评测提交者的用户对象
* @param language - 提交所使用的语言对象
* @param submitTime - 评测提交时间
* @param executeTime - 评测开始执行时间
* @param usedTime - 评测运行总时间
* @param usedMemory - 评测运行占用最大内存
* @param judgeResult - 评测结果
* @param judgeScore - 评测运行得分
* @param judgeLog - 评测运行日志
* @param code - 评测所执行的代码
*/
public Submission(long submissionId, Problem problem, User user, Language language, Date submitTime,
Date executeTime, int usedTime, int usedMemory, JudgeResult judgeResult, int judgeScore,
String judgeLog, String code) {
this(problem, user, language, submitTime, executeTime, usedTime, usedMemory, judgeResult, judgeScore, judgeLog, code);
this.submissionId = submissionId;
}
/**
* 获取评测记录的唯一标识符.
* @return 评测记录的唯一标识符
*/
public long getSubmissionId() {
return submissionId;
}
/**
* 设置评测记录的唯一标识符.
* @param submissionId - 评测记录的唯一标识符.
*/
public void setSubmissionId(long submissionId) {
this.submissionId = submissionId;
}
/**
* 获取评测对应的试题对象.
* @return 试题对象
*/
public Problem getProblem() {
return problem;
}
/**
* 设置评测对应的试题对象.
* @param problem - 试题对象
*/
public void setProblem(Problem problem) {
this.problem = problem;
}
/**
* 获取评测提交者的用户对象.
* @return 用户对象
*/
public User getUser() {
return user;
}
/**
* 设置评测提交者的用户对象.
* @param user - 用户对象
*/
public void setUser(User user) {
this.user = user;
}
/**
* 获取提交所使用的语言对象.
* @return 提交所使用的语言对象
*/
public Language getLanguage() {
return language;
}
/**
* 设置提交所使用的语言对象.
* @param language - 提交所使用的语言对象
*/
public void setLanguage(Language language) {
this.language = language;
}
/**
* 获取评测提交时间.
* @return 评测提交时间
*/
public Date getSubmitTime() {
return submitTime;
}
/**
* 设置评测提交时间.
* @param submitTime - 评测提交时间
*/
public void setSubmitTime(Date submitTime) {
this.submitTime = submitTime;
}
/**
* 获取评测开始执行时间.
* @return 评测开始执行时间
*/
public Date getExecuteTime() {
return executeTime;
}
/**
* 设置评测开始执行时间.
* @param executeTime - 评测开始执行时间
*/
public void setExecuteTime(Date executeTime) {
this.executeTime = executeTime;
}
/**
* 获取评测运行总时间.
* @return 评测运行总时间
*/
public int getUsedTime() {
return usedTime;
}
/**
* 设置评测运行总时间.
* @param usedTime - 评测运行总时间
*/
public void setUsedTime(int usedTime) {
this.usedTime = usedTime;
}
/**
* 获取评测运行占用最大内存.
* @return 评测运行占用最大内存
*/
public int getUsedMemory() {
return usedMemory;
}
/**
* 设置评测运行占用最大内存.
* @param usedMemory - 评测运行占用最大内存
*/
public void setUsedMemory(int usedMemory) {
this.usedMemory = usedMemory;
}
/**
* 获取评测结果.
* @return 评测结果
*/
public JudgeResult getJudgeResult() {
return judgeResult;
}
/**
* 设置评测结果.
* @param judgeResult - 评测结果
*/
public void setJudgeResult(JudgeResult judgeResult) {
this.judgeResult = judgeResult;
}
/**
* 获取评测运行得分.
* @return 评测运行得分
*/
public int getJudgeScore() {
return judgeScore;
}
/**
* 设置评测运行得分.
* @param judgeScore - 评测运行得分
*/
public void setJudgeScore(int judgeScore) {
this.judgeScore = judgeScore;
}
/**
* 获取评测运行日志.
* @return 评测运行日志
*/
public String getJudgeLog() {
return judgeLog;
}
/**
* 设置评测运行日志
* @param judgeLog - 评测运行日志
*/
public void setJudgeLog(String judgeLog) {
this.judgeLog = judgeLog;
}
/**
* 设置评测所执行的代码.
* @return 评测所执行的代码
*/
public String getCode() {
return code;
}
/**
* 设置评测所执行的代码.
* @param code - 评测所执行的代码
*/
public void setCode(String code) {
this.code = code;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return String.format("Submission [ID=%d, Problem={%s}, User={%s}, Language={%s}, SubmitTime={%s}, "
+ "ExecuteTime={%s}, UsedTime=%d, UsedMemory=%d, JudgeResult={%s}, JudgeScore=%d, "
+ "JudgeLog=%s, Code=%s]",
new Object[] { submissionId, problem, user, language, submitTime, executeTime, usedTime, usedMemory,
judgeResult, judgeScore, judgeLog, code});
}
/**
* 评测记录的唯一标识符.
*/
private long submissionId;
/**
* 评测对应的试题对象.
*/
private Problem problem;
/**
* 评测提交者的用户对象.
*/
private User user;
/**
* 提交所使用的语言对象.
*/
private Language language;
/**
* 评测提交时间.
*/
private Date submitTime;
/**
* 评测开始执行时间.
*/
private Date executeTime;
/**
* 评测运行总时间.
*/
private int usedTime;
/**
* 评测运行占用最大内存.
*/
private int usedMemory;
/**
* 评测结果.
*/
private JudgeResult judgeResult;
/**
* 评测运行得分.
*/
private int judgeScore;
/**
* 评测运行日志.
*/
private String judgeLog;
/**
* 评测所执行的代码.
*/
private String code;
/**
* 唯一的序列化标识符.
*/
private static final long serialVersionUID = -1984683070957842963L;
}