Example usage for com.liferay.portal.kernel.search BooleanClause getClause

List of usage examples for com.liferay.portal.kernel.search BooleanClause getClause

Introduction

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

Prototype

public T getClause();

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   w  w 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 a  va  2 s. c o 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.RepositorySearchQueryBuilderImpl.java

License:Open Source License

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

    try {//from w  w w . j a  v a  2 s.co  m
        BooleanQuery contextQuery = new BooleanQueryImpl();

        addContext(contextQuery, searchContext);

        BooleanQuery searchQuery = new BooleanQueryImpl();

        addSearchKeywords(searchQuery, searchContext);

        BooleanQuery fullQuery = new BooleanQueryImpl();

        if (contextQuery.hasClauses()) {
            fullQuery.add(contextQuery, BooleanClauseOccur.MUST);
        }

        if (searchQuery.hasClauses()) {
            fullQuery.add(searchQuery, BooleanClauseOccur.MUST);
        }

        BooleanClause<Query>[] booleanClauses = searchContext.getBooleanClauses();

        if (booleanClauses != null) {
            for (BooleanClause<Query> booleanClause : booleanClauses) {
                fullQuery.add(booleanClause.getClause(), booleanClause.getBooleanClauseOccur());
            }
        }

        fullQuery.setQueryConfig(searchContext.getQueryConfig());

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

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

License:Open Source License

protected boolean contains(Query query1, Query query2) {
    if (query1 instanceof BooleanQuery) {
        BooleanQuery booleanQuery = (BooleanQuery) query1;

        for (BooleanClause<Query> booleanClause : booleanQuery.clauses()) {
            if (contains(booleanClause.getClause(), query2)) {
                return true;
            }/*w w w  .  j  a va 2s  .  c o m*/
        }

        return false;
    } else if (query2 instanceof BooleanQuery) {
        BooleanQuery booleanQuery = (BooleanQuery) query2;

        for (BooleanClause<Query> booleanClause : booleanQuery.clauses()) {
            if (contains(query1, booleanClause.getClause())) {
                return true;
            }
        }

        return false;
    } else if ((query1 instanceof TermQuery) && (query2 instanceof TermQuery)) {

        TermQuery termQuery1 = (TermQuery) query1;

        QueryTerm queryTerm1 = termQuery1.getQueryTerm();

        String field1 = queryTerm1.getField();
        String value1 = queryTerm1.getValue();

        TermQuery termQuery2 = (TermQuery) query2;

        QueryTerm queryTerm2 = termQuery2.getQueryTerm();

        String field2 = queryTerm2.getField();
        String value2 = queryTerm2.getValue();

        if (field1.equals(field2) && value1.equals(value2)) {
            return true;
        }
    } else if ((query1 instanceof TermRangeQuery) && (query2 instanceof TermRangeQuery)) {

        TermRangeQuery termRangeQuery1 = (TermRangeQuery) query1;

        boolean includesLower1 = termRangeQuery1.includesLower();
        boolean includesUpper1 = termRangeQuery1.includesUpper();
        String lowerTerm1 = termRangeQuery1.getLowerTerm();
        String upperTerm1 = termRangeQuery1.getUpperTerm();

        TermRangeQuery termRangeQuery2 = (TermRangeQuery) query2;

        boolean includesLower2 = termRangeQuery2.includesLower();
        boolean includesUpper2 = termRangeQuery2.includesUpper();
        String lowerTerm2 = termRangeQuery2.getLowerTerm();
        String upperTerm2 = termRangeQuery2.getUpperTerm();

        if ((includesLower1 == includesLower2) && (includesUpper1 == includesUpper2)
                && lowerTerm1.equals(lowerTerm2) && upperTerm1.equals(upperTerm2)) {

            return true;
        }
    } else if ((query1 instanceof WildcardQuery) && (query2 instanceof WildcardQuery)) {

        WildcardQuery wildcardQuery1 = (WildcardQuery) query1;

        QueryTerm queryTerm1 = wildcardQuery1.getQueryTerm();

        String field1 = queryTerm1.getField();
        String value1 = queryTerm1.getValue();

        WildcardQuery wildcardQuery2 = (WildcardQuery) query2;

        QueryTerm queryTerm2 = wildcardQuery2.getQueryTerm();

        String field2 = queryTerm2.getField();
        String value2 = queryTerm2.getValue();

        if (field1.equals(field2) && value1.equals(value2)) {
            return true;
        }
    }

    return false;
}