コード例 #1
0
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            var source = (Entities <T>)value;

            writer.WriteStartObject();

            writer.WritePropertyName("Target");
            writer.WriteValue(source.Target);

            writer.WritePropertyName("Referentials");
            writer.WriteStartArray();


            if (this._referenceSchema.Kind == KindSchemaEnum.Relationship)
            {
                foreach (object item in source)
                {
                    writer.WriteStartObject();

                    ReferentialRelationship e = (ReferentialRelationship)item;
                    foreach (var propertyName in e.PropertyKeys())
                    {
                        writer.WritePropertyName(propertyName);
                        writer.WriteValue(e[propertyName]);
                    }

                    writer.WritePropertyName("OriginLink");
                    writer.WriteStartObject();
                    foreach (var propertyName in e.Origin.PropertyKeys())
                    {
                        writer.WritePropertyName(propertyName);
                        writer.WriteValue(e[propertyName]);
                    }
                    writer.WriteEndObject();


                    writer.WritePropertyName("TargetLink");
                    writer.WriteStartObject();
                    foreach (var propertyName in e.Target.PropertyKeys())
                    {
                        writer.WritePropertyName(propertyName);
                        writer.WriteValue(e[propertyName]);
                    }
                    writer.WriteEndObject();

                    writer.WriteEndObject();
                }
            }
            else
            {
                foreach (object item in source)
                {
                    writer.WriteStartObject();
                    ReferentialEntity e = (ReferentialEntity)item;
                    foreach (var propertyName in e.PropertyKeys())
                    {
                        writer.WritePropertyName(propertyName);
                        writer.WriteValue(e[propertyName]);
                    }
                    writer.WriteEndObject();
                }
            }

            writer.WriteEndArray();

            writer.WriteEndObject();
        }
コード例 #2
0
ファイル: RelationshipItem.cs プロジェクト: gaelgael5/galileo
 public RelationshipItem(ReferentialRelationship relationship, ReferentialEntity item)
 {
     this.Relationship = relationship;
     this.Entity       = item;
 }
コード例 #3
0
        private ReferentialRelationship PopulateLink(JObject jObject, RelationshipDefinition schema)
        {
            var target = new ReferentialRelationship(this._referenceSchema.Type, _file)
            {
                Schema = this._referenceSchema,
            };

            foreach (var item in jObject.Properties())
            {
                if (item.Name == "OriginLink")
                {
                    var i = (JObject)item.Value;
                    foreach (var item2 in i.Properties())
                    {
                        var p = schema.Origin.Properties.FirstOrDefault(c => c.Name.ToLower() == item2.Name.ToLower());
                        if (p != null)
                        {
                            try
                            {
                                var value = ConvertValue(p.Type, item2.Value);
                                target.Origin[p.Name] = value;
                            }
                            catch (Exception e1)
                            {
                                this._diagnostic.Append(new DiagnositcMessage()
                                {
                                    Severity = SeverityEnum.Error, Text = e1.Message, Exception = e1
                                });
                            }
                        }
                        else
                        {
                        }
                    }
                }
                else if (item.Name == "TargetLink")
                {
                    var i = (JObject)item.Value;
                    foreach (var item2 in i.Properties())
                    {
                        var p = schema.Target.Properties.FirstOrDefault(c => c.Name == item2.Name);
                        if (p != null)
                        {
                            try
                            {
                                var value = ConvertValue(p.Type, item2.Value);
                                target.Target[p.Name] = value;
                            }
                            catch (Exception e2)
                            {
                                this._diagnostic.Append(new DiagnositcMessage()
                                {
                                    Severity = SeverityEnum.Error, Text = e2.Message, Exception = e2
                                });
                            }
                        }
                        else
                        {
                        }
                    }
                }
                else
                {
                    var p = schema.Properties.FirstOrDefault(c => c.Name == item.Name);
                    if (p != null)
                    {
                        try
                        {
                            var value = ConvertValue(p.Type, item.Value);
                            target[item.Name] = value;
                        }
                        catch (Exception e3)
                        {
                            this._diagnostic.Append(new DiagnositcMessage()
                            {
                                Severity = SeverityEnum.Error, Text = e3.Message, Exception = e3
                            });
                        }
                    }
                }
            }

            return(target);
        }