Class GeneratedColumnSqlGenerator
java.lang.Object
liquibase.sqlgenerator.core.AbstractSqlGenerator<liquibase.statement.core.AddColumnStatement>
liquibase.sqlgenerator.core.AddColumnGenerator
org.keycloak.models.map.storage.jpa.liquibase.extension.GeneratedColumnSqlGenerator
- All Implemented Interfaces:
liquibase.servicelocator.PrioritizedService
,liquibase.sqlgenerator.SqlGenerator<liquibase.statement.core.AddColumnStatement>
public class GeneratedColumnSqlGenerator
extends liquibase.sqlgenerator.core.AddColumnGenerator
A
SqlGenerator
implementation that supports GeneratedColumnStatement
s. It generates the SQL required
to add a column whose values are generated from a property of a JSON file stored in one of the table columns
or a function which is used to create a generated column.- Author:
- Stefan Guilhen
-
Field Summary
Fields inherited from class liquibase.sqlgenerator.core.AddColumnGenerator
REFERENCE_PATTERN
Fields inherited from interface liquibase.servicelocator.PrioritizedService
COMPARATOR
Fields inherited from interface liquibase.sqlgenerator.SqlGenerator
EMPTY_SQL, PRIORITY_DATABASE, PRIORITY_DEFAULT
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected liquibase.sql.Sql[]
generateSingleColumn
(liquibase.statement.core.AddColumnStatement statement, liquibase.database.Database database) int
Override the priority.protected void
handleGeneratedColumn
(GeneratedColumnStatement statement, liquibase.database.Database database, StringBuilder sqlBuilder) boolean
supports
(liquibase.statement.core.AddColumnStatement statement, liquibase.database.Database database) Implementsupports(AddColumnStatement, Database)
to returntrue
only if the statement type is an instance ofGeneratedColumnStatement
.Methods inherited from class liquibase.sqlgenerator.core.AddColumnGenerator
addForeignKeyStatements, addUniqueConstraintStatements, generateSingleColumBaseSQL, generateSingleColumnSQL, generateSql, getAffectedColumn, getAffectedColumns, validate
Methods inherited from class liquibase.sqlgenerator.core.AbstractSqlGenerator
generateRollbackStatementsIsVolatile, generateStatementsIsVolatile, looksLikeFunctionCall, warn
-
Constructor Details
-
GeneratedColumnSqlGenerator
public GeneratedColumnSqlGenerator()
-
-
Method Details
-
getPriority
public int getPriority()Override the priority. This is needed becauseGeneratedColumnStatement
is a subtype ofAddColumnStatement
and is thus a match for the standard column generators. By increasing the priority we ensure this is processed before the other generators.- Specified by:
getPriority
in interfaceliquibase.servicelocator.PrioritizedService
- Specified by:
getPriority
in interfaceliquibase.sqlgenerator.SqlGenerator<liquibase.statement.core.AddColumnStatement>
- Overrides:
getPriority
in classliquibase.sqlgenerator.core.AbstractSqlGenerator<liquibase.statement.core.AddColumnStatement>
- Returns:
- this generator's priority.
-
supports
public boolean supports(liquibase.statement.core.AddColumnStatement statement, liquibase.database.Database database) Implementsupports(AddColumnStatement, Database)
to returntrue
only if the statement type is an instance ofGeneratedColumnStatement
. This is needed because this generator is a sub-class ofAddColumnGenerator
and is thus registered as being able to handle statements of typeAddColumnStatement
. Due to the increased priority, this generator ends up being selected to handle standardaddColumn
changes, which is not desirable. By returningtrue
only when the statement is aGeneratedColumnStatement
we ensure this implementation is selected only when a generated column is being added, allowing liquibase to continue iterating through the chain of generators in order to select the right generator to handle the standardaddColumn
changes.- Specified by:
supports
in interfaceliquibase.sqlgenerator.SqlGenerator<liquibase.statement.core.AddColumnStatement>
- Overrides:
supports
in classliquibase.sqlgenerator.core.AbstractSqlGenerator<liquibase.statement.core.AddColumnStatement>
- Parameters:
statement
- theSqlStatement
to be processed.database
- a reference to the database.- Returns:
true
if an only if the statement is aGeneratedColumnStatement
;false
otherwise.
-
generateSingleColumn
protected liquibase.sql.Sql[] generateSingleColumn(liquibase.statement.core.AddColumnStatement statement, liquibase.database.Database database) - Overrides:
generateSingleColumn
in classliquibase.sqlgenerator.core.AddColumnGenerator
-
handleGeneratedColumn
protected void handleGeneratedColumn(GeneratedColumnStatement statement, liquibase.database.Database database, StringBuilder sqlBuilder)
-