private void process(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String userLogin = ((Usuario) req.getSession().getAttribute("user")).getEmail(); int codGrupo = Integer.parseInt(req.getParameter("grupo")); try { DaoFactory.createFactory(DaoFactory.DAO_BD) .createGrupoDao() .adicionaUsuario(codGrupo, userLogin); RequestDispatcher dispatcher = req.getRequestDispatcher("visualizarGrupo?grupo=" + codGrupo); dispatcher.forward(req, resp); } catch (FonteDeDadosException ex) { System.out.println(ex.getMessage()); } }
public class MensagemDAO implements MensagemDAOIF { private ConexaoIF con; private UsuarioDAOIF usuarioDao = DaoFactory.createFactory(DaoFactory.DAO_BD).createUsuarioDAO(); public void persiste(Mensagem mensagem) { PreparedStatement stat = null; try { con = new Conexao(); String sql = "INSERT INTO mensagem(descricao, remetente, destinatario, data)" + "VALUES (?, ?, ?, ?)"; stat = con.getConnection().prepareStatement(sql); stat.setString(1, mensagem.getDescricao()); stat.setString(2, mensagem.getRemetente().getEmail()); stat.setString(3, mensagem.getDestinatario().getEmail()); stat.setTimestamp(4, new java.sql.Timestamp(mensagem.getData().getTimeInMillis())); stat.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { con.closeAll(stat); } } public Mensagem localiza(BigInteger codigo) throws FonteDeDadosException { Statement stat = null; try { con = new Conexao(); stat = con.getConnection().createStatement(); String sql = "SELECT * FROM mensagem WHERE codigo=" + codigo + ""; ResultSet result = stat.executeQuery(sql); if (result.next()) return geraMensagem(result); else return null; } catch (SQLException e) { throw new FonteDeDadosException("Erro ao localizar mensagem!"); } finally { con.closeAll(stat); } } public List<Mensagem> localizaPorUsuarios(String usuario1, String usuario2) { ConexaoIF con = null; PreparedStatement stat = null; try { String sql = "Select * from mensagem where (remetente = ? or remetente = ?)" + "and (destinatario = ? or destinatario = ?) ORDER BY data DESC"; con = new Conexao(); stat = con.getConnection().prepareStatement(sql); stat.setString(1, usuario1); stat.setString(2, usuario2); stat.setString(3, usuario1); stat.setString(4, usuario2); return geraMensagens(stat.executeQuery()); } catch (Exception e) { e.printStackTrace(); } finally { con.closeAll(stat); } return null; } public List<Mensagem> localizaPorRemetente(String login) { ConexaoIF con = null; PreparedStatement stat = null; try { String sql = "Select * from mensagem where remetente ilike ?"; con = new Conexao(); stat = con.getConnection().prepareStatement(sql); stat.setString(1, login); return geraMensagens(stat.executeQuery()); } catch (Exception e) { e.printStackTrace(); } finally { con.closeAll(stat); } return null; } public List<Usuario> localizarParceiroConversa(String usuario) { ConexaoIF con = null; PreparedStatement stat = null; try { String sql = "Select remetente, destinatario FROM mensagem WHERE remetente = ? or destinatario = ?"; con = new Conexao(); stat = con.getConnection().prepareStatement(sql); stat.setString(1, usuario); stat.setString(2, usuario); return getParceiros(stat.executeQuery(), usuario); } catch (Exception e) { e.printStackTrace(); } finally { con.closeAll(stat); } return null; } private List<Usuario> getParceiros(ResultSet result, String usuario) { Set<String> emailUsuarios = new HashSet<>(); try { while (result.next()) { if (!result.getString("remetente").equals(usuario)) emailUsuarios.add(result.getString("remetente")); if (!result.getString("destinatario").equals(usuario)) emailUsuarios.add(result.getString("destinatario")); } List<Usuario> usuarios = new ArrayList<>(); for (String email : emailUsuarios) { usuarios.add(usuarioDao.localiza(email)); } return usuarios; } catch (SQLException e) { e.printStackTrace(); } return null; } public List<Mensagem> localizaPorDestinatario(String login) { ConexaoIF con = null; PreparedStatement stat = null; try { String sql = "Select * from mensagem where destinatario ilike ?"; con = new Conexao(); stat = con.getConnection().prepareStatement(sql); stat.setString(1, login); return geraMensagens(stat.executeQuery()); } catch (Exception e) { e.printStackTrace(); } finally { con.closeAll(stat); } return null; } private List<Mensagem> geraMensagens(ResultSet result) throws SQLException { List<Mensagem> mensagens = new ArrayList<>(); while (result.next()) { mensagens.add(geraMensagem(result)); } return mensagens; } private Mensagem geraMensagem(ResultSet result) throws SQLException { Mensagem msg = new Mensagem(); msg.setCodigo(new BigInteger(String.valueOf(result.getBigDecimal("codigo")))); msg.setDescricao(result.getString("descricao")); Usuario remetente = usuarioDao.localiza(result.getString("remetente")); Usuario destinatario = usuarioDao.localiza(result.getString("destinatario")); Calendar data = Calendar.getInstance(); data.setTimeInMillis(result.getTimestamp("data").getTime()); msg.setRemetente(remetente); msg.setDestinatario(destinatario); msg.setData(data); return msg; } public void exclui(BigInteger codigo) throws FonteDeDadosException { Statement stat = null; try { con = new Conexao(); String sql = "DELETE FROM mensagem WHERE codigo = " + codigo + ""; stat = con.getConnection().createStatement(); stat.executeUpdate(sql); } catch (SQLException e) { throw new FonteDeDadosException("N�o foi possivel excluir a mensagem!"); } finally { con.closeAll(stat); } } public void excluiTodosDoUsuario(String email) { PreparedStatement stat = null; try { con = new Conexao(); String sql = "Delete from mensagem where remetente = ? or destinatario = ?"; stat = con.getConnection().prepareStatement(sql); stat.setString(1, email); stat.setString(2, email); stat.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } finally { con.closeAll(stat); } } }