package cn.edu.zju.acm.onlinejudge.judgeservice;
import java.util.Hashtable;
import java.util.Map;
import java.util.concurrent.atomic.AtomicLong;
import cn.edu.zju.acm.onlinejudge.bean.Submission;
import cn.edu.zju.acm.onlinejudge.dao.SubmissionDAO;
import cn.edu.zju.acm.onlinejudge.persistence.PersistenceException;
public class MockSubmissionDAO extends MockDAO implements SubmissionDAO {
private AtomicLong id = new AtomicLong();
private static Map<Long, Submission> submissionMap = new Hashtable<Long, Submission>();
public Submission getSubmission(long id) throws PersistenceException {
return cloneSubmission(submissionMap.get(id));
}
public void save(Submission submission, long contestId) throws PersistenceException {
submission.setId(id.getAndIncrement());
update(submission, contestId);
}
public void update(Submission submission, long contestId) throws PersistenceException {
submissionMap.put(submission.getId(), cloneSubmission(submission));
}
private Submission cloneSubmission(Submission submission) {
Submission ret = new Submission();
ret.setJudgeComment(submission.getJudgeComment());
ret.setContent(submission.getContent());
ret.setId(submission.getId());
ret.setLanguage(submission.getLanguage());
ret.setMemoryConsumption(submission.getMemoryConsumption());
ret.setProblemId(submission.getProblemId());
ret.setJudgeReply(submission.getJudgeReply());
ret.setTimeConsumption(submission.getTimeConsumption());
return ret;
}
}