예제 #1
0
 private QConClass classConstraint() {
   if (i_constraints.size() != 1) {
     return null;
   }
   Constraint constr = singleConstraint();
   if (constr.getClass() != QConClass.class) {
     return null;
   }
   return (QConClass) constr;
 }
예제 #2
0
  /**
   * Realiza pesquisa de objetos com base em vários valores de um atributo específico (disjunção OR)
   * e ordenada pelo outro atributo informado.
   *
   * @param classe tipo do objeto pesquisado
   * @param nomeAtributoFiltro nome do atributo utilizado para filtrar a pesquisa
   * @param valoresAtributoFiltro conjunto de valores do atributo utilizados para filtrar a pesquisa
   * @param nomeAtributoOrdenacao o nome do atributo que será utilizado para ordenar a pesquisa
   * @param tipoOrdenacao o tipo de ordenação desejada ('1 - crescente' e '2 - decrescente')
   * @return a lista ordenada de objetos que correspondem aos valores do atributo utilizado para
   *     filtrar a pesquisa @
   */
  public List pesquisarOrdenado(
      Class classe,
      String nomeAtributoFiltro,
      List valoresAtributoFiltro,
      String nomeAtributoOrdenacao,
      int tipoOrdenacao) {

    // Configura os filtros/critérios de pesquisa:
    Query query = bd.query();
    query.constrain(classe);
    Constraint constr = query.descend(nomeAtributoFiltro).constrain(valoresAtributoFiltro.get(0));
    for (int i = 1; i < valoresAtributoFiltro.size(); i++) {
      constr = constr.or(query.descend(nomeAtributoFiltro).constrain(valoresAtributoFiltro.get(i)));
    }

    // Configura a ordenação do resultado da pesquisa:
    configurarOrdenacao(query, nomeAtributoOrdenacao, tipoOrdenacao);

    // Executa a pesquisa e retorna o resultado:
    return efetivarPesquisar(query);
  }
예제 #3
0
  /**
   * Realiza pesquisa de objetos com base em vários atributos e seus respectivos valores (conjunção
   * ou disjunção) e ordenada pelo outro atributo informado.
   *
   * @param classe tipo do objeto pesquisado
   * @param nomesAtributosFiltro conjunto de atributos utilizados para filtrar a pesquisa
   * @param valoresAtributosFiltro conjunto de valores dos atributos utilizados para filtrar a
   *     pesquisa
   * @param juncao o tipo de junção desejada entre os filtros ('1 - and' e '2 - or')
   * @param nomeAtributoOrdenacao o nome do atributo que será utilizado para ordenar a pesquisa
   * @param tipoOrdenacao o tipo de ordenação desejada ('1 - crescente' e '2 - decrescente')
   * @return a lista ordenada de objetos que correspondem aos valores dos atributos utilizados para
   *     filtrar a pesquisa @
   */
  public List pesquisarOrdenado(
      Class classe,
      List<String> nomesAtributosFiltro,
      List valoresAtributosFiltro,
      int juncao,
      String nomeAtributoOrdenacao,
      int tipoOrdenacao) {

    // Configura os filtros/critérios de pesquisa:
    Query query = bd.query();
    query.constrain(classe);
    Constraint constr =
        query.descend(nomesAtributosFiltro.get(0)).constrain(valoresAtributosFiltro.get(0));
    if (juncao == JUNCAO_AND) {
      for (int i = 1; i < valoresAtributosFiltro.size(); i++) {
        constr =
            constr.and(
                query
                    .descend(nomesAtributosFiltro.get(i))
                    .constrain(valoresAtributosFiltro.get(i)));
      }
    } else if (juncao == JUNCAO_OR) {
      for (int i = 1; i < valoresAtributosFiltro.size(); i++) {
        constr =
            constr.or(
                query
                    .descend(nomesAtributosFiltro.get(i))
                    .constrain(valoresAtributosFiltro.get(i)));
      }
    } else {
      throw new RuntimeException(
          "[pesquisar] Os tipos validos de junção são '1 - AND' e '2 - OR'.");
    }

    // Configura a ordenação do resultado da pesquisa:
    configurarOrdenacao(query, nomeAtributoOrdenacao, tipoOrdenacao);

    // Executa a pesquisa e retorna o resultado:
    return efetivarPesquisar(query);
  }
예제 #4
0
 private Constraint addInterfaceConstraint(ReflectClass claxx) {
   Collection4 classes = stream().classCollection().forInterface(claxx);
   if (classes.size() == 0) {
     QConClass qcc = new QConClass(_trans, null, null, claxx);
     addConstraint(qcc);
     return qcc;
   }
   Iterator4 i = classes.iterator();
   Constraint constr = null;
   while (i.moveNext()) {
     ClassMetadata classMetadata = (ClassMetadata) i.current();
     ReflectClass classMetadataClaxx = classMetadata.classReflector();
     if (classMetadataClaxx != null) {
       if (!classMetadataClaxx.isInterface()) {
         if (constr == null) {
           constr = constrain(classMetadataClaxx);
         } else {
           constr = constr.or(constrain(classMetadata.classReflector()));
         }
       }
     }
   }
   return constr;
 }