package io.ebeaninternal.server.deploy;

import io.ebean.bean.EntityBean;
import io.ebeaninternal.server.type.DataReader;

import java.sql.SQLException;

Helper for Embedded BeanPropertyAssocOne.
/** * Helper for Embedded BeanPropertyAssocOne. */
final class AssocOneHelpEmbedded extends AssocOneHelp { AssocOneHelpEmbedded(BeanPropertyAssocOne<?> property) { super(property); } @Override void loadIgnore(DbReadContext ctx) { for (BeanProperty property : property.embeddedProps) { property.loadIgnore(ctx); } } @Override Object readSet(DataReader reader, EntityBean bean) throws SQLException { Object dbVal = read(reader); if (bean != null) { property.setValue(bean, dbVal); } return dbVal; } @Override Object read(DataReader reader) throws SQLException { EntityBean embeddedBean = property.targetDescriptor.createEntityBean(); boolean notNull = false; for (BeanProperty property : property.embeddedProps) { Object value = property.readSet(reader, embeddedBean); if (value != null) { notNull = true; } } if (notNull) { return embeddedBean; } else { return null; } } @Override Object readSet(DbReadContext ctx, EntityBean bean) throws SQLException { Object dbVal = read(ctx); if (bean != null) { // set back to the parent bean property.setValue(bean, dbVal); ctx.propagateState(dbVal); return dbVal; } else { return null; } } @Override Object read(DbReadContext ctx) throws SQLException { EntityBean embeddedBean = property.targetDescriptor.createEntityBean(); boolean notNull = false; for (BeanProperty property : property.embeddedProps) { Object value = property.readSet(ctx, embeddedBean); if (value != null) { notNull = true; } } if (notNull) { ctx.propagateState(embeddedBean); return embeddedBean; } else { return null; } } @Override void appendSelect(DbSqlContext ctx, boolean subQuery) { for (BeanProperty property : property.embeddedProps) { property.appendSelect(ctx, subQuery); } } }