001package gudusoft.gsqlparser.lineage.v2.model; 002 003import java.util.Arrays; 004import java.util.Collections; 005import java.util.List; 006import java.util.Map; 007 008/** 009 * The self-describing header (Section 6.2): the producer of this document (for a merged document, 010 * the merger), the registry version of its codes and its source embedding. Everything that 011 * describes an analysis is in analysisContexts. Generated from the schema definition Header by 012 * scripts/sqllr/gen_type_model.py; do not edit. 013 * 014 * @since 4.2.17 015 */ 016public final class Header extends SqllrObject { 017 018 /** The members the schema defines, in schema order. */ 019 public static final List<String> MEMBERS = Collections.unmodifiableList(Arrays.asList("producer", "registryVersion", "sourceEmbedding", "createdAt", "extensions")); 020 021 /** The members the schema requires. */ 022 public static final List<String> REQUIRED = Collections.unmodifiableList(Arrays.<String>asList("producer", "registryVersion", "sourceEmbedding")); 023 024 /** Reads a JSON object as a {@code Header}. */ 025 public static final Reader<Header> READER = new Reader<Header>() { 026 @Override 027 public Header read(Object json) { 028 return fromJson(json); 029 } 030 }; 031 032 private Header(Map<String, Object> members) { 033 super(members); 034 } 035 036 /** A {@code Header} with the members of a JSON object, all kept. */ 037 public static Header fromJson(Object json) { 038 return new Header(members(json, "Header")); 039 } 040 041 public static Builder builder() { 042 return new Builder(null); 043 } 044 045 /** A builder holding every member of this object. */ 046 public Builder toBuilder() { 047 return new Builder(toJson()); 048 } 049 050 /** 051 * The member {@code producer}. The producer of this document; for a merged document, the 052 * merger. The producer of each analysis is in its analysis context. Null when absent; throws 053 * IllegalStateException when the member holds another JSON type. 054 */ 055 public Producer getProducer() { 056 return typed("producer", Producer.READER); 057 } 058 059 /** 060 * The member {@code registryVersion}. The core registry version whose codes the document uses. 061 * A consumer that supports an older range reports VERSION_REGISTRY_TOO_NEW, not a data error. 062 * Null when absent; throws IllegalStateException when the member holds another JSON type. 063 */ 064 public String getRegistryVersion() { 065 return string("registryVersion"); 066 } 067 068 /** 069 * The member {@code sourceEmbedding}. Whether and how source text is embedded. Registry group 070 * 'sourceEmbedding' (Section 12.3). Null when absent; throws IllegalStateException when the 071 * member holds another JSON type. 072 */ 073 public String getSourceEmbedding() { 074 return string("sourceEmbedding"); 075 } 076 077 /** 078 * The member {@code createdAt}. Creation time. Never part of any semantic digest (Section 5.3). 079 * Null when absent; throws IllegalStateException when the member holds another JSON type. 080 */ 081 public String getCreatedAt() { 082 return string("createdAt"); 083 } 084 085 /** 086 * The member {@code extensions}. Extension data keyed by namespace. Every core object may carry 087 * it; it never takes part in a core identity. Null when absent; throws IllegalStateException 088 * when the member holds another JSON type. 089 */ 090 public Map<String, Extension> getExtensions() { 091 return typed("extensions", mapOf(Extension.READER)); 092 } 093 094 /** Collects the members of a new {@code Header}. */ 095 public static final class Builder extends SqllrObject.Builder<Header, Builder> { 096 private Builder(Map<String, Object> from) { 097 super(from); 098 } 099 100 /** Sets the member {@code producer}; null removes it. */ 101 public Builder producer(Producer value) { 102 return set("producer", value); 103 } 104 105 /** Sets the member {@code registryVersion}; null removes it. */ 106 public Builder registryVersion(String value) { 107 return set("registryVersion", value); 108 } 109 110 /** Sets the member {@code sourceEmbedding}; null removes it. */ 111 public Builder sourceEmbedding(String value) { 112 return set("sourceEmbedding", value); 113 } 114 115 /** Sets the member {@code createdAt}; null removes it. */ 116 public Builder createdAt(String value) { 117 return set("createdAt", value); 118 } 119 120 /** Sets the member {@code extensions}; null removes it. */ 121 public Builder extensions(Map<String, Extension> value) { 122 return set("extensions", value); 123 } 124 125 @Override 126 public Header build() { 127 return new Header(frozenMembers()); 128 } 129 } 130}