package io.ebeaninternal.server.deploy.parse;

import io.ebean.RawSql;
import io.ebeaninternal.server.deploy.TableJoin;
import io.ebeaninternal.server.deploy.meta.DeployBeanDescriptor;
import io.ebeaninternal.server.deploy.meta.DeployBeanPropertyAssoc;
import io.ebeaninternal.server.deploy.meta.DeployTableJoin;
import io.ebeaninternal.server.query.SqlJoinType;
import io.ebeaninternal.server.rawsql.SpiRawSql;

import java.util.HashMap;

Wraps information about a bean during deployment parsing.
/** * Wraps information about a bean during deployment parsing. */
public class DeployBeanInfo<T> {
Holds TableJoins for secondary table properties.
/** * Holds TableJoins for secondary table properties. */
private final HashMap<String, DeployTableJoin> tableJoinMap = new HashMap<>(); private final DeployUtil util; private final DeployBeanDescriptor<T> descriptor; private DeployBeanPropertyAssoc<?> embeddedId;
Create with a DeployUtil and BeanDescriptor.
/** * Create with a DeployUtil and BeanDescriptor. */
public DeployBeanInfo(DeployUtil util, DeployBeanDescriptor<T> descriptor) { this.util = util; this.descriptor = descriptor; } @Override public String toString() { return String.valueOf(descriptor); }
Return the BeanDescriptor currently being processed.
/** * Return the BeanDescriptor currently being processed. */
public DeployBeanDescriptor<T> getDescriptor() { return descriptor; }
Return the DeployUtil we are using.
/** * Return the DeployUtil we are using. */
public DeployUtil getUtil() { return util; }
Appropriate TableJoin for a property mapped to a secondary table.
/** * Appropriate TableJoin for a property mapped to a secondary table. */
public DeployTableJoin getTableJoin(String tableName) { String key = tableName.toLowerCase(); DeployTableJoin tableJoin = tableJoinMap.get(key); if (tableJoin == null) { tableJoin = new DeployTableJoin(); tableJoin.setTable(tableName); tableJoin.setType(SqlJoinType.INNER); descriptor.addTableJoin(tableJoin); tableJoinMap.put(key, tableJoin); } return tableJoin; }
Add named RawSql from ebean.xml.
/** * Add named RawSql from ebean.xml. */
public void addRawSql(String name, RawSql rawSql) { descriptor.addRawSql(name, (SpiRawSql)rawSql); }
Add the named query.
/** * Add the named query. */
public void addNamedQuery(String name, String query) { descriptor.addNamedQuery(name, query); }
Set that the PK is also a foreign key.
/** * Set that the PK is also a foreign key. */
public void setPrimaryKeyJoin(TableJoin join) { descriptor.setPrimaryKeyJoin(join); }
This bean type has an embedded Id property.
/** * This bean type has an embedded Id property. */
public void setEmbeddedId(DeployBeanPropertyAssoc<?> embeddedId) { this.embeddedId = embeddedId; } public Class<?> getEmbeddedIdType() { return (embeddedId == null) ? null : embeddedId.getTargetType(); } public boolean isEmbedded() { return descriptor.isEmbedded(); } }