Innovenergy_trunk/csharp/Lib/S3/Serialization/JsonConverters.cs

167 lines
6.1 KiB
C#
Raw Normal View History

2023-02-16 12:57:06 +00:00
// using System;
// using System.Text.Json;
// using System.Text.Json.Serialization;
// using InnovEnergy.S3.Records;
// using InnovEnergy.S3.Records.Fields;
//
// namespace InnovEnergy.S3.Serialization
// {
// public class SubClassConverterFactory : JsonConverterFactory
// {
// public override Boolean CanConvert(Type t)
// {
// return t.IsAbstract && t.IsClass;
// }
//
// public override JsonConverter CreateConverter(Type type, JsonSerializerOptions options)
// {
// var converterType = typeof(SubClassConverter<>).MakeGenericType(type);
// return (JsonConverter) Activator.CreateInstance(converterType)!;
// }
//
// public class SubClassConverter<T> : JsonConverter<T>
// {
// public override Boolean CanConvert(Type type)
// {
// return type == typeof(T);
// }
//
// public override T Read(ref Utf8JsonReader r, Type t, JsonSerializerOptions o)
// {
// throw new NotImplementedException();
// }
//
// public override void Write(Utf8JsonWriter writer, T obj, JsonSerializerOptions options)
// {
// JsonSerializer.Serialize(writer, obj, obj!.GetType());
// }
// }
// }
//
// public class DataRecordConverter : JsonConverter<Record>
// {
// public override Boolean CanConvert(Type type)
// {
// return typeof(Record).IsAssignableFrom(type);
// }
//
// public override Record Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
// {
// throw new NotImplementedException();
// }
//
// public override void Write(Utf8JsonWriter writer, Record @record, JsonSerializerOptions options)
// {
// writer.WriteStartObject();
//
// foreach (var field in record.Fields)
// {
// writer.WritePropertyName(field.Name);
//
// if (field is NumberField an)
// {
// writer.WriteStartObject();
// writer.WriteNumber("Min", an.Min);
// writer.WriteNumber("Max", an.Max);
// writer.WriteNumber("Mean", an.Value);
// writer.WriteEndObject();
// }
// else if (field is TextField at)
// {
// writer.WriteStartObject();
// foreach (var f in at.Frequencies)
// {
// writer.WriteNumber(f.Text, f.Percent);
// }
// writer.WriteEndObject();
// }
// else if (field is BooleanField ab)
// {
// writer.WriteStartObject();
// writer.WriteNumber("PercentTrue", ab.PercentTrue);
// writer.WriteEndObject();
// }
// else
// throw new NotSupportedException();
// }
//
// writer.WriteNumber("Time", record.TimeStamp.Ticks);
// writer.WriteNumber("Availability", record.Availability);
//
// writer.WriteEndObject();
// }
// }
//
// // public class AggregatedRecordConverter : JsonConverter<AggregatedRecord>
// // {
// // public override Boolean CanConvert(Type type)
// // {
// // return typeof(AggregatedRecord).IsAssignableFrom(type);
// // }
// //
// // public override AggregatedRecord Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => throw new NotImplementedException();
// //
// // public override void Write(Utf8JsonWriter writer, AggregatedRecord dataRecord, JsonSerializerOptions options)
// // {
// // writer.WriteStartObject();
// //
// // foreach (var field in dataRecord.Fields)
// // {
// // if (field is AggregatedNumber n)
// // {
// // writer.WritePropertyName(n.Name);
// // writer.WriteStartObject();
// // writer.WritePropertyName("Mean");
// // writer.WriteNumberValue(n.Mean);
// //
// // writer.WritePropertyName("Min");
// // writer.WriteNumberValue(n.Min);
// //
// // writer.WritePropertyName("Max");
// // writer.WriteNumberValue(n.Max);
// //
// // writer.WriteEndObject();
// // }
// // else if (field is AggregatedText t)
// // {
// // writer.WritePropertyName(t.Name);
// // JsonSerializer.Serialize(writer, t);
// // }
// // else if (field is AggregatedBoolean b)
// // {
// // writer.WritePropertyName(b.Name);
// // JsonSerializer.Serialize(writer, b);
// // }
// //
// // else throw new NotSupportedException();
// // }
// //
// // writer.WriteEndObject();
// // }
// //
// //
// //
// //
// // }
//
// // public class TextFrequencyConverter : JsonConverter<TextFrequency>
// // {
// // public override Boolean CanConvert(Type type)
// // {
// // return typeof(TextFrequency).IsAssignableFrom(type);
// // }
// //
// // public override TextFrequency Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => throw new NotImplementedException();
// //
// // public override void Write(Utf8JsonWriter writer, TextFrequency textFrequency, JsonSerializerOptions options)
// // {
// // writer.WriteStartObject();
// // writer.WritePropertyName(textFrequency.Text);
// // writer.WriteNumberValue(textFrequency.Percent);
// // writer.WriteEndObject();
// // }
// // }
//
//
//
// }