CanonicalArchitectureModel.java
package com.taxonomy.dsl.model;
import java.util.*;
/**
* Complete canonical architecture model parsed from one or more DSL documents.
*
* <p>Aggregates all architecture elements, relations, requirements, mappings,
* views, and evidence into a single queryable model.
*/
public class CanonicalArchitectureModel {
private final List<ArchitectureElement> elements = new ArrayList<>();
private final List<ArchitectureRelation> relations = new ArrayList<>();
private final List<ArchitectureRequirement> requirements = new ArrayList<>();
private final List<RequirementMapping> mappings = new ArrayList<>();
private final List<ArchitectureView> views = new ArrayList<>();
private final List<ArchitectureEvidence> evidence = new ArrayList<>();
private final List<ArchitectureSource> sources = new ArrayList<>();
private final List<ArchitectureSourceVersion> sourceVersions = new ArrayList<>();
private final List<ArchitectureSourceFragment> sourceFragments = new ArrayList<>();
private final List<ArchitectureRequirementSourceLink> requirementSourceLinks = new ArrayList<>();
public List<ArchitectureElement> getElements() { return elements; }
public List<ArchitectureRelation> getRelations() { return relations; }
public List<ArchitectureRequirement> getRequirements() { return requirements; }
public List<RequirementMapping> getMappings() { return mappings; }
public List<ArchitectureView> getViews() { return views; }
public List<ArchitectureEvidence> getEvidence() { return evidence; }
public List<ArchitectureSource> getSources() { return sources; }
public List<ArchitectureSourceVersion> getSourceVersions() { return sourceVersions; }
public List<ArchitectureSourceFragment> getSourceFragments() { return sourceFragments; }
public List<ArchitectureRequirementSourceLink> getRequirementSourceLinks() { return requirementSourceLinks; }
/** Look up an element by ID. */
public Optional<ArchitectureElement> findElement(String id) {
return elements.stream().filter(e -> e.getId().equals(id)).findFirst();
}
/** Collect all unique element IDs. */
public Set<String> allElementIds() {
Set<String> ids = new LinkedHashSet<>();
elements.forEach(e -> ids.add(e.getId()));
return ids;
}
}