Java tutorial
/* * 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()); } }