/** * The map of defined filters. This is expected to be in format * where the filter names are the map keys, and the defined * conditions are the values. * * @param filters The map of defined filters. * @param dialect The sql dialect * @param functionRegistry The SQL function registry */ public FilterHelper(Map filters, Dialect dialect, SQLFunctionRegistry functionRegistry) { int filterCount = filters.size(); filterNames = new String[filterCount]; filterConditions = new String[filterCount]; Iterator iter = filters.entrySet().iterator(); filterCount = 0; while ( iter.hasNext() ) { final Map.Entry entry = (Map.Entry) iter.next(); filterNames[filterCount] = (String) entry.getKey(); filterConditions[filterCount] = Template.renderWhereStringTemplate( (String) entry.getValue(), FilterImpl.MARKER, dialect, functionRegistry ); filterConditions[filterCount] = StringHelper.replace( filterConditions[filterCount], ":", ":" + filterNames[filterCount] + "." ); filterCount++; } }
protected SQLFunction getFunction(CriteriaQuery criteriaQuery) { final SQLFunctionRegistry sqlFunctionRegistry = criteriaQuery.getFactory().getSqlFunctionRegistry(); final SQLFunction function = sqlFunctionRegistry.findSQLFunction( "count" ); if ( function == null ) { throw new HibernateException( "Unable to locate count function mapping" ); } return function; }
/** * Same functionality as {@link #renderWhereStringTemplate(String, String, Dialect, SQLFunctionRegistry)}, * except that a SQLFunctionRegistry is not provided (i.e., only the dialect-defined functions are * considered). This is only intended for use by the annotations project until the * many-to-many/map-key-from-target-table feature is pulled into core. * * @deprecated Only intended for annotations usage; use {@link #renderWhereStringTemplate(String, String, Dialect, SQLFunctionRegistry)} instead */ @Deprecated @SuppressWarnings({ "JavaDoc" }) public static String renderWhereStringTemplate(String sqlWhereString, String placeholder, Dialect dialect) { return renderWhereStringTemplate( sqlWhereString, placeholder, dialect, new SQLFunctionRegistry( dialect, java.util.Collections.<String, SQLFunction>emptyMap() ) ); }
/** * Performs order-by template rendering without {@link ColumnMapper column mapping}. An <tt>ORDER BY</tt> template * has all column references "qualified" with a placeholder identified by {@link Template#TEMPLATE} * * @param orderByFragment The order-by fragment to render. * @param dialect The SQL dialect being used. * @param functionRegistry The SQL function registry * * @return The rendered <tt>ORDER BY</tt> template. * * @deprecated Use {@link #translateOrderBy} instead */ @Deprecated public static String renderOrderByStringTemplate( String orderByFragment, Dialect dialect, SQLFunctionRegistry functionRegistry) { return renderOrderByStringTemplate( orderByFragment, NoOpColumnMapper.INSTANCE, null, dialect, functionRegistry ); }
public static String renderOrderByStringTemplate( String orderByFragment, final ColumnMapper columnMapper, final SessionFactoryImplementor sessionFactory, final Dialect dialect, final SQLFunctionRegistry functionRegistry) { return translateOrderBy( orderByFragment, columnMapper, sessionFactory, dialect, functionRegistry ).injectAliases( LEGACY_ORDER_BY_ALIAS_RESOLVER ); }
/** * Performs order-by template rendering allowing {@link ColumnMapper column mapping}. An <tt>ORDER BY</tt> template * has all column references "qualified" with a placeholder identified by {@link Template#TEMPLATE} which can later * be used to easily inject the SQL alias. * * @param orderByFragment The order-by fragment to render. * @param columnMapper The column mapping strategy to use. * @param sessionFactory The session factory. * @param dialect The SQL dialect being used. * @param functionRegistry The SQL function registry * * @return The rendered <tt>ORDER BY</tt> template. */ public static OrderByTranslation translateOrderBy( String orderByFragment, final ColumnMapper columnMapper, final SessionFactoryImplementor sessionFactory, final Dialect dialect, final SQLFunctionRegistry functionRegistry) { TranslationContext context = new TranslationContext() { public SessionFactoryImplementor getSessionFactory() { return sessionFactory; } public Dialect getDialect() { return dialect; } public SQLFunctionRegistry getSqlFunctionRegistry() { return functionRegistry; } public ColumnMapper getColumnMapper() { return columnMapper; } }; return OrderByFragmentTranslator.translate( context, orderByFragment ); }
private static boolean isFunctionOrKeyword(String lcToken, String nextToken, Dialect dialect, SQLFunctionRegistry functionRegistry) { return "(".equals(nextToken) || KEYWORDS.contains(lcToken) || isFunction(lcToken, nextToken, functionRegistry ) || dialect.getKeywords().contains(lcToken) || FUNCTION_KEYWORDS.contains(lcToken); }
private static boolean isFunction(String lcToken, String nextToken, SQLFunctionRegistry functionRegistry) { // checking for "(" is currently redundant because it is checked before getting here; // doing the check anyhow, in case that earlier check goes away; if ( "(".equals( nextToken ) ) { return true; } SQLFunction function = functionRegistry.findSQLFunction(lcToken); if ( function == null ) { // lcToken does not refer to a function return false; } // if function.hasParenthesesIfNoArguments() is true, then assume // lcToken is not a function (since it is not followed by '(') return ! function.hasParenthesesIfNoArguments(); }
private static boolean isFunctionOrKeyword(String lcToken, String nextToken, Dialect dialect, SQLFunctionRegistry functionRegistry) { return "(".equals(nextToken) || KEYWORDS.contains(lcToken) || functionRegistry.hasFunction(lcToken) || dialect.getKeywords().contains(lcToken) || FUNCTION_KEYWORDS.contains(lcToken); }
public SQLFunctionRegistry getSqlFunctionRegistry() { return sessionFactoryImplementor.getSqlFunctionRegistry(); }
@Override public String getTemplate(Dialect dialect, SQLFunctionRegistry functionRegistry) { return hasCustomRead() ? Template.renderWhereStringTemplate( customRead, dialect, functionRegistry ) : Template.TEMPLATE + '.' + getQuotedName( dialect ); }
@Override public String getTemplate(Dialect dialect, SQLFunctionRegistry functionRegistry) { return Template.renderWhereStringTemplate(formula, dialect, functionRegistry); }
public SQLFunctionRegistry getSqlFunctionRegistry() { return sqlFunctionRegistry; }
public static String renderWhereStringTemplate(String sqlWhereString, Dialect dialect, SQLFunctionRegistry functionRegistry) { return renderWhereStringTemplate(sqlWhereString, TEMPLATE, dialect, functionRegistry); }
public String getTemplate(Dialect dialect, SQLFunctionRegistry functionRegistry) { return getQuotedName(dialect); }
public String getTemplate(Dialect dialect, SQLFunctionRegistry functionRegistry) { return Template.renderWhereStringTemplate(formula, dialect, functionRegistry); }
/** * Retrieves the <tt>SQL function registry/tt> for this context. * * @return The SQL function registry. */ public SQLFunctionRegistry getSqlFunctionRegistry();
/** * Same functionality as {@link #renderWhereStringTemplate(String, String, Dialect, SQLFunctionRegistry)}, * except that a SQLFunctionRegistry is not provided (i.e., only the dialect-defined functions are * considered). This is only intended for use by the annotations project until the * many-to-many/map-key-from-target-table feature is pulled into core. * * @deprecated Only intended for annotations usage; use {@link #renderWhereStringTemplate(String, String, Dialect, SQLFunctionRegistry)} instead */ public static String renderWhereStringTemplate(String sqlWhereString, String placeholder, Dialect dialect) { return renderWhereStringTemplate( sqlWhereString, placeholder, dialect, new SQLFunctionRegistry( dialect, java.util.Collections.EMPTY_MAP ) ); }
public String getTemplate(Dialect dialect, SQLFunctionRegistry functionRegistry);
public SQLFunctionRegistry getSqlFunctionRegistry();