io.ebeaninternal.server.deploy.meta.DeployBeanTable Maven / Gradle / Ivy
package io.ebeaninternal.server.deploy.meta;
import io.ebeaninternal.server.deploy.BeanDescriptorMap;
import io.ebeaninternal.server.deploy.BeanProperty;
import io.ebeaninternal.server.deploy.BeanPropertyAssocOne;
import java.util.List;
/**
* Used for associated beans in place of a BeanDescriptor. This is done to avoid
* recursion issues due to the potentially bi-directional and circular
* relationships between beans.
*
* It holds the main deployment information and not all the detail that is held
* in a BeanDescriptor.
*
*/
public class DeployBeanTable {
private final Class> beanType;
/**
* The base table.
*/
private String baseTable;
private List idProperties;
/**
* Create the BeanTable.
*/
public DeployBeanTable(Class> beanType) {
this.beanType = beanType;
}
/**
* Return the base table for this BeanTable.
* This is used to determine the join information
* for associations.
*/
public String getBaseTable() {
return baseTable;
}
/**
* Set the base table for this BeanTable.
*/
public void setBaseTable(String baseTable) {
this.baseTable = baseTable;
}
/**
* Return the id properties.
*/
public BeanProperty[] createIdProperties(BeanDescriptorMap owner) {
BeanProperty[] props = new BeanProperty[idProperties.size()];
for (int i = 0; i < idProperties.size(); i++) {
props[i] = createProperty(owner, idProperties.get(i));
}
return props;
}
@SuppressWarnings({"unchecked", "rawtypes"})
private BeanProperty createProperty(BeanDescriptorMap owner, DeployBeanProperty prop) {
if (prop instanceof DeployBeanPropertyAssocOne>) {
return new BeanPropertyAssocOne(owner, (DeployBeanPropertyAssocOne>) prop);
} else {
return new BeanProperty(prop);
}
}
/**
* Set the Id properties.
*/
public void setIdProperties(List idProperties) {
this.idProperties = idProperties;
}
/**
* Return the class for this beanTable.
*/
public Class> getBeanType() {
return beanType;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy