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.rpc.DBGetAllSuggestions; import com.andreiolar.abms.shared.UserInfo; import com.google.gwt.user.server.rpc.RemoteServiceServlet; public class DBGetAllSuggestionsImpl extends RemoteServiceServlet implements DBGetAllSuggestions { private static final long serialVersionUID = 1568963589542032937L; @Override public List<String> getAllSuggestions(UserInfo userInfo) throws Exception { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; List<String> suggestions = new ArrayList<String>(); try { conn = MyConnection.getConnection(); try { String q = "select * from conversation where (user_one=? or user_two=?)" + " and (select deleted from deleted_conversations where username=? and id=conversation.id)=? order by id desc"; stmt = conn.prepareStatement(q); stmt.setString(1, userInfo.getUsername()); stmt.setString(2, userInfo.getUsername()); stmt.setString(3, userInfo.getUsername()); stmt.setBoolean(4, false); rs = stmt.executeQuery(); while (rs.next()) { int id = rs.getInt("id"); String source = rs.getString("user_one"); String destination = rs.getString("user_two"); String subject = rs.getString("subject"); String date = rs.getString("date"); StringBuilder sb = new StringBuilder(); sb.append(id); sb.append(" | "); String convWith = source.equals(userInfo.getUsername()) ? destination : source; sb.append(convWith); sb.append(" | "); sb.append(subject); sb.append(" | "); sb.append(date); suggestions.add(sb.toString()); } } catch (Exception ex) { ex.printStackTrace(); } finally { rs.close(); stmt.close(); } } catch (Exception ex) { ex.printStackTrace(); } finally { conn.close(); } if (suggestions.isEmpty()) { throw new Exception("Sorry! No conversations found"); } return suggestions; } }