package com.andreiolar.abms.server;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.LinkedHashMap;
import java.util.Map;
import com.andreiolar.abms.client.rpc.DBGetVotingResults;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
public class DBGetVotingResultsImpl extends RemoteServiceServlet implements DBGetVotingResults {
private static final long serialVersionUID = 7161068729668304322L;
@Override
public Map<String, Number> getVotingResults(String voteId, boolean all) throws Exception {
Map<String, Number> results = new LinkedHashMap<String, Number>();
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = MyConnection.getConnection();
try {
String q = "select vote_option, number_of_votes from votes where active='false' and vote_id=?";
if (all) {
q = "select vote_option, number_of_votes from votes where vote_id=?";
}
stmt = conn.prepareStatement(q);
stmt.setInt(1, Integer.parseInt(voteId));
rs = stmt.executeQuery();
while (rs.next()) {
String voteOption = rs.getString("vote_option");
Integer numberOfVotes = rs.getInt("number_of_votes");
results.put(voteOption, numberOfVotes);
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
rs.close();
stmt.close();
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
conn.close();
}
if (results == null || results.isEmpty()) {
throw new Exception("Error getting voting details for voting session nr: " + voteId);
}
return results;
}
}