AbstractRelationConfigurer.java
package org.codefilarete.stalactite.engine.configurer;
import org.codefilarete.stalactite.dsl.naming.TableNamingStrategy;
import org.codefilarete.stalactite.engine.EntityPersister;
import org.codefilarete.stalactite.engine.configurer.builder.DefaultPersisterBuilder;
import org.codefilarete.stalactite.engine.configurer.builder.PersisterBuilderContext;
import org.codefilarete.stalactite.engine.runtime.ConfiguredPersister;
import org.codefilarete.stalactite.engine.runtime.ConfiguredRelationalPersister;
import org.codefilarete.stalactite.sql.ConnectionConfiguration;
import org.codefilarete.stalactite.sql.Dialect;
import org.codefilarete.stalactite.sql.ddl.structure.Table;
import java.util.Set;
public class AbstractRelationConfigurer<SRC, SRCID, TRGT, TRGTID> {
protected final Dialect dialect;
protected final ConnectionConfiguration connectionConfiguration;
protected final ConfiguredRelationalPersister<SRC, SRCID> sourcePersister;
protected final TableNamingStrategy tableNamingStrategy;
protected final PersisterBuilderContext currentBuilderContext;
protected final DefaultPersisterBuilder persisterBuilder;
public AbstractRelationConfigurer(Dialect dialect,
ConnectionConfiguration connectionConfiguration,
ConfiguredRelationalPersister<SRC, SRCID> sourcePersister,
TableNamingStrategy tableNamingStrategy,
PersisterBuilderContext currentBuilderContext) {
this.dialect = dialect;
this.connectionConfiguration = connectionConfiguration;
this.sourcePersister = sourcePersister;
this.tableNamingStrategy = tableNamingStrategy;
this.currentBuilderContext = currentBuilderContext;
this.persisterBuilder = new DefaultPersisterBuilder(dialect, connectionConfiguration, currentBuilderContext.getPersisterRegistry());
}
protected Table lookupTableInRegisteredPersisters(Class<TRGT> entityType) {
String expectedTargetTableName = tableNamingStrategy.giveName(entityType);
Set<EntityPersister> persisters = currentBuilderContext.getPersisterRegistry().getPersisters();
return persisters.stream()
.flatMap(p -> ((ConfiguredPersister<?, ?>) p).giveImpliedTables().stream())
.filter(table -> table.getName().equals(expectedTargetTableName))
.findFirst().orElseGet(() -> null);
}
}