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 producer that made the document. Generated from the schema definition Producer by 010 * scripts/sqllr/gen_type_model.py; do not edit. 011 * 012 * @since 4.2.17 013 */ 014public final class Producer extends SqllrObject { 015 016 /** The members the schema defines, in schema order. */ 017 public static final List<String> MEMBERS = Collections.unmodifiableList(Arrays.asList("name", "version", "extensions")); 018 019 /** The members the schema requires. */ 020 public static final List<String> REQUIRED = Collections.unmodifiableList(Arrays.<String>asList("name", "version")); 021 022 /** Reads a JSON object as a {@code Producer}. */ 023 public static final Reader<Producer> READER = new Reader<Producer>() { 024 @Override 025 public Producer read(Object json) { 026 return fromJson(json); 027 } 028 }; 029 030 private Producer(Map<String, Object> members) { 031 super(members); 032 } 033 034 /** A {@code Producer} with the members of a JSON object, all kept. */ 035 public static Producer fromJson(Object json) { 036 return new Producer(members(json, "Producer")); 037 } 038 039 public static Builder builder() { 040 return new Builder(null); 041 } 042 043 /** A builder holding every member of this object. */ 044 public Builder toBuilder() { 045 return new Builder(toJson()); 046 } 047 048 /** 049 * The member {@code name}. Null when absent; throws IllegalStateException when the member holds 050 * another JSON type. 051 */ 052 public String getName() { 053 return string("name"); 054 } 055 056 /** 057 * The member {@code version}. Null when absent; throws IllegalStateException when the member 058 * holds another JSON type. 059 */ 060 public String getVersion() { 061 return string("version"); 062 } 063 064 /** 065 * The member {@code extensions}. Extension data keyed by namespace. Every core object may carry 066 * it; it never takes part in a core identity. Null when absent; throws IllegalStateException 067 * when the member holds another JSON type. 068 */ 069 public Map<String, Extension> getExtensions() { 070 return typed("extensions", mapOf(Extension.READER)); 071 } 072 073 /** Collects the members of a new {@code Producer}. */ 074 public static final class Builder extends SqllrObject.Builder<Producer, Builder> { 075 private Builder(Map<String, Object> from) { 076 super(from); 077 } 078 079 /** Sets the member {@code name}; null removes it. */ 080 public Builder name(String value) { 081 return set("name", value); 082 } 083 084 /** Sets the member {@code version}; null removes it. */ 085 public Builder version(String value) { 086 return set("version", value); 087 } 088 089 /** Sets the member {@code extensions}; null removes it. */ 090 public Builder extensions(Map<String, Extension> value) { 091 return set("extensions", value); 092 } 093 094 @Override 095 public Producer build() { 096 return new Producer(frozenMembers()); 097 } 098 } 099}