Example usage for com.liferay.portal.kernel.search QueryConfig getAttribute

List of usage examples for com.liferay.portal.kernel.search QueryConfig getAttribute

Introduction

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

Prototype

public Serializable getAttribute(String name) 

Source Link

Usage

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

License:Open Source License

@Override
public String buildQuery(SearchContext searchContext, Query query) throws SearchException {

    StringBundler sb = new StringBundler();

    sb.append("SELECT cmis:objectId");

    QueryConfig queryConfig = searchContext.getQueryConfig();

    if (queryConfig.isScoreEnabled()) {
        sb.append(", SCORE() AS HITS");
    }/*from  w  w  w .  j  av  a  2s.  c om*/

    sb.append(" FROM cmis:document");

    CMISDisjunction cmisDisjunction = new CMISDisjunction();

    if (_log.isDebugEnabled()) {
        _log.debug("Repository query support " + queryConfig.getAttribute("capabilityQuery"));
    }

    if (!isSupportsOnlyFullText(queryConfig)) {
        traversePropertiesQuery(cmisDisjunction, query, queryConfig);
    }

    if (isSupportsFullText(queryConfig)) {
        CMISContainsExpression cmisContainsExpression = new CMISContainsExpression();

        traverseContentQuery(cmisContainsExpression, query, queryConfig);

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

    if (!cmisDisjunction.isEmpty()) {
        sb.append(" WHERE ");
        sb.append(cmisDisjunction.toQueryFragment());
    }

    Sort[] sorts = searchContext.getSorts();

    if (queryConfig.isScoreEnabled() || ArrayUtil.isNotEmpty(sorts)) {
        sb.append(" ORDER BY ");
    }

    if (ArrayUtil.isNotEmpty(sorts)) {
        int i = 0;

        for (Sort sort : sorts) {
            String fieldName = sort.getFieldName();

            if (!isSupportedField(fieldName)) {
                continue;
            }

            if (i > 0) {
                sb.append(", ");
            }

            sb.append(getCmisField(fieldName));

            if (sort.isReverse()) {
                sb.append(" DESC");
            } else {
                sb.append(" ASC");
            }

            i++;
        }
    } else if (queryConfig.isScoreEnabled()) {
        sb.append("HITS DESC");
    }

    if (_log.isDebugEnabled()) {
        _log.debug("CMIS query " + sb);
    }

    return sb.toString();
}

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

License:Open Source License

protected boolean isSupportsFullText(QueryConfig queryConfig) {
    String capabilityQuery = (String) queryConfig.getAttribute("capabilityQuery");

    if (Validator.isNull(capabilityQuery)) {
        return false;
    }//from w  ww .  ja va 2s. c  om

    if (capabilityQuery.equals("bothcombined") || capabilityQuery.equals("fulltextonly")) {

        return true;
    }

    return false;
}

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

License:Open Source License

protected boolean isSupportsOnlyFullText(QueryConfig queryConfig) {
    String capabilityQuery = (String) queryConfig.getAttribute("capabilityQuery");

    if (Validator.isNull(capabilityQuery)) {
        return false;
    }/*from w  w w  . ja va 2  s. c om*/

    if (capabilityQuery.equals("fulltextonly")) {
        return true;
    }

    return false;
}

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

License:Open Source License

public static String formatParameterValue(String field, String value, boolean wildcard,
        QueryConfig queryConfig) {

    if (field.equals(Field.CREATE_DATE) || field.equals(Field.MODIFIED_DATE)) {

        try {/*from w w  w .  j  a  va2s.c  o  m*/
            DateFormat searchSimpleDateFormat = DateFormatFactoryUtil
                    .getSimpleDateFormat(_INDEX_DATE_FORMAT_PATTERN);

            Date date = searchSimpleDateFormat.parse(value);

            DateFormat cmisSimpleDateFormat = DateFormatFactoryUtil
                    .getSimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.000'Z'");

            value = cmisSimpleDateFormat.format(date);
        } catch (ParseException pe) {
            if (_log.isWarnEnabled()) {
                _log.warn("Unable to parse date " + value + " for field " + field);
            }
        }
    } else {
        String productName = StringPool.BLANK;

        if (queryConfig != null) {
            productName = (String) queryConfig.getAttribute("repositoryProductName");
        }

        if (Validator.isNotNull(productName) && productName.startsWith("Alfresco")) {

            value = StringUtil.replace(value, CharPool.APOSTROPHE, "\\'");
        } else {
            value = StringUtil.replace(value, new char[] { CharPool.APOSTROPHE, CharPool.UNDERLINE },
                    new String[] { "\\'", "\\_" });
        }

        if (wildcard) {
            value = StringUtil.replace(value, new char[] { CharPool.PERCENT, CharPool.STAR },
                    new String[] { "\\%", StringPool.PERCENT });
        }
    }

    return value;
}