mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
198 lines
4.4 KiB
Java
198 lines
4.4 KiB
Java
package com.avaje.ebeaninternal.server.deploy;
|
|
|
|
import com.avaje.ebean.bean.EntityBean;
|
|
import com.avaje.ebean.text.StringFormatter;
|
|
import com.avaje.ebean.text.StringParser;
|
|
import com.avaje.ebeaninternal.server.el.ElPropertyValue;
|
|
|
|
/**
|
|
* Used to evaluate imported foreign keys so as to avoid unnecessary joins.
|
|
*/
|
|
public final class BeanFkeyProperty implements ElPropertyValue {
|
|
|
|
private final String placeHolder;
|
|
private final String prefix;
|
|
private final String name;
|
|
private final String dbColumn;
|
|
private final boolean containsMany;
|
|
|
|
private int deployOrder;
|
|
|
|
public BeanFkeyProperty(String prefix, String name, String dbColumn, int deployOrder) {
|
|
this(prefix, name, dbColumn, deployOrder, false);
|
|
}
|
|
|
|
private BeanFkeyProperty(String prefix, String name, String dbColumn, int deployOrder, boolean containsMany) {
|
|
this.prefix = prefix;
|
|
this.name = name;
|
|
this.dbColumn = dbColumn;
|
|
this.deployOrder = deployOrder;
|
|
this.containsMany = containsMany;
|
|
this.placeHolder = calcPlaceHolder(prefix, dbColumn);
|
|
}
|
|
|
|
public int getDeployOrder() {
|
|
return deployOrder;
|
|
}
|
|
|
|
private String calcPlaceHolder(String prefix, String dbColumn) {
|
|
if (prefix != null) {
|
|
return "${" + prefix + "}" + dbColumn;
|
|
} else {
|
|
return ROOT_ELPREFIX + dbColumn;
|
|
}
|
|
}
|
|
|
|
public BeanFkeyProperty create(String expression, boolean containsMany) {
|
|
int len = expression.length() - name.length() - 1;
|
|
String prefix = expression.substring(0, len);
|
|
|
|
return new BeanFkeyProperty(prefix, name, dbColumn, deployOrder, containsMany);
|
|
}
|
|
|
|
/**
|
|
* Returns false for keys.
|
|
*/
|
|
public boolean isDbEncrypted() {
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Returns false for keys.
|
|
*/
|
|
public boolean isLocalEncrypted() {
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Only usable as ElPropertyDeploy.
|
|
*/
|
|
public boolean isDeployOnly() {
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public boolean containsFormulaWithJoin() {
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Returns false.
|
|
*/
|
|
public boolean containsMany() {
|
|
return containsMany;
|
|
}
|
|
|
|
public boolean containsManySince(String sinceProperty) {
|
|
return containsMany();
|
|
}
|
|
|
|
public String getDbColumn() {
|
|
return dbColumn;
|
|
}
|
|
|
|
public String getName() {
|
|
return name;
|
|
}
|
|
|
|
public String getElName() {
|
|
return name;
|
|
}
|
|
|
|
/**
|
|
* Returns null as not an AssocOne.
|
|
*/
|
|
public Object[] getAssocOneIdValues(EntityBean value) {
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Returns null as not an AssocOne.
|
|
*/
|
|
public String getAssocOneIdExpr(String prefix, String operator) {
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Returns null as not an AssocOne.
|
|
*/
|
|
public String getAssocIdInExpr(String prefix) {
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Returns null as not an AssocOne.
|
|
*/
|
|
public String getAssocIdInValueExpr(int size) {
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Returns false as not an AssocOne.
|
|
*/
|
|
public boolean isAssocId() {
|
|
return false;
|
|
}
|
|
|
|
public boolean isAssocProperty() {
|
|
return false;
|
|
}
|
|
|
|
public String getElPlaceholder(boolean encrypted) {
|
|
return placeHolder;
|
|
}
|
|
|
|
public String getElPrefix() {
|
|
return prefix;
|
|
}
|
|
|
|
public boolean isDateTimeCapable() {
|
|
return false;
|
|
}
|
|
|
|
public int getJdbcType() {
|
|
return 0;
|
|
}
|
|
|
|
public BeanProperty getBeanProperty() {
|
|
return null;
|
|
}
|
|
|
|
public Object parseDateTime(long systemTimeMillis) {
|
|
throw new RuntimeException("ElPropertyDeploy only - not implemented");
|
|
}
|
|
|
|
public StringFormatter getStringFormatter() {
|
|
throw new RuntimeException("ElPropertyDeploy only - not implemented");
|
|
}
|
|
|
|
public StringParser getStringParser() {
|
|
throw new RuntimeException("ElPropertyDeploy only - not implemented");
|
|
}
|
|
|
|
public void elSetReference(EntityBean bean) {
|
|
throw new RuntimeException("ElPropertyDeploy only - not implemented");
|
|
}
|
|
|
|
public Object elConvertType(Object value) {
|
|
throw new RuntimeException("ElPropertyDeploy only - not implemented");
|
|
}
|
|
|
|
public void elSetValue(EntityBean bean, Object value, boolean populate) {
|
|
throw new RuntimeException("ElPropertyDeploy only - not implemented");
|
|
}
|
|
|
|
public Object elGetValue(EntityBean bean) {
|
|
throw new RuntimeException("ElPropertyDeploy only - not implemented");
|
|
}
|
|
|
|
public Object elGetReference(EntityBean bean) {
|
|
throw new RuntimeException("ElPropertyDeploy only - not implemented");
|
|
}
|
|
|
|
public String getDeployProperty() {
|
|
throw new RuntimeException("ElPropertyDeploy only - not implemented");
|
|
}
|
|
|
|
}
|