use of cn.edu.zju.acm.onlinejudge.bean.Submission in project zoj by licheng.
the class SubmissionPersistenceImpl method getQueueingSubmissions.
public List<Submission> getQueueingSubmissions(long maxSubmissionId, int count) throws PersistenceException {
Connection conn = null;
try {
conn = Database.createConnection();
PreparedStatement ps = null;
if (maxSubmissionId < 0) {
ps = conn.prepareStatement("SELECT MAX(submission_id) FROM submission;");
try {
ResultSet rs = ps.executeQuery();
rs.next();
maxSubmissionId = rs.getLong(1);
} finally {
Database.dispose(ps);
}
}
StringBuilder query = new StringBuilder(SubmissionPersistenceImpl.GET_SUBMISSIONS_WITH_CONTENT.replace("FORCE_INDEX", ""));
query.append(" AND s.judge_reply_id=");
query.append(JudgeReply.QUEUING.getId());
query.append(" AND s.submission_id<=");
query.append(maxSubmissionId);
query.append(" ORDER BY s.submission_id DESC LIMIT ");
query.append(count);
System.out.println(query.toString());
ps = conn.prepareStatement(query.toString());
try {
ResultSet rs = ps.executeQuery();
List<Submission> submissions = new ArrayList<Submission>();
Map<Long, Language> languageMap = PersistenceManager.getInstance().getLanguagePersistence().getLanguageMap();
while (rs.next()) {
Submission submission = this.populateSubmission(rs, true, languageMap);
submissions.add(submission);
}
return submissions;
} finally {
Database.dispose(ps);
}
} catch (SQLException e) {
throw new PersistenceException("Failed to get queueing submissions", e);
} finally {
Database.dispose(conn);
}
}
use of cn.edu.zju.acm.onlinejudge.bean.Submission in project zoj by licheng.
the class SubmissionPersistenceImpl method getProblemStatistics.
public ProblemStatistics getProblemStatistics(long problemId, String orderBy, int count) throws PersistenceException {
Connection conn = null;
String ob = null;
ProblemStatistics ret = null;
if ("time".equals(orderBy)) {
ob = "s.time_consumption ASC,memory_consumption ASC,s.submission_date ASC";
ret = new ProblemStatistics(problemId, "time");
} else if ("memory".equals(orderBy)) {
ob = "s.memory_consumption ASC,s.time_consumption ASC,submission_date ASC";
ret = new ProblemStatistics(problemId, "memory");
} else {
ob = "s.submission_date ASC,s.time_consumption ASC,memory_consumption ASC";
ret = new ProblemStatistics(problemId, "date");
}
Map<Long, Language> languageMap = PersistenceManager.getInstance().getLanguagePersistence().getLanguageMap();
try {
conn = Database.createConnection();
PreparedStatement ps = null;
try {
ps = conn.prepareStatement("SELECT judge_reply_id, count(*) FROM submission WHERE problem_id=? GROUP BY judge_reply_id");
ps.setLong(1, problemId);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
long jid = rs.getLong(1);
int c = rs.getInt(2);
ret.setCount(jid, c);
}
} finally {
Database.dispose(ps);
}
String sql = SubmissionPersistenceImpl.GET_SUBMISSIONS + " AND s.problem_id=? AND s.judge_reply_id=? ORDER BY " + ob + " LIMIT " + count;
sql = sql.replace("FORCE_INDEX", "USE INDEX (index_submission_problem_reply)");
try {
ps = conn.prepareStatement(sql);
ps.setLong(1, problemId);
ps.setLong(2, JudgeReply.ACCEPTED.getId());
ResultSet rs = ps.executeQuery();
List<Submission> submissions = new ArrayList<Submission>();
while (rs.next()) {
Submission submission = this.populateSubmission(rs, false, languageMap);
submissions.add(submission);
}
ret.setBestRuns(submissions);
return ret;
} finally {
Database.dispose(ps);
}
} catch (SQLException e) {
throw new PersistenceException("Failed to get the QQs", e);
} finally {
Database.dispose(conn);
}
}
use of cn.edu.zju.acm.onlinejudge.bean.Submission in project zoj by licheng.
the class ContestManager method getSubmission.
public Submission getSubmission(long submissionId) throws PersistenceException {
Object key = new Long(submissionId);
synchronized (this.submissionCache) {
Submission submission = this.submissionCache.get(key);
if (submission == null) {
SubmissionPersistence submissionPersistence = PersistenceManager.getInstance().getSubmissionPersistence();
submission = submissionPersistence.getSubmission(submissionId);
this.submissionCache.put(key, submission);
}
return submission;
}
}
Aggregations