/**
   * Obtém os relacionamentos categoria/atributo para a categoria informada
   *
   * @param objCategoriaTalento Categoria de talento desejada
   * @return List Contendo os registros
   * @throws CDException se ocorrer algum erro relacionado ao negócio
   */
  public List obterCategoriaAtributosTalento(CategoriaTalento objCategoriaTalento)
      throws CDException {
    if (log.isDebugEnabled()) {
      log.debug("Entrada no metodo");
    }

    // Instancia DAO e obtém o registro pela chave
    CategoriaAtributoTalentoDAO objCategoriaAtributoTalentoDAO = new CategoriaAtributoTalentoDAO();
    List lstCategoriaAtributosTalento = null;
    try {
      lstCategoriaAtributosTalento =
          objCategoriaAtributoTalentoDAO.obterPorCategoriaTalento(objCategoriaTalento);
      objCategoriaAtributoTalentoDAO.inicializarAtributoTalento(lstCategoriaAtributosTalento);
    } catch (Exception daoe) {
      CDException.dispararExcecao(daoe);
    } finally {
      DAO.desconectar();
    }
    return lstCategoriaAtributosTalento;
  }
  private void verificarValoracoesObrigatorias(
      CategoriaTalento objCategoriaTalento, List lstAtributosTalentoValorados) throws CDException {
    try {
      // Declarações
      CategoriaAtributoTalentoDAO objCategoriaAtributoTalentoDAO =
          new CategoriaAtributoTalentoDAO();

      // Obtém categoria/atributos da categoria
      List lstCategoriaAtributosTalento =
          objCategoriaAtributoTalentoDAO.obterPorCategoriaTalento(objCategoriaTalento);

      // Verifica os atributos de talento obrigatórios
      Iterator itrCategoriaAtributosTalento = lstCategoriaAtributosTalento.iterator();
      while (itrCategoriaAtributosTalento.hasNext()) {
        // Obtém categoria/atributo atual e marca a presença como falsa
        CategoriaAtributoTalento objCategoriaAtributoTalento =
            (CategoriaAtributoTalento) itrCategoriaAtributosTalento.next();
        boolean blnPresente = false;
        boolean blnPreenchido = false;

        // Verifica o nome do atributo de talento
        String strNomeCampo;
        if (objCategoriaAtributoTalento.getApelido() == null
            || "".equals(objCategoriaAtributoTalento.getApelido())) {
          strNomeCampo = objCategoriaAtributoTalento.getAtributoTalento().getNome();
        } else {
          strNomeCampo = objCategoriaAtributoTalento.getApelido();
        }

        // Verifica se o atributo está presente e foi preenchido
        Iterator itrAtributosTalentoValorados = lstAtributosTalentoValorados.iterator();
        while (itrAtributosTalentoValorados.hasNext()) {
          AtributoTalentoValorado objAtributoTalentoValorado =
              (AtributoTalentoValorado) itrAtributosTalentoValorados.next();
          if (objCategoriaAtributoTalento
              .getIdentificador()
              .equals(
                  objAtributoTalentoValorado.getCategoriaAtributoTalento().getIdentificador())) {
            blnPresente = true;
            if (objAtributoTalentoValorado.getValoracao() != null
                && !"".equals(objAtributoTalentoValorado.getValoracao())) {
              blnPreenchido = true;
              break;
            }
          }
        }

        // Verifica se o atributo não está presente e é obrigatório
        if (!blnPreenchido
            && "S".equals(objCategoriaAtributoTalento.getIndicativoObrigatoriedade())) {
          // Se for obrigatório, dispara um erro
          throw new CDException("O atributo " + strNomeCampo + " é obrigatório");
        } else if (!blnPresente) {
          // Se não for obrigatório, cria valoração vazia e insere na lista
          AtributoTalentoValorado objAtributoTalentoValorado = new AtributoTalentoValorado();
          objAtributoTalentoValorado.setCategoriaAtributoTalento(objCategoriaAtributoTalento);
          objAtributoTalentoValorado.setValoracao("");
          lstAtributosTalentoValorados.add(objAtributoTalentoValorado);
        }
      }

    } catch (Exception daoe) {
      CDException.dispararExcecao(daoe);
    } finally {
      DAO.desconectar();
    }
  }