84 lines
3.7 KiB
Java
84 lines
3.7 KiB
Java
package com.example.questionbank.config;
|
|
|
|
import java.util.concurrent.Executor;
|
|
import javax.sql.DataSource;
|
|
import liquibase.integration.spring.SpringLiquibase;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.ObjectProvider;
|
|
import org.springframework.beans.factory.annotation.Qualifier;
|
|
import org.springframework.boot.jdbc.autoconfigure.DataSourceProperties;
|
|
import org.springframework.boot.liquibase.autoconfigure.LiquibaseDataSource;
|
|
import org.springframework.boot.liquibase.autoconfigure.LiquibaseProperties;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.core.env.Environment;
|
|
import org.springframework.util.CollectionUtils;
|
|
import org.springframework.util.StringUtils;
|
|
import tech.jhipster.config.JHipsterConstants;
|
|
import tech.jhipster.config.liquibase.SpringLiquibaseUtil;
|
|
|
|
@Configuration
|
|
public class LiquibaseConfiguration {
|
|
|
|
private static final Logger LOG = LoggerFactory.getLogger(LiquibaseConfiguration.class);
|
|
|
|
private final Environment env;
|
|
|
|
public LiquibaseConfiguration(Environment env) {
|
|
this.env = env;
|
|
}
|
|
|
|
@Bean
|
|
public SpringLiquibase liquibase(
|
|
@Qualifier("taskExecutor") Executor executor,
|
|
LiquibaseProperties liquibaseProperties,
|
|
@LiquibaseDataSource ObjectProvider<DataSource> liquibaseDataSource,
|
|
ObjectProvider<DataSource> dataSource,
|
|
ApplicationProperties applicationProperties,
|
|
DataSourceProperties dataSourceProperties
|
|
) {
|
|
SpringLiquibase liquibase;
|
|
if (Boolean.TRUE.equals(applicationProperties.getLiquibase().getAsyncStart())) {
|
|
liquibase = SpringLiquibaseUtil.createAsyncSpringLiquibase(
|
|
this.env,
|
|
executor,
|
|
liquibaseDataSource.getIfAvailable(),
|
|
liquibaseProperties,
|
|
dataSource.getIfUnique(),
|
|
dataSourceProperties
|
|
);
|
|
} else {
|
|
liquibase = SpringLiquibaseUtil.createSpringLiquibase(
|
|
liquibaseDataSource.getIfAvailable(),
|
|
liquibaseProperties,
|
|
dataSource.getIfUnique(),
|
|
dataSourceProperties
|
|
);
|
|
}
|
|
liquibase.setChangeLog("classpath:config/liquibase/master.xml");
|
|
if (!CollectionUtils.isEmpty(liquibaseProperties.getContexts())) {
|
|
liquibase.setContexts(StringUtils.collectionToCommaDelimitedString(liquibaseProperties.getContexts()));
|
|
}
|
|
liquibase.setDefaultSchema(liquibaseProperties.getDefaultSchema());
|
|
liquibase.setLiquibaseSchema(liquibaseProperties.getLiquibaseSchema());
|
|
liquibase.setLiquibaseTablespace(liquibaseProperties.getLiquibaseTablespace());
|
|
liquibase.setDatabaseChangeLogLockTable(liquibaseProperties.getDatabaseChangeLogLockTable());
|
|
liquibase.setDatabaseChangeLogTable(liquibaseProperties.getDatabaseChangeLogTable());
|
|
liquibase.setDropFirst(liquibaseProperties.isDropFirst());
|
|
if (!CollectionUtils.isEmpty(liquibaseProperties.getLabelFilter())) {
|
|
liquibase.setLabelFilter(StringUtils.collectionToCommaDelimitedString(liquibaseProperties.getLabelFilter()));
|
|
}
|
|
liquibase.setChangeLogParameters(liquibaseProperties.getParameters());
|
|
liquibase.setRollbackFile(liquibaseProperties.getRollbackFile());
|
|
liquibase.setTestRollbackOnUpdate(liquibaseProperties.isTestRollbackOnUpdate());
|
|
if (env.matchesProfiles(JHipsterConstants.SPRING_PROFILE_NO_LIQUIBASE)) {
|
|
liquibase.setShouldRun(false);
|
|
} else {
|
|
liquibase.setShouldRun(liquibaseProperties.isEnabled());
|
|
LOG.debug("Configuring Liquibase");
|
|
}
|
|
return liquibase;
|
|
}
|
|
}
|