liquibase.command.core.UpdateSqlCommandStep Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of liquibase-core Show documentation
Show all versions of liquibase-core Show documentation
Liquibase is a tool for managing and executing database changes.
package liquibase.command.core;
import liquibase.UpdateSummaryEnum;
import liquibase.command.*;
import liquibase.command.core.helpers.DatabaseChangelogCommandStep;
import liquibase.database.Database;
import liquibase.util.LoggingExecutorTextUtil;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
public class UpdateSqlCommandStep extends AbstractUpdateCommandStep {
public static final String[] COMMAND_NAME = {"updateSql"};
public static final String[] LEGACY_COMMAND_NAME = {"migrateSql"};
public static final CommandArgumentDefinition CHANGELOG_FILE_ARG;
public static final CommandArgumentDefinition LABEL_FILTER_ARG;
public static final CommandArgumentDefinition CONTEXTS_ARG;
public static final CommandArgumentDefinition OUTPUT_WRITER;
public static final CommandArgumentDefinition OUTPUT_DEFAULT_SCHEMA_ARG;
public static final CommandArgumentDefinition OUTPUT_DEFAULT_CATALOG_ARG;
static {
CommandBuilder builder = new CommandBuilder(COMMAND_NAME, LEGACY_COMMAND_NAME);
CHANGELOG_FILE_ARG = builder.argument(CommonArgumentNames.CHANGELOG_FILE, String.class).required()
.description("The root changelog").build();
LABEL_FILTER_ARG = builder.argument("labelFilter", String.class)
.addAlias("labels")
.description("Changeset labels to match").build();
CONTEXTS_ARG = builder.argument("contextFilter", String.class)
.addAlias("contexts")
.description("Changeset contexts to match").build();
OUTPUT_WRITER = builder.argument("outputWriter", Writer.class)
.hidden().build();
OUTPUT_DEFAULT_SCHEMA_ARG = builder.argument("outputDefaultSchema", Boolean.class)
.description("Control whether names of objects in the default schema are fully qualified or not. If true they are. If false, only objects outside the default schema are fully qualified")
.defaultValue(true)
.build();
OUTPUT_DEFAULT_CATALOG_ARG = builder.argument("outputDefaultCatalog", Boolean.class)
.description("Control whether names of objects in the default catalog are fully qualified or not. If true they are. If false, only objects outside the default catalog are fully qualified")
.defaultValue(true)
.build();
}
@Override
public List> requiredDependencies() {
List> dependencies = new ArrayList<>();
dependencies.add(Writer.class);
dependencies.addAll(super.requiredDependencies());
return dependencies;
}
@Override
public void run(CommandResultsBuilder resultsBuilder) throws Exception {
final CommandScope commandScope = resultsBuilder.getCommandScope();
final Database database = (Database) commandScope.getDependency(Database.class);
final String changelogFile = commandScope.getArgumentValue(DatabaseChangelogCommandStep.CHANGELOG_FILE_ARG);
LoggingExecutorTextUtil.outputHeader("Update Database Script", database, changelogFile);
super.run(resultsBuilder);
}
@Override
public String[][] defineCommandNames() {
return new String[][]{
COMMAND_NAME,
LEGACY_COMMAND_NAME
};
}
@Override
public void adjustCommandDefinition(CommandDefinition commandDefinition) {
commandDefinition.setShortDescription("Generate the SQL to deploy changes in the changelog which have not been deployed");
if (commandDefinition.is(LEGACY_COMMAND_NAME)) {
commandDefinition.setHidden(true);
}
}
@Override
public String getChangelogFileArg(CommandScope commandScope) {
return commandScope.getArgumentValue(CHANGELOG_FILE_ARG);
}
@Override
public String getContextsArg(CommandScope commandScope) {
return commandScope.getArgumentValue(CONTEXTS_ARG);
}
@Override
public String getLabelFilterArg(CommandScope commandScope) {
return commandScope.getArgumentValue(LABEL_FILTER_ARG);
}
@Override
public String[] getCommandName() {
return COMMAND_NAME;
}
@Override
public UpdateSummaryEnum getShowSummary(CommandScope commandScope) {
return UpdateSummaryEnum.OFF;
}
}