# EntityFactoryProviderSupport.java

    package org.codefilarete.stalactite.engine.configurer.entity;

    import java.util.function.Function;

    import org.codefilarete.stalactite.dsl.entity.EntityMappingConfiguration;
    import org.codefilarete.stalactite.sql.ddl.structure.Table;
    import org.codefilarete.stalactite.sql.result.ColumnedRow;

    class EntityFactoryProviderSupport<C, T extends Table> implements EntityMappingConfiguration.EntityFactoryProvider<C, T> {

    	private final Function<Table, Function<ColumnedRow, C>> factory;

    	private final boolean setIdentifier;

    	EntityFactoryProviderSupport(Function<Table, Function<ColumnedRow, C>> factory, boolean setIdentifier) {
    		this.factory = factory;
    		this.setIdentifier = setIdentifier;
    	}

    	@Override
    	public Function<ColumnedRow, C> giveEntityFactory(T table) {
    		return factory.apply(table);
    	}

    	@Override
    	public boolean isIdentifierSetByFactory() {
    		return setIdentifier;
    	}
    }