001package gudusoft.gsqlparser.lineage2.api; 002 003import gudusoft.gsqlparser.lineage2.contract.ContractDiagnostic; 004import gudusoft.gsqlparser.lineage2.contract.ContractEdge; 005import gudusoft.gsqlparser.lineage2.contract.ContractJsonExporter; 006import gudusoft.gsqlparser.lineage2.contract.ContractStatement; 007import gudusoft.gsqlparser.lineage2.contract.LineageDocument; 008 009import java.util.List; 010 011/** 012 * Result of one {@link LineageAnalyzer#analyze} call: the contract 013 * document for the analyzed unit plus its deterministic JSON form. 014 * 015 * <p>Internal API: not part of the public gsqlparser surface. 016 */ 017public final class LineageResult { 018 019 private final LineageDocument document; 020 021 LineageResult(LineageDocument document) { 022 if (document == null) { 023 throw new IllegalArgumentException("document must not be null"); 024 } 025 this.document = document; 026 } 027 028 /** The full contract document (lineage2-contract.md ยง2). */ 029 public LineageDocument getDocument() { 030 return document; 031 } 032 033 /** Convenience โ {@code getDocument().getStatements()}. */ 034 public List<ContractStatement> getStatements() { 035 return document.getStatements(); 036 } 037 038 /** Convenience โ {@code getDocument().getEdges()}. */ 039 public List<ContractEdge> getEdges() { 040 return document.getEdges(); 041 } 042 043 /** Convenience โ document-level diagnostics only. */ 044 public List<ContractDiagnostic> getDiagnostics() { 045 return document.getDiagnostics(); 046 } 047 048 /** 049 * The deterministic contract JSON (no trailing newline). Same input + 050 * same engine version => byte-identical output. 051 */ 052 public String toJson() { 053 return ContractJsonExporter.toJson(document); 054 } 055}