/* * InfluxDB OSS API Service * * The InfluxDB v2 API provides a programmatic interface for all interactions with InfluxDB. Access the InfluxDB API using the `/api/v2/` endpoint. * * OpenAPI spec version: 2.0.0 * * Generated by: https://github.com/openapitools/openapi-generator.git */ using System; using System.Linq; using System.IO; using System.Text; using System.Text.RegularExpressions; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Runtime.Serialization; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using OpenAPIDateConverter = InfluxDB.Client.Api.Client.OpenAPIDateConverter; namespace InfluxDB.Client.Api.Domain { /// /// Selects one of two expressions, `Alternate` or `Consequent`, depending on a third boolean expression, `Test` /// [DataContract] public partial class ConditionalExpression : Expression, IEquatable { /// /// Initializes a new instance of the class. /// /// Type of AST node. /// test. /// alternate. /// consequent. public ConditionalExpression(string type = default, Expression test = default, Expression alternate = default, Expression consequent = default) : base() { Type = type; Test = test; Alternate = alternate; Consequent = consequent; } /// /// Type of AST node /// /// Type of AST node [DataMember(Name = "type", EmitDefaultValue = false)] public string Type { get; set; } /// /// Gets or Sets Test /// [DataMember(Name = "test", EmitDefaultValue = false)] [JsonConverter(typeof(ConditionalExpressionTestAdapter))] public Expression Test { get; set; } /// /// Gets or Sets Alternate /// [DataMember(Name = "alternate", EmitDefaultValue = false)] [JsonConverter(typeof(ConditionalExpressionAlternateAdapter))] public Expression Alternate { get; set; } /// /// Gets or Sets Consequent /// [DataMember(Name = "consequent", EmitDefaultValue = false)] [JsonConverter(typeof(ConditionalExpressionConsequentAdapter))] public Expression Consequent { get; set; } /// /// Returns the string presentation of the object /// /// String presentation of the object public override string ToString() { var sb = new StringBuilder(); sb.Append("class ConditionalExpression {\n"); sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); sb.Append(" Type: ").Append(Type).Append("\n"); sb.Append(" Test: ").Append(Test).Append("\n"); sb.Append(" Alternate: ").Append(Alternate).Append("\n"); sb.Append(" Consequent: ").Append(Consequent).Append("\n"); sb.Append("}\n"); return sb.ToString(); } /// /// Returns the JSON string presentation of the object /// /// JSON string presentation of the object public override string ToJson() { return JsonConvert.SerializeObject(this, Formatting.Indented); } /// /// Returns true if objects are equal /// /// Object to be compared /// Boolean public override bool Equals(object input) { return Equals(input as ConditionalExpression); } /// /// Returns true if ConditionalExpression instances are equal /// /// Instance of ConditionalExpression to be compared /// Boolean public bool Equals(ConditionalExpression input) { if (input == null) { return false; } return base.Equals(input) && ( Type == input.Type || Type != null && Type.Equals(input.Type) ) && base.Equals(input) && Test != null && Test.Equals(input.Test) && base.Equals(input) && Alternate != null && Alternate.Equals(input.Alternate) && base.Equals(input) && Consequent != null && Consequent.Equals(input.Consequent); } /// /// Gets the hash code /// /// Hash code public override int GetHashCode() { unchecked // Overflow is fine, just wrap { var hashCode = base.GetHashCode(); if (Type != null) { hashCode = hashCode * 59 + Type.GetHashCode(); } if (Test != null) { hashCode = hashCode * 59 + Test.GetHashCode(); } if (Alternate != null) { hashCode = hashCode * 59 + Alternate.GetHashCode(); } if (Consequent != null) { hashCode = hashCode * 59 + Consequent.GetHashCode(); } return hashCode; } } public class ConditionalExpressionAlternateAdapter : JsonConverter { private static readonly Dictionary Types = new Dictionary(new Client.DiscriminatorComparer()) { { new[] { "ArrayExpression" }, typeof(ArrayExpression) }, { new[] { "DictExpression" }, typeof(DictExpression) }, { new[] { "FunctionExpression" }, typeof(FunctionExpression) }, { new[] { "BinaryExpression" }, typeof(BinaryExpression) }, { new[] { "CallExpression" }, typeof(CallExpression) }, { new[] { "ConditionalExpression" }, typeof(ConditionalExpression) }, { new[] { "LogicalExpression" }, typeof(LogicalExpression) }, { new[] { "MemberExpression" }, typeof(MemberExpression) }, { new[] { "IndexExpression" }, typeof(IndexExpression) }, { new[] { "ObjectExpression" }, typeof(ObjectExpression) }, { new[] { "ParenExpression" }, typeof(ParenExpression) }, { new[] { "PipeExpression" }, typeof(PipeExpression) }, { new[] { "UnaryExpression" }, typeof(UnaryExpression) }, { new[] { "BooleanLiteral" }, typeof(BooleanLiteral) }, { new[] { "DateTimeLiteral" }, typeof(DateTimeLiteral) }, { new[] { "DurationLiteral" }, typeof(DurationLiteral) }, { new[] { "FloatLiteral" }, typeof(FloatLiteral) }, { new[] { "IntegerLiteral" }, typeof(IntegerLiteral) }, { new[] { "PipeLiteral" }, typeof(PipeLiteral) }, { new[] { "RegexpLiteral" }, typeof(RegexpLiteral) }, { new[] { "StringLiteral" }, typeof(StringLiteral) }, { new[] { "UnsignedIntegerLiteral" }, typeof(UnsignedIntegerLiteral) }, { new[] { "Identifier" }, typeof(Identifier) } }; public override bool CanConvert(Type objectType) { return false; } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { serializer.Serialize(writer, value); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { return Deserialize(reader, objectType, serializer); } private object Deserialize(JsonReader reader, Type objectType, JsonSerializer serializer) { switch (reader.TokenType) { case JsonToken.StartObject: var jObject = Newtonsoft.Json.Linq.JObject.Load(reader); var discriminator = new[] { "type" }.Select(key => jObject[key].ToString()).ToArray(); Types.TryGetValue(discriminator, out var type); return serializer.Deserialize(jObject.CreateReader(), type); case JsonToken.StartArray: return DeserializeArray(reader, objectType, serializer); default: return serializer.Deserialize(reader, objectType); } } private IList DeserializeArray(JsonReader reader, Type targetType, JsonSerializer serializer) { var elementType = targetType.GenericTypeArguments.FirstOrDefault(); var list = (IList)Activator.CreateInstance(targetType); while (reader.Read() && reader.TokenType != JsonToken.EndArray) list.Add(Deserialize(reader, elementType, serializer)); return list; } } public class ConditionalExpressionTestAdapter : JsonConverter { private static readonly Dictionary Types = new Dictionary(new Client.DiscriminatorComparer()) { { new[] { "ArrayExpression" }, typeof(ArrayExpression) }, { new[] { "DictExpression" }, typeof(DictExpression) }, { new[] { "FunctionExpression" }, typeof(FunctionExpression) }, { new[] { "BinaryExpression" }, typeof(BinaryExpression) }, { new[] { "CallExpression" }, typeof(CallExpression) }, { new[] { "ConditionalExpression" }, typeof(ConditionalExpression) }, { new[] { "LogicalExpression" }, typeof(LogicalExpression) }, { new[] { "MemberExpression" }, typeof(MemberExpression) }, { new[] { "IndexExpression" }, typeof(IndexExpression) }, { new[] { "ObjectExpression" }, typeof(ObjectExpression) }, { new[] { "ParenExpression" }, typeof(ParenExpression) }, { new[] { "PipeExpression" }, typeof(PipeExpression) }, { new[] { "UnaryExpression" }, typeof(UnaryExpression) }, { new[] { "BooleanLiteral" }, typeof(BooleanLiteral) }, { new[] { "DateTimeLiteral" }, typeof(DateTimeLiteral) }, { new[] { "DurationLiteral" }, typeof(DurationLiteral) }, { new[] { "FloatLiteral" }, typeof(FloatLiteral) }, { new[] { "IntegerLiteral" }, typeof(IntegerLiteral) }, { new[] { "PipeLiteral" }, typeof(PipeLiteral) }, { new[] { "RegexpLiteral" }, typeof(RegexpLiteral) }, { new[] { "StringLiteral" }, typeof(StringLiteral) }, { new[] { "UnsignedIntegerLiteral" }, typeof(UnsignedIntegerLiteral) }, { new[] { "Identifier" }, typeof(Identifier) } }; public override bool CanConvert(Type objectType) { return false; } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { serializer.Serialize(writer, value); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { return Deserialize(reader, objectType, serializer); } private object Deserialize(JsonReader reader, Type objectType, JsonSerializer serializer) { switch (reader.TokenType) { case JsonToken.StartObject: var jObject = Newtonsoft.Json.Linq.JObject.Load(reader); var discriminator = new[] { "type" }.Select(key => jObject[key].ToString()).ToArray(); Types.TryGetValue(discriminator, out var type); return serializer.Deserialize(jObject.CreateReader(), type); case JsonToken.StartArray: return DeserializeArray(reader, objectType, serializer); default: return serializer.Deserialize(reader, objectType); } } private IList DeserializeArray(JsonReader reader, Type targetType, JsonSerializer serializer) { var elementType = targetType.GenericTypeArguments.FirstOrDefault(); var list = (IList)Activator.CreateInstance(targetType); while (reader.Read() && reader.TokenType != JsonToken.EndArray) list.Add(Deserialize(reader, elementType, serializer)); return list; } } public class ConditionalExpressionConsequentAdapter : JsonConverter { private static readonly Dictionary Types = new Dictionary(new Client.DiscriminatorComparer()) { { new[] { "ArrayExpression" }, typeof(ArrayExpression) }, { new[] { "DictExpression" }, typeof(DictExpression) }, { new[] { "FunctionExpression" }, typeof(FunctionExpression) }, { new[] { "BinaryExpression" }, typeof(BinaryExpression) }, { new[] { "CallExpression" }, typeof(CallExpression) }, { new[] { "ConditionalExpression" }, typeof(ConditionalExpression) }, { new[] { "LogicalExpression" }, typeof(LogicalExpression) }, { new[] { "MemberExpression" }, typeof(MemberExpression) }, { new[] { "IndexExpression" }, typeof(IndexExpression) }, { new[] { "ObjectExpression" }, typeof(ObjectExpression) }, { new[] { "ParenExpression" }, typeof(ParenExpression) }, { new[] { "PipeExpression" }, typeof(PipeExpression) }, { new[] { "UnaryExpression" }, typeof(UnaryExpression) }, { new[] { "BooleanLiteral" }, typeof(BooleanLiteral) }, { new[] { "DateTimeLiteral" }, typeof(DateTimeLiteral) }, { new[] { "DurationLiteral" }, typeof(DurationLiteral) }, { new[] { "FloatLiteral" }, typeof(FloatLiteral) }, { new[] { "IntegerLiteral" }, typeof(IntegerLiteral) }, { new[] { "PipeLiteral" }, typeof(PipeLiteral) }, { new[] { "RegexpLiteral" }, typeof(RegexpLiteral) }, { new[] { "StringLiteral" }, typeof(StringLiteral) }, { new[] { "UnsignedIntegerLiteral" }, typeof(UnsignedIntegerLiteral) }, { new[] { "Identifier" }, typeof(Identifier) } }; public override bool CanConvert(Type objectType) { return false; } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { serializer.Serialize(writer, value); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { return Deserialize(reader, objectType, serializer); } private object Deserialize(JsonReader reader, Type objectType, JsonSerializer serializer) { switch (reader.TokenType) { case JsonToken.StartObject: var jObject = Newtonsoft.Json.Linq.JObject.Load(reader); var discriminator = new[] { "type" }.Select(key => jObject[key].ToString()).ToArray(); Types.TryGetValue(discriminator, out var type); return serializer.Deserialize(jObject.CreateReader(), type); case JsonToken.StartArray: return DeserializeArray(reader, objectType, serializer); default: return serializer.Deserialize(reader, objectType); } } private IList DeserializeArray(JsonReader reader, Type targetType, JsonSerializer serializer) { var elementType = targetType.GenericTypeArguments.FirstOrDefault(); var list = (IList)Activator.CreateInstance(targetType); while (reader.Read() && reader.TokenType != JsonToken.EndArray) list.Add(Deserialize(reader, elementType, serializer)); return list; } } } }