Advertisement
Guest User

Untitled

a guest
May 27th, 2016
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.98 KB | None | 0 0
  1. package obchallenge;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5. import java.sql.Connection;
  6. import java.sql.DriverManager;
  7. import java.sql.PreparedStatement;
  8. import java.sql.ResultSet;
  9. import java.sql.ResultSetMetaData;
  10. import java.sql.SQLException;
  11.  
  12. import javax.servlet.ServletException;
  13. import javax.servlet.http.HttpServlet;
  14. import javax.servlet.http.HttpServletRequest;
  15. import javax.servlet.http.HttpServletResponse;
  16.  
  17. import org.codehaus.jettison.json.JSONObject;
  18.  
  19. public class EvaluateSQL extends HttpServlet {
  20.  
  21. /**
  22. *
  23. */
  24. private static final long serialVersionUID = 1L;
  25.  
  26. public void doGet(HttpServletRequest request, HttpServletResponse response)
  27. throws ServletException, IOException {
  28. // Output object
  29. JSONObject jsonResponse = new JSONObject();
  30.  
  31. // Parameter retrieving
  32. String sqlChallengeId = request.getParameter("sqlChallengeId");
  33. String incomingQuery = request.getParameter("sqlString");
  34.  
  35. // Connection to database
  36. Connection connection = null;
  37. try {
  38. Class.forName("org.postgresql.Driver");
  39. connection = DriverManager.getConnection("jdbc:postgresql://" + Constants.DB_URL + ":"
  40. + Constants.DB_PORT + "/" + Constants.DB_SID, Constants.DB_USER, Constants.DB_PASSWORD);
  41.  
  42. // Get solutionQuery
  43. String getSolutionQuery = "SELECT solution_query FROM sql_challenge WHERE sql_challenge_id = ?";
  44. PreparedStatement statement = connection.prepareStatement(getSolutionQuery);
  45. statement.setString(1, sqlChallengeId);
  46. ResultSet resultSet = statement.executeQuery();
  47. resultSet.next();
  48. String solutionQuery = resultSet.getString(1);
  49.  
  50. // Execute incomingQuery
  51. ResultSet incomingQueryResultSet = statement.executeQuery(incomingQuery);
  52.  
  53. // Execute solutionQuery
  54. ResultSet solutionQueryResultSet = statement.executeQuery(solutionQuery);
  55.  
  56. // Compare results
  57. boolean correct = compareResultSets(incomingQueryResultSet, solutionQueryResultSet);
  58.  
  59. // Add result to the response
  60. jsonResponse.put("correct", correct);
  61.  
  62. resultSet.close();
  63. statement.close();
  64. } catch (Exception e) {
  65. e.printStackTrace();
  66. } finally {
  67. if (connection != null) {
  68. try {
  69. connection.close();
  70. } catch (SQLException e) {
  71. e.printStackTrace();
  72. }
  73. }
  74. }
  75.  
  76. response.setContentType("application/json");
  77. PrintWriter out = response.getWriter();
  78. out.print(jsonResponse);
  79. }
  80.  
  81. public boolean compareResultSets(ResultSet resultSet1, ResultSet resultSet2) throws SQLException {
  82. while (resultSet1.next()) {
  83. resultSet2.next();
  84. ResultSetMetaData resultSetMetaData = resultSet1.getMetaData();
  85. int count = resultSetMetaData.getColumnCount();
  86. for (int i = 1; i <= count; i++) {
  87. if (!resultSet1.getObject(i).equals(resultSet2.getObject(i))) {
  88. return false;
  89. }
  90. }
  91. }
  92. return true;
  93. }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement