Package cn.edu.zju.acm.onlinejudge.util

Examples of cn.edu.zju.acm.onlinejudge.util.ProblemStatistics


        String orderBy = context.getRequest().getParameter("orderBy");
        if (!"date".equals(orderBy) && !"memory".equals(orderBy)) {
            orderBy = "time";
        }
        if (problem != null) {
            ProblemStatistics statistics =
                    StatisticsManager.getInstance().getProblemStatistics(problem.getId(), orderBy, 20);
            context.setAttribute("ProblemStatistics", statistics);

        }
View Full Code Here


    }

    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) {
View Full Code Here

TOP

Related Classes of cn.edu.zju.acm.onlinejudge.util.ProblemStatistics

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.