Java tutorial
/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.search.facet.builder; import java.util.regex.Pattern; import com.google.common.base.Strings; import com.enonic.cms.core.search.facet.model.FacetOrderBy; import com.enonic.cms.core.search.query.QueryField; import com.enonic.cms.core.search.query.QueryFieldNameResolver; abstract class AbstractElasticsearchFacetBuilder { protected String createQueryFieldName(final String field) { return QueryFieldNameResolver.resolveQueryFieldName(field); } protected String createDateFieldName(String fieldName) { QueryField queryField = new QueryField(createQueryFieldName(fieldName)); return queryField.getFieldNameForDateQueries(); } protected String createNumericFieldName(String fieldName) { QueryField queryField = new QueryField(createQueryFieldName(fieldName)); return queryField.getFieldNameForNumericQueries(); } public enum RegExpFlags { CASE_INSENSITIVE(Pattern.CASE_INSENSITIVE), MULTILINE(Pattern.MULTILINE), DOTALL( Pattern.DOTALL), UNICODE_CASE(Pattern.UNICODE_CASE), CANON_EQ(Pattern.CANON_EQ), UNIX_LINES( Pattern.UNIX_LINES), LITERAL(Pattern.LITERAL), COMMENTS(Pattern.COMMENTS); int value; private RegExpFlags(final int value) { this.value = value; } public int getValue() { return value; } } protected static String[] getCommaDelimitedStringAsArraySkipWhitespaces(String commaSeparatedString) { if (Strings.isNullOrEmpty(commaSeparatedString)) { return null; } return commaSeparatedString.split(",\\s*"); } protected String createElasticsearchOrderByString(FacetOrderBy facetOrderBy) { if (facetOrderBy == null) { return null; } StringBuilder builder = new StringBuilder(); appendDirection(facetOrderBy, builder); String orderbyESStringValue = translateToEsSortValues(facetOrderBy); builder.append(orderbyESStringValue); return builder.toString(); } private void appendDirection(final FacetOrderBy facetOrderBy, final StringBuilder builder) { if (facetOrderBy.getDirection() != null && facetOrderBy.getDirection().equals(FacetOrderBy.Direction.ASC)) { builder.append("reverse_"); } } private String translateToEsSortValues(final FacetOrderBy facetOrderBy) { String orderbyESStringValue = ""; final FacetOrderBy.Value value = facetOrderBy.getValue(); switch (value) { case HITS: orderbyESStringValue = "count"; break; case SUM: orderbyESStringValue = "total"; break; default: orderbyESStringValue = value.toString(); } return orderbyESStringValue; } }