package com.andreiolar.abms.server;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.andreiolar.abms.client.exception.MessagesNotFoundException;
import com.andreiolar.abms.client.rpc.DBGetConversationMessages;
import com.andreiolar.abms.shared.ConversationMessage;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
public class DBGetConversationMessagesImpl extends RemoteServiceServlet implements DBGetConversationMessages {
private static final long serialVersionUID = -4252711941791442575L;
@Override
public List<ConversationMessage> getConversationMessages(String id) throws Exception {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
List<ConversationMessage> messages = new ArrayList<ConversationMessage>();
try {
conn = MyConnection.getConnection();
try {
String q = "select * from conversation_reply where conv_id_fk=?";
stmt = conn.prepareStatement(q);
stmt.setInt(1, Integer.valueOf(id));
rs = stmt.executeQuery();
while (rs.next()) {
int messageId = rs.getInt("id");
String message = rs.getString("reply");
String username = rs.getString("username");
String date = rs.getString("date");
String q2 = "select gender from user_info where username=?";
PreparedStatement stmt2 = conn.prepareStatement(q2);
stmt2.setString(1, username);
ResultSet rs2 = stmt2.executeQuery();
if (rs2.next()) {
String gender = rs2.getString("gender");
ConversationMessage conversationMessage = new ConversationMessage(String.valueOf(messageId), username, gender, message, date);
messages.add(conversationMessage);
}
}
} catch (Exception e) {
throw new RuntimeException("Something went wrong: " + e.getMessage(), e);
} finally {
rs.close();
stmt.close();
}
} catch (Exception e) {
throw new RuntimeException("Something went wrong: " + e.getMessage(), e);
} finally {
conn.close();
}
if (messages.isEmpty()) {
throw new MessagesNotFoundException();
}
return messages;
}
}