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 GeneratedColumnStatements. 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_PATTERNFields inherited from interface liquibase.servicelocator.PrioritizedService
COMPARATORFields 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) intOverride the priority.protected voidhandleGeneratedColumn(GeneratedColumnStatement statement, liquibase.database.Database database, StringBuilder sqlBuilder) booleansupports(liquibase.statement.core.AddColumnStatement statement, liquibase.database.Database database) Implementsupports(AddColumnStatement, Database)to returntrueonly if the statement type is an instance ofGeneratedColumnStatement.Methods inherited from class liquibase.sqlgenerator.core.AddColumnGenerator
addForeignKeyStatements, addUniqueConstraintStatements, generateSingleColumBaseSQL, generateSingleColumnSQL, generateSql, getAffectedColumn, getAffectedColumns, validateMethods 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 becauseGeneratedColumnStatementis a subtype ofAddColumnStatementand is thus a match for the standard column generators. By increasing the priority we ensure this is processed before the other generators.- Specified by:
getPriorityin interfaceliquibase.servicelocator.PrioritizedService- Specified by:
getPriorityin interfaceliquibase.sqlgenerator.SqlGenerator<liquibase.statement.core.AddColumnStatement>- Overrides:
getPriorityin 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 returntrueonly if the statement type is an instance ofGeneratedColumnStatement. This is needed because this generator is a sub-class ofAddColumnGeneratorand is thus registered as being able to handle statements of typeAddColumnStatement. Due to the increased priority, this generator ends up being selected to handle standardaddColumnchanges, which is not desirable. By returningtrueonly when the statement is aGeneratedColumnStatementwe 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 standardaddColumnchanges.- Specified by:
supportsin interfaceliquibase.sqlgenerator.SqlGenerator<liquibase.statement.core.AddColumnStatement>- Overrides:
supportsin classliquibase.sqlgenerator.core.AbstractSqlGenerator<liquibase.statement.core.AddColumnStatement>- Parameters:
statement- theSqlStatementto be processed.database- a reference to the database.- Returns:
trueif an only if the statement is aGeneratedColumnStatement;falseotherwise.
-
generateSingleColumn
protected liquibase.sql.Sql[] generateSingleColumn(liquibase.statement.core.AddColumnStatement statement, liquibase.database.Database database) - Overrides:
generateSingleColumnin classliquibase.sqlgenerator.core.AddColumnGenerator
-
handleGeneratedColumn
protected void handleGeneratedColumn(GeneratedColumnStatement statement, liquibase.database.Database database, StringBuilder sqlBuilder)
-