/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.search.query; import org.apache.commons.lang.StringUtils; import com.enonic.cms.core.content.category.CategoryAccessType; import com.enonic.cms.core.content.index.queryexpression.FieldExpr; import com.enonic.cms.core.search.IndexFieldnameNormalizer; import com.enonic.cms.core.search.builder.IndexFieldNameConstants; public class QueryFieldNameResolver extends IndexFieldNameConstants { public static String resolveQueryFieldName( final String name ) { return doNormalizeQueryFieldName( name ); } public static String resolveQueryFieldName( final FieldExpr expression ) { return doNormalizeQueryFieldName( expression.getPath() ); } public static String resolveOrderFieldName( final FieldExpr expression ) { return doNormalizeQueryFieldName( expression.getPath() ) + "." + ORDERBY_FIELDNAME_POSTFIX; } private static String doNormalizeQueryFieldName( final String fieldName ) { String normalizedFieldName = IndexFieldnameNormalizer.normalizeFieldName( fieldName ); if ( StringUtils.startsWith( normalizedFieldName, CONTENTDATA_PREFIX_ALIAS_FOR_BW_COMPATABILITY ) ) { normalizedFieldName = StringUtils.replaceOnce( normalizedFieldName, CONTENTDATA_PREFIX_ALIAS_FOR_BW_COMPATABILITY, CONTENTDATA_PREFIX ); } if ( StringUtils.startsWith( normalizedFieldName, ATTACHMENT_ALIAS_FOR_BW_COMPATABILITY ) ) { normalizedFieldName = StringUtils.replaceOnce( normalizedFieldName, ATTACHMENT_ALIAS_FOR_BW_COMPATABILITY, ATTACHMENT_FIELDNAME ); } return normalizedFieldName; } public static String getCategoryAccessTypeFieldName( final CategoryAccessType type ) { switch ( type ) { case READ: return CONTENT_ACCESS_READ_FIELDNAME; case ADMIN_BROWSE: return CONTENT_CATEGORY_ACCESS_BROWSE_FIELDNAME; case APPROVE: return CONTENT_CATEGORY_ACCESS_APPROVE_FIELDNAME; case CREATE: return CONTENT_ACCESS_UPDATE_FIELDNAME; case ADMINISTRATE: return CONTENT_CATEGORY_ACCESS_ADMINISTRATE_FIELDNAME; } throw new UnsupportedOperationException( "Unexpected CategoryAccessType: " + type.name() ); } }