Example usage for com.liferay.portal.kernel.search QueryTerm getField

List of usage examples for com.liferay.portal.kernel.search QueryTerm getField

Introduction

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

Prototype

public String getField();

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 va2  s.  c  om*/

            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 w  w  w .j  a  v a2 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.cmis.search.BaseCmisSearchQueryBuilder.java

License:Open Source License

private boolean _isContentFieldQueryTerm(QueryTerm queryTerm) {
    String fieldName = queryTerm.getField();

    return fieldName.equals(Field.CONTENT);
}

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;
            }//from   w w w.jav  a 2s.  com
        }

        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;
}