001package org.itsallcode.jdbc.batch; 002 003import java.util.function.Supplier; 004 005import org.itsallcode.jdbc.SimpleStatement; 006 007/** 008 * A builder for {@link StatementBatch}. 009 */ 010public class StatementBatchBuilder { 011 private final Supplier<SimpleStatement> statementFactory; 012 private int maxBatchSize = PreparedStatementBatchBuilder.DEFAULT_MAX_BATCH_SIZE; 013 014 /** 015 * Create a new instance. 016 * 017 * @param statementFactory factory for creating {@link SimpleStatement}. 018 */ 019 public StatementBatchBuilder(final Supplier<SimpleStatement> statementFactory) { 020 this.statementFactory = statementFactory; 021 } 022 023 /** 024 * Define maximum batch size, using 025 * {@link PreparedStatementBatchBuilder#DEFAULT_MAX_BATCH_SIZE} as default. 026 * 027 * @param maxBatchSize maximum batch size 028 * @return {@code this} for fluent programming 029 */ 030 public StatementBatchBuilder maxBatchSize(final int maxBatchSize) { 031 this.maxBatchSize = maxBatchSize; 032 return this; 033 } 034 035 /** 036 * Build the batch inserter. 037 * 038 * @return the statement batch 039 */ 040 public StatementBatch build() { 041 final SimpleStatement statement = statementFactory.get(); 042 return new StatementBatch(statement, this.maxBatchSize); 043 } 044}