Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public class DiffService {
* @return diff result
*/
public CliDiffResult performDiff(CliConfiguration config) throws Exception {
log.info("Starting diff operation with strategy: {}, algorithm: {}",
log.info("Starting diff operation with strategy: {}, algorithm: {}",
config.getStrategyMode(), config.getAlgorithm());

long startTime = System.currentTimeMillis();
Expand All @@ -63,9 +63,10 @@ public CliDiffResult performDiff(CliConfiguration config) throws Exception {

try {
lifecycle.onDiffStart(diffContext);
CompareRuntime runtime = new DefaultCompareRuntime();
CompareRuntime runtime = createCompareRuntime();
DiffResult coreResult = runtime.execute(toCompareRequest(config));

publishDifferences(coreResult, lifecycle, diffContext);
lifecycle.onDiffComplete(coreResult, diffContext);

// Convert core result to CLI result
Expand Down Expand Up @@ -99,15 +100,19 @@ public CliDiffResult performDiff(CliConfiguration config) throws Exception {
}
}

private DiffLifecycle buildLifecycle(CliConfiguration config) {
protected CompareRuntime createCompareRuntime() {
return new DefaultCompareRuntime();
}

protected DiffLifecycle buildLifecycle(CliConfiguration config) {
ResultConfig resultConfig = config.getResult();
if (resultConfig == null || resultConfig.getSinks() == null || resultConfig.getSinks().isEmpty()) {
return new NoopDiffLifecycle();
}
return new DefaultDiffLifecycle(resultConfig);
}

private DiffContext buildDiffContext(CliConfiguration config) {
protected DiffContext buildDiffContext(CliConfiguration config) {
TablePath sourcePath = null;
TablePath targetPath = null;
List<String> sourceColumnNames = new ArrayList<>();
Expand Down Expand Up @@ -152,6 +157,13 @@ private DiffContext buildDiffContext(CliConfiguration config) {
.build();
}

private void publishDifferences(DiffResult coreResult, DiffLifecycle lifecycle, DiffContext diffContext) throws Exception {
if (coreResult == null || coreResult.getDifferences() == null || coreResult.getDifferences().isEmpty()) {
return;
}
lifecycle.onDifferencesFound(coreResult.getDifferences(), diffContext);
}

/**
* Convert core DiffResult to CLI DiffResult.
*/
Expand Down Expand Up @@ -564,7 +576,7 @@ private Integer integerValue(Object value) {
* Perform a dry run to validate configuration without executing diff.
*/
public CliDiffResult performDryRun(CliConfiguration config) throws Exception {
log.info("Performing dry run for diff operation with strategy: {}, algorithm: {}",
log.info("Performing dry run for diff operation with strategy: {}, algorithm: {}",
config.getStrategyMode(), config.getAlgorithm());
ConnectorProbeService probeService = new ConnectorProbeService();
ComparisonConfig comparison = config.getComparison();
Expand Down
Loading