ContextComparison.java
package com.taxonomy.dto;
import java.util.List;
/**
* Result of comparing two architecture contexts.
*
* <p>Provides a multi-level view of changes:
* <ol>
* <li><b>Summary</b> — counts of added/changed/removed elements and relations</li>
* <li><b>Semantic changes</b> — individual change descriptions</li>
* <li><b>Raw DSL diff</b> — textual diff for expert users</li>
* </ol>
*
* @param left the left (older/source) context reference
* @param right the right (newer/target) context reference
* @param summary change counts
* @param changes individual semantic changes
* @param rawDslDiff raw DSL text diff (optional, may be null)
*/
public record ContextComparison(
ContextRef left,
ContextRef right,
DiffSummary summary,
List<SemanticChange> changes,
String rawDslDiff
) {
/**
* Counts of changes grouped by category.
*
* @param elementsAdded number of new elements
* @param elementsChanged number of modified elements
* @param elementsRemoved number of deleted elements
* @param relationsAdded number of new relations
* @param relationsChanged number of modified relations
* @param relationsRemoved number of deleted relations
*/
public record DiffSummary(
int elementsAdded,
int elementsChanged,
int elementsRemoved,
int relationsAdded,
int relationsChanged,
int relationsRemoved
) {
public int totalChanges() {
return elementsAdded + elementsChanged + elementsRemoved
+ relationsAdded + relationsChanged + relationsRemoved;
}
}
}