Top Description Fields Constructors Methods
liquibase.sqlgenerator

public Class SqlGeneratorFactory

extends Object
Class Inheritance
Imports
liquibase.Scope, liquibase.change.Change, liquibase.database.Database, liquibase.exception.UnexpectedLiquibaseException, .ValidationErrors, .Warnings, liquibase.sql.Sql, liquibase.statement.SqlStatement, liquibase.structure.DatabaseObject, java.lang.reflect.ParameterizedType, .Type, .TypeVariable, java.util.*, java.util.concurrent.atomic.AtomicReference

SqlGeneratorFactory is a singleton registry of SqlGenerators. Use the register(SqlGenerator) method to add custom SqlGenerators, and the getBestGenerator() method to retrieve the SqlGenerator that should be used for a given SqlStatement.

Field Summary

Modifier and TypeField and Description
public static final String
private final List<SqlGenerator<T extends SqlStatement>>
private final Map<String, SortedSet<SqlGenerator<T extends SqlStatement>>>
private final Map<Class<?>, Type[]>
private final Map<Class<?>, Type>
private static SqlGeneratorFactory

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
private void
checkType(Type type, SqlStatement statement, SqlGenerator<T extends SqlStatement> generator, Database database, SortedSet<SqlGenerator<T extends SqlStatement>> validGenerators)

private SqlGeneratorChain<T extends SqlStatement>
public boolean
public Sql[]
generateSql(Change change, Database database)

public Sql[]
generateSql(SqlStatement[] statements, Database database)

public Sql[]
generateSql(SqlStatement statement, Database database)

public boolean
generateStatementsVolatile(SqlStatement statement, Database database)

Return true if the SqlStatement class queries the database in any way to determine Statements to execute.

public Set<DatabaseObject>
protected Collection<SqlGenerator<T extends SqlStatement>>
public synchronized SortedSet<SqlGenerator<T extends SqlStatement>>
getGenerators(SqlStatement statement, Database database)

private Type[]
private Type
public static synchronized SqlGeneratorFactory
getInstance()

Return singleton SqlGeneratorFactory

private boolean
isTypeEqual(Type aType, Class<T> aClass)

private Sql[]

Returns:

the generated SQL
putSqlArrayInScope
(Sql[]
the generated SQL
sqls
)

Save the generated SQL in the scope.

public void
register(SqlGenerator<T extends SqlStatement> generator)

public static synchronized void
public boolean
supports(SqlStatement statement, Database database)

public void
unregister(SqlGenerator<T extends SqlStatement> generator)

public void
unregister(Class<T> generatorClass)

public ValidationErrors
validate(SqlStatement statement, Database database)

public Warnings
warn(SqlStatement statement, Database database)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

GENERATED_SQL_ARRAY_SCOPE_KEYback to summary
public static final String GENERATED_SQL_ARRAY_SCOPE_KEY
generatorsback to summary
private final List<SqlGenerator<T extends SqlStatement>> generators
generatorsByKeyback to summary
private final Map<String, SortedSet<SqlGenerator<T extends SqlStatement>>> generatorsByKey
genericInterfacesCacheback to summary
private final Map<Class<?>, Type[]> genericInterfacesCache
genericSuperClassCacheback to summary
private final Map<Class<?>, Type> genericSuperClassCache
instanceback to summary
private static SqlGeneratorFactory instance

Constructor Detail

SqlGeneratorFactoryback to summary
private SqlGeneratorFactory()

Method Detail

checkTypeback to summary
private void checkType(Type type, SqlStatement statement, SqlGenerator<T extends SqlStatement> generator, Database database, SortedSet<SqlGenerator<T extends SqlStatement>> validGenerators)
createGeneratorChainback to summary
private SqlGeneratorChain<T extends SqlStatement> createGeneratorChain(SqlStatement statement, Database database)
generateRollbackStatementsVolatileback to summary
public boolean generateRollbackStatementsVolatile(SqlStatement statement, Database database)
generateSqlback to summary
public Sql[] generateSql(Change change, Database database)
generateSqlback to summary
public Sql[] generateSql(SqlStatement[] statements, Database database)
generateSqlback to summary
public Sql[] generateSql(SqlStatement statement, Database database)
generateStatementsVolatileback to summary
public boolean generateStatementsVolatile(SqlStatement statement, Database database)

Return true if the SqlStatement class queries the database in any way to determine Statements to execute. If the statement queries the database, it cannot be used in updateSql type operations

getAffectedDatabaseObjectsback to summary
public Set<DatabaseObject> getAffectedDatabaseObjects(SqlStatement statement, Database database)
getGeneratorsback to summary
protected Collection<SqlGenerator<T extends SqlStatement>> getGenerators()
getGeneratorsback to summary
public synchronized SortedSet<SqlGenerator<T extends SqlStatement>> getGenerators(SqlStatement statement, Database database)
getGenericInterfacesback to summary
private Type[] getGenericInterfaces(Class<?> clazz)
getGenericSuperclassback to summary
private Type getGenericSuperclass(Class<?> clazz)
getInstanceback to summary
public static synchronized SqlGeneratorFactory getInstance()

Return singleton SqlGeneratorFactory

isTypeEqualback to summary
private boolean isTypeEqual(Type aType, Class<T> aClass)
putSqlArrayInScopeback to summary
private Sql[] putSqlArrayInScope(Sql[] sqls)

Save the generated SQL in the scope.

Parameters
sqls:Sql[]

the generated SQL

Returns:Sql[]

the generated SQL

registerback to summary
public void register(SqlGenerator<T extends SqlStatement> generator)
resetback to summary
public static synchronized void reset()
supportsback to summary
public boolean supports(SqlStatement statement, Database database)
unregisterback to summary
public void unregister(SqlGenerator<T extends SqlStatement> generator)
unregisterback to summary
public void unregister(Class<T> generatorClass)
validateback to summary
public ValidationErrors validate(SqlStatement statement, Database database)
warnback to summary
public Warnings warn(SqlStatement statement, Database database)