mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
54 lines
2.0 KiB
Java
54 lines
2.0 KiB
Java
package io.ebeaninternal.server.deploy;
|
|
|
|
import io.ebeaninternal.server.deploy.meta.DeployBeanPropertyAssocOne;
|
|
|
|
import javax.persistence.PersistenceException;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* Creates BeanProperties for Embedded beans that have deployment information
|
|
* such as the actual DB column name and table alias.
|
|
*/
|
|
public class BeanEmbeddedMetaFactory {
|
|
|
|
/**
|
|
* Create BeanProperties for embedded beans using the deployment specific DB column name and table alias.
|
|
*/
|
|
public static BeanEmbeddedMeta create(BeanDescriptorMap owner, DeployBeanPropertyAssocOne<?> prop) {
|
|
|
|
// we can get a BeanDescriptor for an Embedded bean
|
|
// and know that it is NOT recursive, as Embedded beans are
|
|
// only allow to hold simple scalar types...
|
|
BeanDescriptor<?> targetDesc = owner.getBeanDescriptor(prop.getTargetType());
|
|
if (targetDesc == null) {
|
|
String msg = "Could not find BeanDescriptor for " + prop.getTargetType()
|
|
+ ". Perhaps the EmbeddedId class is not registered?";
|
|
throw new PersistenceException(msg);
|
|
}
|
|
|
|
// deployment override information (column names)
|
|
String columnPrefix = prop.getColumnPrefix();
|
|
Map<String, String> propColMap = prop.getDeployEmbedded().getPropertyColumnMap();
|
|
|
|
BeanProperty[] sourceProperties = targetDesc.propertiesBaseScalar();
|
|
BeanProperty[] embeddedProperties = new BeanProperty[sourceProperties.length];
|
|
|
|
for (int i = 0; i < sourceProperties.length; i++) {
|
|
String propertyName = sourceProperties[i].getName();
|
|
String dbColumn = propColMap.get(propertyName);
|
|
if (dbColumn == null) {
|
|
// dbColumn not overridden so take original
|
|
dbColumn = sourceProperties[i].getDbColumn();
|
|
if (columnPrefix != null) {
|
|
dbColumn = columnPrefix + dbColumn;
|
|
}
|
|
}
|
|
|
|
BeanPropertyOverride overrides = new BeanPropertyOverride(dbColumn);
|
|
embeddedProperties[i] = new BeanProperty(sourceProperties[i], overrides);
|
|
}
|
|
|
|
return new BeanEmbeddedMeta(embeddedProperties);
|
|
}
|
|
}
|