View Javadoc

1   package sk.stuba.fiit.foo07.genex.dao;
2   
3   import java.sql.Connection;
4   import java.sql.PreparedStatement;
5   import java.sql.ResultSet;
6   import java.sql.SQLException;
7   import java.util.ArrayList;
8   
9   import sk.stuba.fiit.foo07.genex.beans.QuestionPoints;
10  import sk.stuba.fiit.foo07.genex.exceptions.QuestionPointsExistsException;
11  
12  public class QuestionPointsDaoDerby extends BasicDao implements
13          QuestionPointsDao {
14  
15      private static final String sqlAddQuestionPoints = "INSERT INTO TESTQUESTION(Points, \"Order\", testID, questionID) VALUES(?, ?, ?, ?)";
16      private static final String sqlGetQuestionsPointsByTestID = "SELECT questionID, Points FROM TestQuestion WHERE testID = ? ORDER BY \"Order\" ASC";
17      private static final String sqlUpdateQuestionPoints = "UPDATE TESTQUESTION SET Points = ?, \"Order\" =? WHERE testID = ? AND questionID = ?";
18  
19      PreparedStatement st = null;
20      ResultSet rs = null;
21  
22      public QuestionPointsDaoDerby(Connection con) {
23          super(con);
24      }
25  
26      @Override
27      public void addQuestionsPoints(Integer testID, ArrayList<QuestionPoints> qps)
28              throws QuestionPointsExistsException, SQLException {
29          try {
30              int order = 0;
31              st = con.prepareStatement(sqlAddQuestionPoints);
32              for (QuestionPoints qp : qps) {
33                  st.setFloat(1, qp.getPoints());
34                  st.setInt(2, order);
35                  st.setInt(3, testID);
36                  st.setInt(4, qp.getQuestionId());
37                  st.executeUpdate();
38                  order++;
39              }
40          } catch (SQLException e) {
41              if (e.getSQLState().equals("23505")) {
42                  throw new QuestionPointsExistsException();
43              } else
44                  throw e;
45          }
46  
47      }
48  
49      @Override
50      public ArrayList<QuestionPoints> getQuestionPointsByTestID(Integer testID)
51              throws SQLException {
52          ArrayList<QuestionPoints> arr = null;
53          try {
54              st = con.prepareStatement(sqlGetQuestionsPointsByTestID,
55                      ResultSet.TYPE_SCROLL_INSENSITIVE,
56                      ResultSet.CONCUR_UPDATABLE);
57              st.setInt(1, testID);
58  
59              rs = st.executeQuery();
60              rs.last();
61              arr = new ArrayList<QuestionPoints>(rs.getRow());
62              rs.beforeFirst();
63  
64              while (rs.next()) {
65                  arr.add(new QuestionPoints(rs.getInt("questionID"), rs
66                          .getFloat("Points")));
67              }
68              rs.close();
69              return arr;
70          } catch (SQLException e) {
71              st = null;
72              throw e;
73          }
74      }
75  
76      @Override
77      public void updateQuestionPoints(Integer testID,
78              ArrayList<QuestionPoints> qps) throws SQLException {
79          int order = 0;
80          st = con.prepareStatement(sqlUpdateQuestionPoints);
81          st.setInt(3, testID);
82          for (QuestionPoints qp : qps) {
83              st.setFloat(1, qp.getPoints());
84              st.setInt(2, order++);
85              st.setInt(4, qp.getQuestionId());
86              st.executeUpdate();
87          }
88          st = null;
89      }
90  
91  }