package com.rava.data;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import com.rava.model.Answer;
public class ElectionAnswerDP {
public static final String TABLE_NAME = "ElectionAnswers";
public static final String ELECTION_ID = "electId";
public static final String ANSWER_ID = "answerId";
public static final String ANSWER = "answer";
public static final String NUMBER_OF_VOTES = "numberOfVotes";
public static ArrayList<Answer> getElectionAnswers(int elId) {
ArrayList<Answer> answers = new ArrayList<Answer>();
Connection con = null;
try {
con = SqlDataProvider.getInstance().getConnection();
String sql = "select * from " + TABLE_NAME + " where "
+ ELECTION_ID + " = ? order by " + ANSWER_ID;
PreparedStatement statement = con.prepareStatement(sql);
statement.setInt(1, elId);
ResultSet rs = statement.executeQuery();
while (rs.next()) {
Answer ans = new Answer(rs.getInt(ANSWER_ID),
rs.getString(ANSWER), rs.getInt(NUMBER_OF_VOTES));
answers.add(ans);
}
rs.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (con != null) {
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return answers;
}
public static void insertAnswer(int elId, Answer answer) {
Connection con = null;
try {
con = SqlDataProvider.getInstance().getConnection();
String sql = "insert into " + TABLE_NAME + "(" + ELECTION_ID + ","
+ ANSWER_ID + "," + ANSWER + ") values(?,?,?)";
PreparedStatement statement = con.prepareStatement(sql);
statement.setInt(1, elId);
statement.setInt(2, answer.getId());
statement.setString(3, answer.getAnswer());
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (con != null) {
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return;
}
public static void removeAnswer(int elId, Answer answer) {
Connection con = null;
try {
con = SqlDataProvider.getInstance().getConnection();
String sql = "delete from " + TABLE_NAME + " where " + ELECTION_ID
+ " = ? + and " + ANSWER_ID + " = ?";
PreparedStatement statement = con.prepareStatement(sql);
statement.setInt(1, elId);
statement.setInt(2, answer.getId());
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (con != null) {
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return;
}
public static void insertAnswers(int elId, ArrayList<Answer> answers) {
Connection con = null;
try {
con = SqlDataProvider.getInstance().getConnection();
con.setAutoCommit(false);
String deleteSql = "delete from " + TABLE_NAME + " where "
+ ELECTION_ID + " = ?";
PreparedStatement delStat = con.prepareStatement(deleteSql);
delStat.setInt(1, elId);
delStat.executeUpdate();
String sql = "insert into " + TABLE_NAME + "(" + ELECTION_ID + ","
+ ANSWER_ID + "," + ANSWER + "," + NUMBER_OF_VOTES
+ ") values(?,?,?,?)";
PreparedStatement statement = con.prepareStatement(sql);
statement.setInt(1, elId);
for (Answer ans : answers) {
statement.setInt(2, ans.getId());
statement.setString(3, ans.getAnswer());
statement.setInt(4, ans.getNumberOfVotes());
statement.executeUpdate();
}
con.commit();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (con != null) {
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return;
}
}