Guest User

Untitled

a guest
May 27th, 2016
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. package obchallenge;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.sql.ResultSetMetaData;
  8. import java.sql.SQLException;
  9. import java.sql.Statement;
  10.  
  11. public class SQLChallengeExecutor extends AbstractChallengeExecutor {
  12.  
  13. @Override
  14. public boolean executeChallenge(String testId, String proposedSolution) {
  15. // Prepare output parameter
  16. boolean correct = true;
  17.  
  18. // Connection to database
  19. Connection connection = null;
  20. try {
  21. Class.forName("org.postgresql.Driver");
  22. connection = DriverManager.getConnection("jdbc:postgresql://" + Constants.DB_URL + ":"
  23. + Constants.DB_PORT + "/" + Constants.DB_SID, Constants.DB_USER, Constants.DB_PASSWORD);
  24.  
  25. // Get solutionQuery
  26. String getSolutionQuery = "SELECT solution_query FROM sql_challenge WHERE sql_challenge_id = ?";
  27. PreparedStatement statement = connection.prepareStatement(getSolutionQuery);
  28. statement.setString(1, testId);
  29. ResultSet resultSet = statement.executeQuery();
  30. resultSet.next();
  31. String solutionQuery = resultSet.getString(1);
  32.  
  33. // Execute incomingQuery
  34. Statement incomingStatement = connection.createStatement();
  35. ResultSet incomingQueryResultSet = incomingStatement.executeQuery(proposedSolution);
  36.  
  37. // Execute solutionQuery
  38. Statement solutionStatement = connection.createStatement();
  39. ResultSet solutionQueryResultSet = solutionStatement.executeQuery(solutionQuery);
  40.  
  41. // Compare results
  42. correct = compareResultSets(incomingQueryResultSet, solutionQueryResultSet);
  43.  
  44. resultSet.close();
  45. statement.close();
  46. } catch (Exception e) {
  47. e.printStackTrace();
  48. } finally {
  49. if (connection != null) {
  50. try {
  51. connection.close();
  52. } catch (SQLException e) {
  53. e.printStackTrace();
  54. }
  55. }
  56. }
  57. return correct;
  58. }
  59.  
  60. public boolean compareResultSets(ResultSet resultSet1, ResultSet resultSet2) throws SQLException {
  61. while (resultSet1.next()) {
  62. resultSet2.next();
  63. ResultSetMetaData resultSetMetaData = resultSet1.getMetaData();
  64. int count = resultSetMetaData.getColumnCount();
  65. for (int i = 1; i <= count; i++) {
  66. if (!resultSet1.getObject(i).equals(resultSet2.getObject(i))) {
  67. return false;
  68. }
  69. }
  70. }
  71. return true;
  72. }
  73. }
Add Comment
Please, Sign In to add comment