private QConClass classConstraint() { if (i_constraints.size() != 1) { return null; } Constraint constr = singleConstraint(); if (constr.getClass() != QConClass.class) { return null; } return (QConClass) constr; }
/** * 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); }
/** * 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); }
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; }