From 0103dde33e52825eb5df85f896ab704ed03b7481 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 5 Mar 2021 14:41:52 +0100 Subject: [PATCH] [jOOQ/jOOQ#11579] Add internal Cascade enum type --- .../java/org/jooq/impl/AlterDomainImpl.java | 19 +++++++++---------- jOOQ/src/main/java/org/jooq/impl/Cascade.java | 15 ++++----------- .../java/org/jooq/impl/DropDomainImpl.java | 19 +++++++++---------- .../java/org/jooq/impl/DropIndexImpl.java | 16 +++++++++------- .../java/org/jooq/impl/DropSchemaImpl.java | 14 +++++++------- .../java/org/jooq/impl/DropTableImpl.java | 10 +++++----- .../main/java/org/jooq/impl/Interpreter.java | 8 ++++---- .../main/java/org/jooq/impl/TruncateImpl.java | 12 ++++++------ 8 files changed, 53 insertions(+), 60 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterDomainImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterDomainImpl.java index b02376cfbd..cb83389009 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterDomainImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterDomainImpl.java @@ -84,7 +84,7 @@ implements private boolean dropDefault; private boolean setNotNull; private boolean dropNotNull; - private Boolean cascade; + private Cascade cascade; private Constraint renameConstraintTo; AlterDomainImpl( @@ -125,7 +125,7 @@ implements boolean dropDefault, boolean setNotNull, boolean dropNotNull, - Boolean cascade, + Cascade cascade, Constraint renameConstraintTo ) { super(configuration); @@ -158,7 +158,7 @@ implements final boolean $dropDefault() { return dropDefault; } final boolean $setNotNull() { return setNotNull; } final boolean $dropNotNull() { return dropNotNull; } - final Boolean $cascade() { return cascade; } + final Cascade $cascade() { return cascade; } final Constraint $renameConstraintTo() { return renameConstraintTo; } // ------------------------------------------------------------------------- @@ -286,13 +286,13 @@ implements @Override public final AlterDomainImpl cascade() { - this.cascade = true; + this.cascade = Cascade.CASCADE; return this; } @Override public final AlterDomainImpl restrict() { - this.cascade = false; + this.cascade = Cascade.RESTRICT; return this; } @@ -361,11 +361,10 @@ implements if (ctx.family() != FIREBIRD) { ctx.sql(' ').data(DATA_CONSTRAINT_REFERENCE, true, c -> c.visit(dropConstraint)); - if (cascade != null) - if (cascade) - ctx.sql(' ').visit(K_CASCADE); - else - ctx.sql(' ').visit(K_RESTRICT); + if (cascade == Cascade.CASCADE) + ctx.sql(' ').visit(K_CASCADE); + else if (cascade == Cascade.RESTRICT) + ctx.sql(' ').visit(K_RESTRICT); } } else if (renameTo != null) { diff --git a/jOOQ/src/main/java/org/jooq/impl/Cascade.java b/jOOQ/src/main/java/org/jooq/impl/Cascade.java index fdfd0cc68b..fd3058697d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Cascade.java +++ b/jOOQ/src/main/java/org/jooq/impl/Cascade.java @@ -38,19 +38,12 @@ package org.jooq.impl; +import org.jooq.*; + /** - * @author Lukas Eder + * The Cascade. */ enum Cascade { CASCADE, - RESTRICT; - - static Cascade of(Boolean b) { - if (b == null) - return null; - else if (b) - return CASCADE; - else - return RESTRICT; - } + RESTRICT, } diff --git a/jOOQ/src/main/java/org/jooq/impl/DropDomainImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropDomainImpl.java index 1acbef418b..57b6109043 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropDomainImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropDomainImpl.java @@ -72,7 +72,7 @@ implements private final Domain domain; private final boolean dropDomainIfExists; - private Boolean cascade; + private Cascade cascade; DropDomainImpl( Configuration configuration, @@ -91,7 +91,7 @@ implements Configuration configuration, Domain domain, boolean dropDomainIfExists, - Boolean cascade + Cascade cascade ) { super(configuration); @@ -102,7 +102,7 @@ implements final Domain $domain() { return domain; } final boolean $dropDomainIfExists() { return dropDomainIfExists; } - final Boolean $cascade() { return cascade; } + final Cascade $cascade() { return cascade; } // ------------------------------------------------------------------------- // XXX: DSL API @@ -110,13 +110,13 @@ implements @Override public final DropDomainImpl cascade() { - this.cascade = true; + this.cascade = Cascade.CASCADE; return this; } @Override public final DropDomainImpl restrict() { - this.cascade = false; + this.cascade = Cascade.RESTRICT; return this; } @@ -158,11 +158,10 @@ implements ctx.sql(' ').visit(domain); - if (cascade != null) - if (cascade) - ctx.sql(' ').visit(K_CASCADE); - else - ctx.sql(' ').visit(K_RESTRICT); + if (cascade == Cascade.CASCADE) + ctx.sql(' ').visit(K_CASCADE); + else if (cascade == Cascade.RESTRICT) + ctx.sql(' ').visit(K_RESTRICT); } diff --git a/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java index 48c04249cb..64df01d01e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java @@ -74,7 +74,7 @@ implements private final Index index; private final boolean dropIndexIfExists; private Table on; - private Boolean cascade; + private Cascade cascade; DropIndexImpl( Configuration configuration, @@ -95,7 +95,7 @@ implements Index index, boolean dropIndexIfExists, Table on, - Boolean cascade + Cascade cascade ) { super(configuration); @@ -108,7 +108,7 @@ implements final Index $index() { return index; } final boolean $dropIndexIfExists() { return dropIndexIfExists; } final Table $on() { return on; } - final Boolean $cascade() { return cascade; } + final Cascade $cascade() { return cascade; } // ------------------------------------------------------------------------- // XXX: DSL API @@ -132,13 +132,13 @@ implements @Override public final DropIndexImpl cascade() { - this.cascade = true; + this.cascade = Cascade.CASCADE; return this; } @Override public final DropIndexImpl restrict() { - this.cascade = false; + this.cascade = Cascade.RESTRICT; return this; } @@ -183,8 +183,10 @@ implements else if (index.getTable() != null) ctx.sql(' ').visit(K_ON).sql(' ').visit(index.getTable()); - if (cascade != null) - ctx.sql(' ').visit(cascade ? K_CASCADE : K_RESTRICT); + if (cascade == Cascade.CASCADE) + ctx.sql(' ').visit(K_CASCADE); + else if (cascade == Cascade.RESTRICT) + ctx.sql(' ').visit(K_RESTRICT); } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/DropSchemaImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropSchemaImpl.java index 9a1efd99a5..77bfe0e32e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropSchemaImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropSchemaImpl.java @@ -72,7 +72,7 @@ implements private final Schema schema; private final boolean dropSchemaIfExists; - private Boolean cascade; + private Cascade cascade; DropSchemaImpl( Configuration configuration, @@ -91,7 +91,7 @@ implements Configuration configuration, Schema schema, boolean dropSchemaIfExists, - Boolean cascade + Cascade cascade ) { super(configuration); @@ -102,7 +102,7 @@ implements final Schema $schema() { return schema; } final boolean $dropSchemaIfExists() { return dropSchemaIfExists; } - final Boolean $cascade() { return cascade; } + final Cascade $cascade() { return cascade; } // ------------------------------------------------------------------------- // XXX: DSL API @@ -110,13 +110,13 @@ implements @Override public final DropSchemaImpl cascade() { - this.cascade = true; + this.cascade = Cascade.CASCADE; return this; } @Override public final DropSchemaImpl restrict() { - this.cascade = false; + this.cascade = Cascade.RESTRICT; return this; } @@ -181,9 +181,9 @@ implements ctx.sql(' ').visit(schema); - if (cascade != null && cascade) + if (cascade == Cascade.CASCADE) ctx.sql(' ').visit(K_CASCADE); - else if (cascade != null && !cascade || REQUIRES_RESTRICT.contains(ctx.dialect())) + else if (cascade == Cascade.RESTRICT || REQUIRES_RESTRICT.contains(ctx.dialect())) ctx.sql(' ').visit(K_RESTRICT); ctx.end(Clause.DROP_SCHEMA_SCHEMA); diff --git a/jOOQ/src/main/java/org/jooq/impl/DropTableImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropTableImpl.java index 9e404c784f..aea21cf48d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropTableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropTableImpl.java @@ -73,7 +73,7 @@ implements private final Boolean temporary; private final Table table; private final boolean dropTableIfExists; - private Boolean cascade; + private Cascade cascade; DropTableImpl( Configuration configuration, @@ -95,7 +95,7 @@ implements Boolean temporary, Table table, boolean dropTableIfExists, - Boolean cascade + Cascade cascade ) { super(configuration); @@ -108,7 +108,7 @@ implements final Boolean $temporary() { return temporary; } final Table $table() { return table; } final boolean $dropTableIfExists() { return dropTableIfExists; } - final Boolean $cascade() { return cascade; } + final Cascade $cascade() { return cascade; } // ------------------------------------------------------------------------- // XXX: DSL API @@ -116,13 +116,13 @@ implements @Override public final DropTableImpl cascade() { - this.cascade = true; + this.cascade = Cascade.CASCADE; return this; } @Override public final DropTableImpl restrict() { - this.cascade = false; + this.cascade = Cascade.RESTRICT; return this; } diff --git a/jOOQ/src/main/java/org/jooq/impl/Interpreter.java b/jOOQ/src/main/java/org/jooq/impl/Interpreter.java index f85bd6c12f..74edbcf891 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Interpreter.java +++ b/jOOQ/src/main/java/org/jooq/impl/Interpreter.java @@ -303,7 +303,7 @@ final class Interpreter { return; } - if (mutableSchema.isEmpty() || TRUE.equals(query.$cascade())) + if (mutableSchema.isEmpty() || query.$cascade() == Cascade.CASCADE) mutableSchema.catalog.schemas.remove(mutableSchema); else throw schemaNotEmpty(schema); @@ -772,7 +772,7 @@ final class Interpreter { else if (query.$temporary() && existing.options.type() != TableType.TEMPORARY) throw objectNotTemporaryTable(table); - drop(schema.tables, existing, Cascade.of(query.$cascade())); + drop(schema.tables, existing, query.$cascade()); } private final void accept0(TruncateImpl query) { @@ -785,7 +785,7 @@ final class Interpreter { throw notExists(table); else if (!existing.options.type().isTable()) throw objectNotTable(table); - else if (!TRUE.equals(query.$cascade()) && existing.hasReferencingKeys()) + else if (query.$cascade() != Cascade.CASCADE && existing.hasReferencingKeys()) throw new DataDefinitionException("Cannot truncate table referenced by other tables. Use CASCADE: " + table); } @@ -1094,7 +1094,7 @@ final class Interpreter { return; } - if (!TRUE.equals(query.$cascade()) && !existing.fields.isEmpty()) + if (query.$cascade() != Cascade.CASCADE && !existing.fields.isEmpty()) throw new DataDefinitionException("Domain " + domain.getQualifiedName() + " is still being referenced by fields."); List field = new ArrayList<>(existing.fields); diff --git a/jOOQ/src/main/java/org/jooq/impl/TruncateImpl.java b/jOOQ/src/main/java/org/jooq/impl/TruncateImpl.java index cc82dd0b89..1c35e529c3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TruncateImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/TruncateImpl.java @@ -74,7 +74,7 @@ implements private final Table table; private Boolean restartIdentity; - private Boolean cascade; + private Cascade cascade; TruncateImpl( Configuration configuration, @@ -92,7 +92,7 @@ implements Configuration configuration, Table table, Boolean restartIdentity, - Boolean cascade + Cascade cascade ) { super(configuration); @@ -103,7 +103,7 @@ implements final Table $table() { return table; } final Boolean $restartIdentity() { return restartIdentity; } - final Boolean $cascade() { return cascade; } + final Cascade $cascade() { return cascade; } // ------------------------------------------------------------------------- // XXX: DSL API @@ -123,13 +123,13 @@ implements @Override public final TruncateImpl cascade() { - this.cascade = true; + this.cascade = Cascade.CASCADE; return this; } @Override public final TruncateImpl restrict() { - this.cascade = false; + this.cascade = Cascade.RESTRICT; return this; } @@ -184,7 +184,7 @@ implements ctx.formatSeparator() - .visit(cascade ? K_CASCADE : K_RESTRICT); + .visit(cascade == Cascade.CASCADE ? K_CASCADE : K_RESTRICT); ctx.end(Clause.TRUNCATE_TRUNCATE); break;