public String iniciarCadastro() {
    try {
      resetObj();

      turmaProfessor = new TurmaProfessor();
      turmaProfessor.setProfessor(new Professor());
      turmaProfessor.setTurma(new Turma());
      turmaProfessor.setDisciplinas(new ArrayList<DisciplinaTurmaProfessor>());

      disciplinasSelecionadas = null;
      disciplinas = new DisciplinaDataModel();
      disciplinas.setWrappedData(service.getAll(Disciplina.class));

      alteracaoAssociacaoProfessor = false;
    } catch (NegocioException e) {
      addMensagemErro(processaException(e));
    }
    setConfirmButton("Cadastrar");
    return getPaginaCadastro();
  }
  public String preAlterar() {
    if (ValidatorUtil.isEmpty(obj)) {
      addMensagemErro("O elemento selecionando não se encontra na base de dados.");
      resetObj();
      return null;
    }

    try {
      disciplinas = new DisciplinaDataModel();
      disciplinas.setWrappedData(service.getAll(Disciplina.class));
      obj.setProfessores(tpService.getByTurma(obj));
      obj.setProfessoresRemocao(new ArrayList<TurmaProfessor>());
      for (TurmaProfessor tp : obj.getProfessores()) {
        tp.setDisciplinas(
            tpService.getByExactField(
                DisciplinaTurmaProfessor.class, "turmaProfessor.id", tp.getId()));
      }
    } catch (NegocioException e) {
      addMensagemErro(processaException(e));
    }
    setConfirmButton("Alterar");
    return getPaginaCadastro();
  }