Class GeneratedColumnChange
java.lang.Object
liquibase.AbstractExtensibleObject
liquibase.plugin.AbstractPlugin
liquibase.change.AbstractChange
org.keycloak.models.map.storage.jpa.liquibase.extension.GeneratedColumnChange
- All Implemented Interfaces:
Cloneable
,liquibase.change.Change
,liquibase.change.ChangeWithColumns<AddGeneratedColumnConfig>
,liquibase.ExtensibleObject
,liquibase.plugin.Plugin
,liquibase.serializer.LiquibaseSerializable
public class GeneratedColumnChange
extends liquibase.change.AbstractChange
implements liquibase.change.ChangeWithColumns<AddGeneratedColumnConfig>
Extension used to add generated column to the table. Value is either generated from a property of a JSON file stored in one of the table's
columns or from hash value of existing column.
Example configuration in the changelog:
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd"> <changeSet author="keycloak" id="some_id"> ... <ext:addGeneratedColumn tableName="test"> <ext:column name="new_column" type="VARCHAR(36)" jsonColumn="metadata" jsonProperty="alias"/> </ext:addGeneratedColumn> </changeSet>The above configuration is adding a new column, named
new_column
, whose values are generated from the alias
property
of the JSON file stored in column metadata
. If, for example, a particular entry in the table contains the JSON
{"name":"duke","alias":"jduke"}
in column metadata
, the value generated for the new column will be jduke
.
The configuration below adds new generated column named new_column
with value being a hash of a column column
.
For more information about the type see KeycloakHashDataType
.
<changeSet author="keycloak" id="some_id"> ... <ext:addGeneratedColumn tableName="test"> <ext:column name="new_column" type="kc_hash" hashOf="column"/> </ext:addGeneratedColumn> </changeSet>
- Author:
- Stefan Guilhen
-
Nested Class Summary
Nested classes/interfaces inherited from interface liquibase.serializer.LiquibaseSerializable
liquibase.serializer.LiquibaseSerializable.SerializationType
-
Field Summary
Fields inherited from class liquibase.change.AbstractChange
NODENAME_COLUMN
Fields inherited from interface liquibase.change.Change
EMPTY_CHANGE, SHOULD_EXECUTE
Fields inherited from interface liquibase.serializer.LiquibaseSerializable
GENERIC_CHANGELOG_EXTENSION_NAMESPACE, GENERIC_SNAPSHOT_EXTENSION_NAMESPACE, STANDARD_CHANGELOG_NAMESPACE, STANDARD_SNAPSHOT_NAMESPACE
Fields inherited from interface liquibase.plugin.Plugin
PRIORITY_DATABASE, PRIORITY_DEFAULT, PRIORITY_NOT_APPLICABLE, PRIORITY_SPECIALIZED
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addColumn
(AddGeneratedColumnConfig column) liquibase.change.ChangeStatus
checkStatus
(liquibase.database.Database database) protected liquibase.change.Change[]
liquibase.statement.SqlStatement[]
generateStatements
(liquibase.database.Database database) void
setCatalogName
(String catalogName) void
setColumns
(List<AddGeneratedColumnConfig> columns) void
setSchemaName
(String schemaName) void
setTableName
(String tableName) liquibase.exception.ValidationErrors
validate
(liquibase.database.Database database) Methods inherited from class liquibase.change.AbstractChange
createChangeMetaData, createChangeParameterMetadata, createDescriptionMetaData, createEmptyColumnConfig, createExampleValueMetaData, createMustEqualExistingMetaData, createRequiredDatabasesMetaData, createSerializationTypeMetaData, createSinceMetaData, createSupportedDatabasesMetaData, customLoadLogic, equals, finishInitialization, generateCheckSum, generateRollbackStatements, generateRollbackStatementsVolatile, generateStatementsVolatile, getAffectedDatabaseObjects, getChangeSet, getDescription, getExcludedFieldFilters, getResourceAccessor, getSerializableFieldNamespace, getSerializableFields, getSerializableFieldType, getSerializableFieldValue, getSerializedObjectName, hashCode, isInvalidProperty, load, serialize, serializeValue, setChangeSet, setResourceAccessor, shouldExecuteChange, supports, supportsRollback, toString, warn
Methods inherited from class liquibase.AbstractExtensibleObject
clone, describe, get, get, get, getAttributes, getFieldValue, getObjectMetaData, getValuePath, has, set
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface liquibase.ExtensibleObject
clone, describe, get, get, getAttributes, getObjectMetaData, getValuePath, has, set
-
Constructor Details
-
GeneratedColumnChange
public GeneratedColumnChange()
-
-
Method Details
-
getCatalogName
-
setCatalogName
-
getSchemaName
-
setSchemaName
-
getTableName
-
setTableName
-
addColumn
- Specified by:
addColumn
in interfaceliquibase.change.ChangeWithColumns<AddGeneratedColumnConfig>
-
getColumns
- Specified by:
getColumns
in interfaceliquibase.change.ChangeWithColumns<AddGeneratedColumnConfig>
-
setColumns
- Specified by:
setColumns
in interfaceliquibase.change.ChangeWithColumns<AddGeneratedColumnConfig>
-
generateStatements
public liquibase.statement.SqlStatement[] generateStatements(liquibase.database.Database database) - Specified by:
generateStatements
in interfaceliquibase.change.Change
-
createInverses
protected liquibase.change.Change[] createInverses()- Overrides:
createInverses
in classliquibase.change.AbstractChange
-
checkStatus
public liquibase.change.ChangeStatus checkStatus(liquibase.database.Database database) - Specified by:
checkStatus
in interfaceliquibase.change.Change
- Overrides:
checkStatus
in classliquibase.change.AbstractChange
-
getConfirmationMessage
- Specified by:
getConfirmationMessage
in interfaceliquibase.change.Change
-
getSerializedObjectNamespace
- Specified by:
getSerializedObjectNamespace
in interfaceliquibase.serializer.LiquibaseSerializable
- Overrides:
getSerializedObjectNamespace
in classliquibase.change.AbstractChange
-
validate
public liquibase.exception.ValidationErrors validate(liquibase.database.Database database) - Specified by:
validate
in interfaceliquibase.change.Change
- Overrides:
validate
in classliquibase.change.AbstractChange
-