public String createEdit(Curso curso) {

    if (curso == null) {

      // Curso ainda não criado.
      GenericBean.resetSessionScopedBean("editarCursoBean");
      GenericBean.sendRedirect(PathRedirect.cadastrarCurso);

    } else {

      Response response = service.consultarCurso(curso.getIdCurso());

      // Código de resposta do serviço.
      int statusCode = response.getStatus();

      if (statusCode == HttpStatus.SC_OK) {

        // Http Code: 200. Resposta para cadastro realizado com sucesso.
        Curso cursoResponse = response.readEntity(Curso.class);

        // Curso encontrado.
        this.curso = cursoResponse;

      } else {
        // Http Code: 404. Curso inexistente.
        Erro erro = response.readEntity(Erro.class);

        GenericBean.setMessage("erro.cursoInexistente", FacesMessage.SEVERITY_ERROR);
      }
    }

    return PathRedirect.cadastrarCurso;
  }
  public void save() {

    Response response = null;

    if (curso.getIdCurso() == CURSO_NAO_CADASTRADO) {

      PessoaBean pessoaBean = (PessoaBean) GenericBean.getSessionValue("pessoaBean");
      this.curso.getGestor().setPessoaId(pessoaBean.getPessoaId());
      response = service.cadastrarCurso(curso);

    } else {

      response = service.editarCurso(curso);
    }

    int statusCode = response.getStatus();

    if (statusCode == HttpStatus.SC_OK) {

      GenericBean.setMessage("info.sucessoCadastroCurso", FacesMessage.SEVERITY_INFO);
      GenericBean.resetSessionScopedBean("editarCursoBean");

    } else {

      // Http Code: 304. Não modificado.
      Erro erro = response.readEntity(Erro.class);

      GenericBean.setMessage("erro.cadastroCurso", FacesMessage.SEVERITY_ERROR);
    }
  }
  /**
   * Detalhar o curso selecionado.
   *
   * @param curso
   * @return
   */
  public void detalharCurso(Curso curso) {

    GenericBean.resetSessionScopedBean("editarCursoBean");

    EditarCursoBean editarCursoBean = new EditarCursoBean(curso);
    GenericBean.setSessionValue("editarCursoBean", editarCursoBean);

    GenericBean.sendRedirect(PathRedirect.exibirCurso);
  }
  /**
   * Adicionar um item vazio ao componente de seleção
   *
   * @param types
   */
  public static List<SelectItem> initSelectOneItem() {

    List<SelectItem> types = new ArrayList<SelectItem>();

    types.add(new SelectItem(null, GenericBean.message("selectOne")));

    return types;
  }
  public void detalharInstituicao(InstituicaoFinanciadora instituicaoFinanciadora) {

    EditarInstituicaoFinanciadoraBean editarInstituicaoFinanciadoraBean =
        new EditarInstituicaoFinanciadoraBean(instituicaoFinanciadora);
    editarInstituicaoFinanciadoraBean.resetSession(editarInstituicaoFinanciadoraBean);

    GenericBean.sendRedirect(PathRedirect.exibirInstituicaoFinanciadora);
  }