Example usage for com.liferay.portal.kernel.search BooleanClauseOccur MUST_NOT

List of usage examples for com.liferay.portal.kernel.search BooleanClauseOccur MUST_NOT

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.search BooleanClauseOccur MUST_NOT.

Prototype

BooleanClauseOccur MUST_NOT

To view the source code for com.liferay.portal.kernel.search BooleanClauseOccur MUST_NOT.

Click Source Link

Usage

From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilder.java

License:Open Source License

protected void traverseContentQuery(CMISJunction cmisJunction, Query query, QueryConfig queryConfig)
        throws SearchException {

    if (query instanceof BooleanQuery) {
        BooleanQuery booleanQuery = (BooleanQuery) query;

        List<BooleanClause<Query>> booleanClauses = booleanQuery.clauses();

        CMISFullTextConjunction anyCMISConjunction = new CMISFullTextConjunction();
        CMISDisjunction cmisDisjunction = new CMISDisjunction();
        CMISFullTextConjunction notCMISConjunction = new CMISFullTextConjunction();

        for (BooleanClause<Query> booleanClause : booleanClauses) {
            CMISJunction currentCMISJunction = cmisDisjunction;

            BooleanClauseOccur booleanClauseOccur = booleanClause.getBooleanClauseOccur();

            if (booleanClauseOccur.equals(BooleanClauseOccur.MUST)) {
                currentCMISJunction = anyCMISConjunction;
            } else if (booleanClauseOccur.equals(BooleanClauseOccur.MUST_NOT)) {

                currentCMISJunction = notCMISConjunction;
            }/*from ww  w.j  a  va 2  s.com*/

            Query booleanClauseQuery = booleanClause.getClause();

            traverseContentQuery(currentCMISJunction, booleanClauseQuery, queryConfig);
        }

        if (!anyCMISConjunction.isEmpty()) {
            cmisJunction.add(anyCMISConjunction);
        }

        if (!cmisDisjunction.isEmpty()) {
            cmisJunction.add(cmisDisjunction);
        }

        if (!notCMISConjunction.isEmpty()) {
            CMISContainsNotExpression cmisContainsNotExpression = new CMISContainsNotExpression(
                    notCMISConjunction);

            cmisJunction.add(cmisContainsNotExpression);
        }
    } else if (query instanceof TermQuery) {
        TermQuery termQuery = (TermQuery) query;

        QueryTerm queryTerm = termQuery.getQueryTerm();

        if (!_isContentFieldQueryTerm(queryTerm)) {
            return;
        }

        String field = queryTerm.getField();
        String value = queryTerm.getValue();

        value = CMISParameterValueUtil.formatParameterValue(field, value, false, queryConfig);

        CMISContainsValueExpression cmisContainsValueExpression = new CMISContainsValueExpression(value);

        cmisJunction.add(cmisContainsValueExpression);
    } else if (query instanceof WildcardQuery) {
        WildcardQuery wildcardQuery = (WildcardQuery) query;

        QueryTerm queryTerm = wildcardQuery.getQueryTerm();

        if (!_isContentFieldQueryTerm(queryTerm)) {
            return;
        }

        String value = queryTerm.getValue();

        String[] terms = value.split(_STAR_PATTERN);

        CMISConjunction cmisConjunction = new CMISConjunction();

        for (String term : terms) {
            if (Validator.isNotNull(term)) {
                CMISContainsValueExpression containsValueExpression = new CMISContainsValueExpression(term);

                cmisConjunction.add(containsValueExpression);
            }
        }

        cmisJunction.add(cmisConjunction);
    } else if (query instanceof TermRangeQuery) {
        return;
    }
}

From source file:com.liferay.document.library.repository.cmis.search.BaseCmisSearchQueryBuilder.java

License:Open Source License

protected void traversePropertiesQuery(CMISJunction cmisJunction, Query query, QueryConfig queryConfig)
        throws SearchException {

    if (query instanceof BooleanQuery) {
        BooleanQuery booleanQuery = (BooleanQuery) query;

        List<BooleanClause<Query>> booleanClauses = booleanQuery.clauses();

        CMISConjunction anyCMISConjunction = new CMISConjunction();
        CMISDisjunction cmisDisjunction = new CMISDisjunction();
        CMISConjunction notCMISConjunction = new CMISConjunction();

        for (BooleanClause<Query> booleanClause : booleanClauses) {
            CMISJunction currentCMISJunction = cmisDisjunction;

            BooleanClauseOccur booleanClauseOccur = booleanClause.getBooleanClauseOccur();

            if (booleanClauseOccur.equals(BooleanClauseOccur.MUST)) {
                currentCMISJunction = anyCMISConjunction;
            } else if (booleanClauseOccur.equals(BooleanClauseOccur.MUST_NOT)) {

                currentCMISJunction = notCMISConjunction;
            }//from ww w . j av a2s .co  m

            Query booleanClauseQuery = booleanClause.getClause();

            traversePropertiesQuery(currentCMISJunction, booleanClauseQuery, queryConfig);
        }

        if (!anyCMISConjunction.isEmpty()) {
            cmisJunction.add(anyCMISConjunction);
        }

        if (!cmisDisjunction.isEmpty()) {
            cmisJunction.add(cmisDisjunction);
        }

        if (!notCMISConjunction.isEmpty()) {
            cmisJunction.add(new CMISNotExpression(notCMISConjunction));
        }
    } else if (query instanceof MatchQuery) {
        MatchQuery matchQuery = (MatchQuery) query;

        if (!isSupportedField(matchQuery.getField())) {
            return;
        }

        CMISCriterion cmisCriterion = buildFieldExpression(matchQuery.getField(), matchQuery.getValue(),
                CMISSimpleExpressionOperator.EQ, queryConfig);

        if (cmisCriterion != null) {
            cmisJunction.add(cmisCriterion);
        }
    } else if (query instanceof TermQuery) {
        TermQuery termQuery = (TermQuery) query;

        QueryTerm queryTerm = termQuery.getQueryTerm();

        if (!isSupportedField(queryTerm.getField())) {
            return;
        }

        CMISCriterion cmisCriterion = buildFieldExpression(queryTerm.getField(), queryTerm.getValue(),
                CMISSimpleExpressionOperator.EQ, queryConfig);

        if (cmisCriterion != null) {
            cmisJunction.add(cmisCriterion);
        }
    } else if (query instanceof TermRangeQuery) {
        TermRangeQuery termRangeQuery = (TermRangeQuery) query;

        if (!isSupportedField(termRangeQuery.getField())) {
            return;
        }

        String fieldName = termRangeQuery.getField();

        String cmisField = getCmisField(fieldName);
        String cmisLowerTerm = CMISParameterValueUtil.formatParameterValue(fieldName,
                termRangeQuery.getLowerTerm(), false, queryConfig);
        String cmisUpperTerm = CMISParameterValueUtil.formatParameterValue(fieldName,
                termRangeQuery.getUpperTerm(), false, queryConfig);

        CMISCriterion cmisCriterion = new CMISBetweenExpression(cmisField, cmisLowerTerm, cmisUpperTerm,
                termRangeQuery.includesLower(), termRangeQuery.includesUpper());

        cmisJunction.add(cmisCriterion);
    } else if (query instanceof WildcardQuery) {
        WildcardQuery wildcardQuery = (WildcardQuery) query;

        QueryTerm queryTerm = wildcardQuery.getQueryTerm();

        if (!isSupportedField(queryTerm.getField())) {
            return;
        }

        CMISCriterion cmisCriterion = buildFieldExpression(queryTerm.getField(), queryTerm.getValue(),
                CMISSimpleExpressionOperator.LIKE, queryConfig);

        if (cmisCriterion != null) {
            cmisJunction.add(cmisCriterion);
        }
    }
}

From source file:com.liferay.document.library.repository.search.internal.LuceneRepositorySearchQueryTermBuilder.java

License:Open Source License

protected org.apache.lucene.search.BooleanClause.Occur getBooleanClauseOccur(BooleanClauseOccur occur) {

    if (occur.equals(BooleanClauseOccur.MUST)) {
        return org.apache.lucene.search.BooleanClause.Occur.MUST;
    } else if (occur.equals(BooleanClauseOccur.MUST_NOT)) {
        return org.apache.lucene.search.BooleanClause.Occur.MUST_NOT;
    }//w  ww . j  a v a2s .com

    return org.apache.lucene.search.BooleanClause.Occur.SHOULD;
}

From source file:com.liferay.document.library.repository.search.internal.LuceneRepositorySearchQueryTermBuilder.java

License:Open Source License

protected BooleanClauseOccur getBooleanClauseOccur(org.apache.lucene.search.BooleanClause.Occur occur) {

    if (occur.equals(org.apache.lucene.search.BooleanClause.Occur.MUST)) {
        return BooleanClauseOccur.MUST;
    } else if (occur.equals(org.apache.lucene.search.BooleanClause.Occur.MUST_NOT)) {

        return BooleanClauseOccur.MUST_NOT;
    }//from w w w  .  ja v a 2 s . com

    return BooleanClauseOccur.SHOULD;
}

From source file:com.liferay.trash.internal.search.TrashIndexer.java

License:Open Source License

@Override
public BooleanQuery getFullQuery(SearchContext searchContext) throws SearchException {

    try {/*from   w ww. j a v a2s .  c  om*/
        BooleanFilter fullQueryBooleanFilter = new BooleanFilter();

        fullQueryBooleanFilter.addRequiredTerm(Field.COMPANY_ID, searchContext.getCompanyId());

        List<TrashHandler> trashHandlers = TrashHandlerRegistryUtil.getTrashHandlers();

        for (TrashHandler trashHandler : trashHandlers) {
            Filter filter = trashHandler.getExcludeFilter(searchContext);

            if (filter != null) {
                fullQueryBooleanFilter.add(filter, BooleanClauseOccur.MUST_NOT);
            }

            processTrashHandlerExcludeQuery(searchContext, fullQueryBooleanFilter, trashHandler);
        }

        long[] groupIds = searchContext.getGroupIds();

        if (ArrayUtil.isNotEmpty(groupIds)) {
            TermsFilter groupTermsFilter = new TermsFilter(Field.GROUP_ID);

            groupTermsFilter.addValues(ArrayUtil.toStringArray(groupIds));

            fullQueryBooleanFilter.add(groupTermsFilter, BooleanClauseOccur.MUST);
        }

        fullQueryBooleanFilter.addRequiredTerm(Field.STATUS, WorkflowConstants.STATUS_IN_TRASH);

        BooleanQuery fullQuery = createFullQuery(fullQueryBooleanFilter, searchContext);

        return fullQuery;
    } catch (SearchException se) {
        throw se;
    } catch (Exception e) {
        throw new SearchException(e);
    }
}

From source file:com.liferay.trash.internal.search.TrashIndexer.java

License:Open Source License

/**
 * @deprecated As of 1.0.0, added strictly to support backwards
 *             compatibility of {@link//from   w  w w  .j  av a2  s .  c  o  m
 *             TrashHandler#getExcludeQuery(SearchContext)}
 */
@Deprecated
protected void processTrashHandlerExcludeQuery(SearchContext searchContext,
        BooleanFilter fullQueryBooleanFilter, TrashHandler trashHandler) {

    Query query = trashHandler.getExcludeQuery(searchContext);

    if (query != null) {
        fullQueryBooleanFilter.add(new QueryFilter(query), BooleanClauseOccur.MUST_NOT);
    }
}