package controllers; import models.Problem; import models.Solution; import models.User; import play.mvc.Result; import java.util.List; public class SolutionController extends OJController { public static Result solutionListPage() { return ok(views.html.solution.list.render()); } public static Result solutionPage(Long id) { Solution solution = Solution.find.byId(id); if (solution != null) { return ok(views.html.solution.detail.render(solution)); } else { return notFound("Solution not found."); } } public static Result recentSolutions() { int pageSize = 100; int pageNum = 0; if (request().queryString().containsKey("pageSize")) { pageSize = Integer.parseInt(request().queryString().get("pageSize")[0]); } if (request().queryString().containsKey("pageNum")) { pageNum = Integer.parseInt(request().queryString().get("pageNum")[0]); } String queryCondition = ""; if (request().queryString().containsKey("user")) { String username = request().queryString().get("user")[0]; User user = User.find.where().eq("name", username).findUnique(); if (user == null) { return ok(jsonResponse(1, "User not found.")); } queryCondition += "( user_id = " + user.id + ")"; } if (request().queryString().containsKey("problem")) { String problemSlug = request().queryString().get("problem")[0]; Problem problem = Problem.findBySlug(problemSlug); if (problem == null) { return ok(jsonResponse(1, "Problem not found.")); } if (queryCondition.length() > 0) { queryCondition += " and "; } queryCondition += "( problem_id = " + problem.id + ")"; } if (request().queryString().containsKey("result")) { String resultString = request().queryString().get("result")[0]; int result = Integer.parseInt(resultString); if (queryCondition.length() > 0) { queryCondition += " and "; } queryCondition += "( result = " + result + ")"; } List<Solution> solutions = Solution.find.orderBy("id DESC") .where(queryCondition).findPagingList(pageSize).getPage(pageNum).getList(); return ok(jsonResponse(0, solutions)); } }