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());
   }
 }
예제 #2
0
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);
    }
  }
}