net.java.ao.builder.AbstractEntityManagerBuilderWithDatabaseProperties Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of activeobjects Show documentation
Show all versions of activeobjects Show documentation
This is the full Active Objects library, if you don't know which one to use, you probably want this one.
The newest version!
package net.java.ao.builder;
import net.java.ao.DefaultSchemaConfiguration;
import net.java.ao.EntityManager;
import net.java.ao.EntityManagerConfiguration;
import net.java.ao.SchemaConfiguration;
import net.java.ao.schema.CamelCaseFieldNameConverter;
import net.java.ao.schema.CamelCaseTableNameConverter;
import net.java.ao.schema.DefaultIndexNameConverter;
import net.java.ao.schema.DefaultSequenceNameConverter;
import net.java.ao.schema.DefaultTriggerNameConverter;
import net.java.ao.schema.DefaultUniqueNameConverter;
import net.java.ao.schema.FieldNameConverter;
import net.java.ao.schema.IndexNameConverter;
import net.java.ao.schema.NameConverters;
import net.java.ao.schema.SequenceNameConverter;
import net.java.ao.schema.TableAnnotationTableNameConverter;
import net.java.ao.schema.TableNameConverter;
import net.java.ao.schema.TriggerNameConverter;
import net.java.ao.schema.UniqueNameConverter;
import net.java.ao.schema.info.CachingEntityInfoResolverFactory;
import net.java.ao.schema.info.EntityInfoResolverFactory;
import java.util.Objects;
import static java.util.Objects.requireNonNull;
public abstract class AbstractEntityManagerBuilderWithDatabaseProperties {
private final BuilderDatabaseProperties databaseProperties;
private final BuilderEntityManagerConfiguration configuration;
AbstractEntityManagerBuilderWithDatabaseProperties(BuilderDatabaseProperties databaseProperties) {
this(databaseProperties, new BuilderEntityManagerConfiguration());
}
AbstractEntityManagerBuilderWithDatabaseProperties(BuilderDatabaseProperties databaseProperties, BuilderEntityManagerConfiguration configuration) {
this.databaseProperties = requireNonNull(databaseProperties, "databaseProperties can't be null");
this.configuration = requireNonNull(configuration, "configuration can't be null");
}
public B schema(String schema) {
databaseProperties.setSchema(schema);
return cast();
}
public B tableNameConverter(TableNameConverter tableNameConverter) {
configuration.setTableNameConverter(requireNonNull(tableNameConverter, "tableNameConverter can't be null"));
return cast();
}
public B fieldNameConverter(FieldNameConverter fieldNameConverter) {
configuration.setFieldNameConverter(requireNonNull(fieldNameConverter, "fieldNameConverter can't be null"));
return cast();
}
public B sequenceNameConverter(SequenceNameConverter sequenceNameConverter) {
configuration.setSequenceNameConverter(requireNonNull(sequenceNameConverter, "sequenceNameConverter can't be null"));
return cast();
}
public B triggerNameConverter(TriggerNameConverter triggerNameConverter) {
configuration.setTriggerNameConverter(requireNonNull(triggerNameConverter, "triggerNameConverter can't be null"));
return cast();
}
public B indexNameConverter(IndexNameConverter indexNameConverter) {
configuration.setIndexNameConverter(requireNonNull(indexNameConverter, "indexNameConverter can't be null"));
return cast();
}
public B uniqueNameConverter(UniqueNameConverter uniqueNameConverter) {
configuration.setUniqueNameConverter(requireNonNull(uniqueNameConverter, "uniqueNameConverter can't be null"));
return cast();
}
public B schemaConfiguration(SchemaConfiguration schemaConfiguration) {
configuration.setSchemaConfiguration(schemaConfiguration);
return cast();
}
final BuilderDatabaseProperties getDatabaseProperties() {
return databaseProperties;
}
final BuilderEntityManagerConfiguration getEntityManagerConfiguration() {
return configuration;
}
public abstract EntityManager build();
@SuppressWarnings("unchecked")
private B cast() {
return (B) this;
}
static class BuilderEntityManagerConfiguration implements EntityManagerConfiguration {
private SchemaConfiguration schemaConfiguration;
private TableNameConverter tableNameConverter;
private FieldNameConverter fieldNameConverter;
private SequenceNameConverter sequenceNameConverter;
private TriggerNameConverter triggerNameConverter;
private IndexNameConverter indexNameConverter;
private UniqueNameConverter uniqueNameConverter;
private EntityInfoResolverFactory entityInfoResolverFactory;
@Override
public boolean useWeakCache() {
return false;
}
@Override
public NameConverters getNameConverters() {
return new SimpleNameConverters(
getTableNameConverter(),
getFieldNameConverter(),
getSequenceNameConverter(),
getTriggerNameConverter(),
getIndexNameConverter(),
getUniqueNameConverter());
}
private TableNameConverter getTableNameConverter() {
return tableNameConverter != null ? tableNameConverter : defaultTableNameConverter();
}
private static TableNameConverter defaultTableNameConverter() {
return new TableAnnotationTableNameConverter(new CamelCaseTableNameConverter());
}
private SequenceNameConverter getSequenceNameConverter() {
return sequenceNameConverter != null ? sequenceNameConverter : defaultSequenceNameConverter();
}
private TriggerNameConverter getTriggerNameConverter() {
return triggerNameConverter != null ? triggerNameConverter : defaultTriggerNameConverter();
}
private UniqueNameConverter getUniqueNameConverter() {
return uniqueNameConverter != null ? uniqueNameConverter : defaultUniqueNameConverter();
}
private UniqueNameConverter defaultUniqueNameConverter() {
return new DefaultUniqueNameConverter();
}
private IndexNameConverter getIndexNameConverter() {
return indexNameConverter != null ? indexNameConverter : defaultIndexNameConverter();
}
private IndexNameConverter defaultIndexNameConverter() {
return new DefaultIndexNameConverter();
}
private TriggerNameConverter defaultTriggerNameConverter() {
return new DefaultTriggerNameConverter();
}
private SequenceNameConverter defaultSequenceNameConverter() {
return new DefaultSequenceNameConverter();
}
private FieldNameConverter getFieldNameConverter() {
return fieldNameConverter != null ? fieldNameConverter : defaultFieldNameConverter();
}
private static CamelCaseFieldNameConverter defaultFieldNameConverter() {
return new CamelCaseFieldNameConverter();
}
public void setTableNameConverter(TableNameConverter tableNameConverter) {
this.tableNameConverter = tableNameConverter;
}
public void setFieldNameConverter(FieldNameConverter fieldNameConverter) {
this.fieldNameConverter = fieldNameConverter;
}
public void setSequenceNameConverter(SequenceNameConverter sequenceNameConverter) {
this.sequenceNameConverter = sequenceNameConverter;
}
public void setTriggerNameConverter(TriggerNameConverter triggerNameConverter) {
this.triggerNameConverter = triggerNameConverter;
}
public void setIndexNameConverter(IndexNameConverter indexNameConverter) {
this.indexNameConverter = indexNameConverter;
}
public void setUniqueNameConverter(UniqueNameConverter uniqueNameConverter) {
this.uniqueNameConverter = uniqueNameConverter;
}
public SchemaConfiguration getSchemaConfiguration() {
return schemaConfiguration != null ? schemaConfiguration : new DefaultSchemaConfiguration();
}
public void setSchemaConfiguration(SchemaConfiguration schemaConfiguration) {
this.schemaConfiguration = schemaConfiguration;
}
@Override
public EntityInfoResolverFactory getEntityInfoResolverFactory() {
return entityInfoResolverFactory != null ? entityInfoResolverFactory : defaultSchemaInfoResolverFactory();
}
public void setEntityInfoResolverFactory(EntityInfoResolverFactory entityInfoResolverFactory) {
this.entityInfoResolverFactory = entityInfoResolverFactory;
}
private static EntityInfoResolverFactory defaultSchemaInfoResolverFactory() {
return new CachingEntityInfoResolverFactory();
}
}
}