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}