liquibase.command.core.GenerateChangeLogCommand Maven / Gradle / Ivy
package liquibase.command.core;
import liquibase.command.CommandResult;
import liquibase.diff.DiffResult;
import liquibase.diff.compare.CompareControl;
import liquibase.diff.output.changelog.DiffToChangeLog;
import liquibase.exception.DatabaseException;
import liquibase.snapshot.DatabaseSnapshot;
import liquibase.snapshot.InvalidExampleException;
import liquibase.snapshot.SnapshotControl;
import liquibase.snapshot.SnapshotGeneratorFactory;
import liquibase.util.StringUtils;
import java.io.PrintStream;
public class GenerateChangeLogCommand extends DiffToChangeLogCommand {
private String author;
private String context;
@Override
public String getName() {
return "generateChangeLog";
}
public String getAuthor() {
return author;
}
public GenerateChangeLogCommand setAuthor(String author) {
this.author = author;
return this;
}
public String getContext() {
return context;
}
public GenerateChangeLogCommand setContext(String context) {
this.context = context;
return this;
}
@Override
protected CommandResult run() throws Exception {
DiffResult diffResult = createDiffResult();
DiffToChangeLog changeLogWriter = new DiffToChangeLog(diffResult, getDiffOutputControl());
changeLogWriter.setChangeSetAuthor(author);
changeLogWriter.setChangeSetContext(context);
changeLogWriter.setChangeSetPath(getChangeLogFile());
if (StringUtils.trimToNull(getChangeLogFile()) != null) {
changeLogWriter.print(getChangeLogFile());
} else {
PrintStream outputStream = getOutputStream();
if (outputStream == null) {
outputStream = System.out;
}
changeLogWriter.print(outputStream);
}
return new CommandResult("OK");
}
@Override
protected DatabaseSnapshot createTargetSnapshot() throws DatabaseException, InvalidExampleException {
SnapshotControl snapshotControl = new SnapshotControl(getReferenceDatabase(), getSnapshotTypes());
return SnapshotGeneratorFactory.getInstance().createSnapshot(getCompareControl().getSchemas(CompareControl.DatabaseRole.REFERENCE), null, snapshotControl);
}
}