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.AddColumnGeneratorASqlGeneratorimplementation that supportsGeneratedColumnStatements. 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.- Author:
- Stefan Guilhen
-
-
Constructor Summary
Constructors Constructor Description GeneratedColumnSqlGenerator()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected liquibase.sql.Sql[]generateSingleColumn(liquibase.statement.core.AddColumnStatement statement, liquibase.database.Database database)intgetPriority()Override 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, validate
-
-
-
-
Method Detail
-
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)
-
-