167 lines
6.1 KiB
C#
167 lines
6.1 KiB
C#
// 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();
|
|
// // }
|
|
// // }
|
|
//
|
|
//
|
|
//
|
|
// } |