package com.constellio.model.services.records; import com.constellio.model.entities.records.RecordUpdateOptions; public class BulkRecordTransactionHandlerOptions { int recordsPerBatch; int queueSize; int numberOfThreads; boolean showProgressionInConsole; RecordUpdateOptions transactionOptions = new RecordUpdateOptions(); BulkRecordTransactionImpactHandling recordModificationImpactHandling; public BulkRecordTransactionHandlerOptions() { recordsPerBatch = 1000; numberOfThreads = Runtime.getRuntime().availableProcessors(); queueSize = 1 + (numberOfThreads); showProgressionInConsole = true; recordModificationImpactHandling = BulkRecordTransactionImpactHandling.IN_SAME_TRANSACTION; } private BulkRecordTransactionHandlerOptions(int recordsPerBatch, int numberOfThreads, int queueSize, boolean showProgressionInConsole) { this.recordsPerBatch = recordsPerBatch; this.numberOfThreads = numberOfThreads; this.queueSize = queueSize; this.showProgressionInConsole = showProgressionInConsole; } public BulkRecordTransactionHandlerOptions withRecordsPerBatch(int recordsPerBatch) { this.recordsPerBatch = recordsPerBatch; return this; } public BulkRecordTransactionHandlerOptions withQueueSize(int queueSize) { this.queueSize = queueSize; return this; } public BulkRecordTransactionHandlerOptions withNumberOfThreads(int numberOfThreads) { this.numberOfThreads = numberOfThreads; return this; } public BulkRecordTransactionHandlerOptions showProgressionInConsole(boolean showProgressionInConsole) { this.showProgressionInConsole = showProgressionInConsole; return this; } public BulkRecordTransactionHandlerOptions withBulkRecordTransactionImpactHandling( BulkRecordTransactionImpactHandling recordModificationImpactHandling) { this.recordModificationImpactHandling = recordModificationImpactHandling; return this; } public BulkRecordTransactionHandlerOptions setTransactionOptions( RecordUpdateOptions transactionOptions) { this.transactionOptions = transactionOptions; return this; } public RecordUpdateOptions getTransactionOptions() { return transactionOptions; } }