List of usage examples for com.liferay.portal.kernel.search QueryConfig getAttribute
public Serializable getAttribute(String name)
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; }