1package dev.rafex.ether.database.sqlite.config;
29import java.util.Objects;
37public final class SQLiteConfig {
41 private final boolean foreignKeys;
42 private final int busyTimeout;
43 private final boolean caseSensitiveLike;
44 private final boolean recursiveTriggers;
45 private final boolean autoVacuum;
47 private SQLiteConfig(Builder
builder) {
48 this.journalMode =
builder.journalMode;
49 this.synchronousMode =
builder.synchronousMode;
50 this.foreignKeys =
builder.foreignKeys;
51 this.busyTimeout =
builder.busyTimeout;
52 this.caseSensitiveLike =
builder.caseSensitiveLike;
53 this.recursiveTriggers =
builder.recursiveTriggers;
54 this.autoVacuum =
builder.autoVacuum;
72 return synchronousMode;
99 return caseSensitiveLike;
108 return recursiveTriggers;
122 if (
this == o)
return true;
123 if (o ==
null || getClass() != o.getClass())
return false;
124 SQLiteConfig that = (SQLiteConfig) o;
125 return foreignKeys == that.foreignKeys &&
126 busyTimeout == that.busyTimeout &&
127 caseSensitiveLike == that.caseSensitiveLike &&
128 recursiveTriggers == that.recursiveTriggers &&
129 autoVacuum == that.autoVacuum &&
130 journalMode == that.journalMode &&
131 synchronousMode == that.synchronousMode;
136 return Objects.hash(journalMode, synchronousMode, foreignKeys, busyTimeout,
137 caseSensitiveLike, recursiveTriggers, autoVacuum);
142 return "SQLiteConfig{" +
143 "journalMode=" + journalMode +
144 ", synchronousMode=" + synchronousMode +
145 ", foreignKeys=" + foreignKeys +
146 ", busyTimeout=" + busyTimeout +
147 ", caseSensitiveLike=" + caseSensitiveLike +
148 ", recursiveTriggers=" + recursiveTriggers +
149 ", autoVacuum=" + autoVacuum +
168 return new Builder();
183 public static final class Builder {
201 this.journalMode = Objects.requireNonNull(
journalMode,
"journalMode must not be null");
212 this.synchronousMode = Objects.requireNonNull(
synchronousMode,
"synchronousMode must not be null");
238 throw new IllegalArgumentException(
"busyTimeout must be non-negative");
262 this.recursiveTriggers = recursiveTriggers;
272 public Builder
autoVacuum(
boolean autoVacuum) {
273 this.autoVacuum = autoVacuum;
282 public SQLiteConfig build() {
283 return new SQLiteConfig(
this);
boolean recursiveTriggers()
Returns whether recursive triggers are enabled.
boolean foreignKeys()
Returns whether foreign key constraints are enabled.
static SQLiteConfig defaults()
Returns the default configuration.
boolean autoVacuum()
Returns whether auto-vacuum is enabled.
boolean caseSensitiveLike()
Returns whether LIKE operator is case-sensitive.
static Builder builder()
Creates a new builder with default values:
JournalMode journalMode()
Returns the journal mode.
int busyTimeout()
Returns the busy timeout in milliseconds.
SynchronousMode synchronousMode()
Returns the synchronous mode.
WAL
Write-Ahead Logging mode.
SQLite synchronous modes.
NORMAL
SQLite syncs at the most critical moments, but less often than in FULL mode.