package hex;
import water.util.PojoUtils;
/**
* Factory for creating model parameters builders.
*
* @param <MP> type of produced model parameters object
*/
public interface ModelParametersBuilderFactory<MP extends Model.Parameters> {
/** Get parameters builder for initial parameters.
*
* <p>
* The builder modifies passed parameters object, so the caller
* is responsible for cloning it if it is necessary.
* </p>
*
* @param initialParams initial model parameters which will be modified
* @return this parameters builder
*/
ModelParametersBuilder<MP> get(MP initialParams);
/**
* Returns mapping from input parameter specification to
* attribute names of <code>MP</code>.
* @return naming strategy
*/
PojoUtils.FieldNaming getFieldNamingStrategy();
/** A generic interface to configure a given initial parameters object
* via sequence of {@link #set} method calls.
*
* <p>
* The usage is sequence of <code>set</code> calls finalized by
* <code>build</code> call which produces final version of parameters.
* </p>
*
* @param <MP> type of produced model parameters object
*/
interface ModelParametersBuilder<MP extends Model.Parameters> {
ModelParametersBuilder<MP> set(String name, Object value);
MP build();
}
}