package io.ebeaninternal.server.persist.dmlbind;
import io.ebeaninternal.server.deploy.BeanDescriptor;
import io.ebeaninternal.server.deploy.BeanPropertyAssocOne;
import io.ebeaninternal.server.persist.dml.DmlMode;
import java.util.List;
/**
* A factory that builds Bindable for BeanPropertyAssocOne properties.
*/
public class FactoryAssocOnes {
public FactoryAssocOnes() {
}
/**
* Add foreign key columns from associated one beans.
*/
public void create(List<Bindable> list, BeanDescriptor<?> desc, DmlMode mode) {
BeanPropertyAssocOne<?>[] ones = desc.propertiesOneImported();
for (BeanPropertyAssocOne<?> one : ones) {
if (!one.isImportedPrimaryKey()) {
switch (mode) {
case INSERT:
if (!one.isInsertable()) {
continue;
}
break;
case UPDATE:
if (!one.isUpdateable()) {
continue;
}
break;
}
if (one.getGeneratedProperty() == null) {
list.add(new BindableAssocOne(one));
} else {
// typically generated 'who' created/modified properties
switch (mode) {
case INSERT:
list.add(new BindableAssocOneGeneratedInsert(one));
break;
case UPDATE:
list.add(new BindableAssocOneGeneratedUpdate(one));
break;
}
}
}
}
}
}