private DataSchema CreateItems(SchemaObject schemaObject) { var result = new DataSchema { Type = SchemaDataTypeExtensions.ConvertFromString(schemaObject.ArrayItemType) }; if (schemaObject.IsDocumentArray) { result.Properties = CreateProperties(schemaObject); } return(result); }
private IDictionary <string, DataSchema> CreateProperties(SchemaObject schemaObject) { var properties = new Dictionary <string, DataSchema>(); foreach (KeyValuePair <string, dynamic> property in schemaObject.ObjectSchema.Properties) { var propertyDataSchema = new DataSchema { Type = SchemaDataTypeExtensions.ConvertFromString(property.Value.Type) }; properties.Add(property.Key, propertyDataSchema); } properties.Add("Id", new DataSchema { Type = SchemaDataType.String }); properties.Add("DisplayName", new DataSchema { Type = SchemaDataType.String }); return(properties); }
private void FillDataSchema(DataSchema partialObject, SchemaObject schemaObject) { var root = schemaObject; var members = new List <SchemaObject>(); while (root != null) { members.Add(root); root = root.Parent; } members.Reverse(); partialObject.Properties = partialObject.Properties ?? new Dictionary <string, DataSchema>(); for (var i = 0; i < members.Count; i++) { if (partialObject.Properties.ContainsKey(members[i].Name)) { continue; } if (members[i].Parent == null) { if (members[i].IsArray) { partialObject.Properties.Add(members[i].Name, new DataSchema { Type = SchemaDataTypeExtensions.ConvertFromString(members[i].Type), Items = CreateItems(members[i]) }); } else if (members[i].IsDocumentLink) { partialObject.Properties.Add(members[i].Name, new DataSchema { Type = SchemaDataTypeExtensions.ConvertFromString(members[i].Type), Properties = CreateProperties(members[i]) }); } else { partialObject.Properties.Add(members[i].Name, new DataSchema { Type = SchemaDataTypeExtensions.ConvertFromString(members[i].Type) }); } } else { var dataSchema = FindProperty(partialObject, members[i]); if (members[i].IsArray) { dataSchema.Type = SchemaDataTypeExtensions.ConvertFromString(members[i].Type); dataSchema.Items = CreateItems(members[i]); } else if (members[i].IsDocumentLink) { dataSchema.Type = SchemaDataTypeExtensions.ConvertFromString(members[i].Type); dataSchema.Properties = CreateProperties(members[i]); } else { dataSchema.Type = SchemaDataTypeExtensions.ConvertFromString(members[i].Type); } } } }