blob: 635e5d727daf6190af75e52e12c24bc0413ff146 [file] [log] [blame]
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
namespace BaSys40.Models.Core.Constraints
{
public class ConstraintConverter : JsonConverter<IConstraint>
{
public override bool CanWrite => false;
public override bool CanRead => true;
public override IConstraint ReadJson(JsonReader reader, Type objectType, IConstraint existingValue, bool hasExistingValue, JsonSerializer serializer)
{
JObject jObject;
try
{
jObject = JObject.Load(reader);
}
catch (Exception)
{
return null;
}
var modelTypeToken = jObject.SelectToken("modelType")?.ToObject<ModelType>();
IConstraint constraint;
if (modelTypeToken != null)
{
if (modelTypeToken == ModelType.Qualifier)
constraint = new Qualifier();
else if (modelTypeToken == ModelType.Formula)
constraint = new Formula();
else
return null;
}
else
return null;
serializer.Populate(jObject.CreateReader(), constraint);
return constraint;
}
public override void WriteJson(JsonWriter writer, IConstraint value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
}