package io.ebeaninternal.server.el;

import io.ebeaninternal.server.deploy.BeanProperty;

Used to parse expressions in queries (where, orderBy etc).

Maps an expression to deployment information such as the DB column and elPrefix/elPlaceHolder is used determine joins and set place holders for table alias'.

/** * Used to parse expressions in queries (where, orderBy etc). * <p> * Maps an expression to deployment information such as * the DB column and elPrefix/elPlaceHolder is used determine * joins and set place holders for table alias'. * </p> */
public interface ElPropertyDeploy {
This is the elPrefix for all root level properties.
/** * This is the elPrefix for all root level properties. */
String ROOT_ELPREFIX = "${}";
Return true if the property is a formula with a join clause.
/** * Return true if the property is a formula with a join clause. */
boolean containsFormulaWithJoin();
Return true if there is a property on the path that is a many property.
/** * Return true if there is a property on the path that is a many property. */
boolean containsMany();
Return true if there is a property is on the path after sinceProperty that is a 'many' property.
/** * Return true if there is a property is on the path after sinceProperty * that is a 'many' property. */
boolean containsManySince(String sinceProperty);
Return the prefix path of the property.

This is use to determine joins required to support this property.

/** * Return the prefix path of the property. * <p> * This is use to determine joins required to support * this property. * </p> */
String getElPrefix();
Return the place holder in the form of ${elPrefix}dbColumn.

The ${elPrefix} is replaced by the appropriate table alias.

/** * Return the place holder in the form of ${elPrefix}dbColumn. * <p> * The ${elPrefix} is replaced by the appropriate table alias. * </p> */
String getElPlaceholder(boolean encrypted);
Return the name of the property.
/** * Return the name of the property. */
String getName();
The ElPrefix plus name.
/** * The ElPrefix plus name. */
String getElName();
Return the deployment db column for this property.
/** * Return the deployment db column for this property. */
String getDbColumn();
Return the underlying bean property.
/** * Return the underlying bean property. */
BeanProperty getBeanProperty();
Return true if this is an aggregation property.
/** * Return true if this is an aggregation property. */
boolean isAggregation();
Return the fetch preference. This can be used to control which ToMany relationship is left as a 'join' and which get converted to query join.
/** * Return the fetch preference. This can be used to control which ToMany relationship * is left as a 'join' and which get converted to query join. */
int getFetchPreference(); }