/*
   * (non-Javadoc)
   *
   * @see br.org.snic.snc.dao.UsuarioDAO#obterTodos()
   */
  public List<Usuario> selecionarTodos() throws IntegrationException {
    String sql =
        "SELECT u.CD_USUARIO as codigo, "
            + "       u.NM_SENHA as senha, "
            + "       u.NM_USUARIO as nome, "
            + "       u.FL_ATIVO as ativo,"
            + "       u.FL_TROCAR_SENHA as trocarSenha "
            + "  FROM USUARIO u";

    List<Usuario> usuarios = this.getJdbcTemplate().query(sql, new UsuarioMapper());

    sql =
        "SELECT gu.CD_GRUPO_ACESSO, "
            + "       g.NM_GRUPO_ACESSO "
            + "  FROM GRUPO_ACESSO_USUARIO gu inner join GRUPO_ACESSO g "
            + "       on gu.CD_GRUPO_ACESSO = g.CD_GRUPO_ACESSO "
            + " WHERE gu.CD_USUARIO = ?";

    for (Iterator<Usuario> iterator = usuarios.iterator(); iterator.hasNext(); ) {
      Usuario usuario = (Usuario) iterator.next();

      List<GrupoAcesso> grupos =
          this.getJdbcTemplate().query(sql, new GrupoAcessoMapper(), usuario.getCodigo());

      usuario.setGruposAcesso(grupos);
    }

    return usuarios;
  }
  public int alterarStatus(Usuario usuario) throws IntegrationException {
    String sql = "UPDATE USUARIO " + "SET FL_ATIVO = ? " + "WHERE CD_USUARIO = ?";

    int rows = getSimpleJdbcTemplate().update(sql, usuario.getAtivo(), usuario.getCodigo());

    return rows;
  }
  /*
   * (non-Javadoc)
   *
   * @see
   * br.org.snic.snc.dao.UsuarioDAO#selecionar(br.org.snic.domain.Usuario)
   */
  public Usuario selecionar(Usuario usuario) throws IntegrationException {
    String sql =
        "SELECT u.CD_USUARIO as codigo, "
            + "       u.NM_SENHA as senha, "
            + "       u.NM_USUARIO as nome, "
            + "       u.FL_ATIVO as ativo,"
            + "       u.FL_TROCAR_SENHA as trocarSenha "
            + "  FROM USUARIO u "
            + " WHERE u.CD_USUARIO = ? ";

    Usuario usuCons =
        this.getJdbcTemplate().queryForObject(sql, new UsuarioMapper(), usuario.getCodigo());

    sql =
        "SELECT gu.CD_GRUPO_ACESSO, "
            + "       g.NM_GRUPO_ACESSO "
            + "  FROM GRUPO_ACESSO_USUARIO gu inner join GRUPO_ACESSO g "
            + "       on gu.CD_GRUPO_ACESSO = g.CD_GRUPO_ACESSO "
            + " WHERE gu.CD_USUARIO = ?";

    List<GrupoAcesso> gruposAcesso =
        this.getJdbcTemplate().query(sql, new GrupoAcessoMapper(), usuCons.getCodigo());

    usuCons.setGruposAcesso(gruposAcesso);

    return usuCons;
  }
  public int incluir(Usuario usuario, GrupoAcesso grupoAcesso) throws IntegrationException {
    String sql = "INSERT INTO GRUPO_ACESSO_USUARIO(CD_GRUPO_ACESSO, CD_USUARIO) VALUES(?, ?)";

    int rows = this.getJdbcTemplate().update(sql, grupoAcesso.getCodigo(), usuario.getCodigo());

    return rows;
  }
    public Usuario mapRow(ResultSet rs, int rowNum) throws SQLException {

      Usuario usu = new Usuario();
      usu.setCodigo(rs.getString("codigo"));
      usu.setNome(rs.getString("nome"));
      usu.setSenha(rs.getString("senha"));
      usu.setAtivo(rs.getBoolean("ativo"));
      usu.setTrocarSenha(rs.getBoolean("trocarSenha"));

      return usu;
    }
 public int excluirGrupoAcessoPorUsuario(Usuario usuario) throws IntegrationException {
   String sql = "DELETE FROM GRUPO_ACESSO_USUARIO WHERE CD_USUARIO = ?";
   int rows = this.getJdbcTemplate().update(sql, usuario.getCodigo());
   return rows;
 }