private void CreateOneToManyRelation(RootResource resource, Property property) { var rootResource = RootResources.First(r => r.Class == property.Class); var nestedResource = resource.OneToMany(property); nestedResource.IsReadonly = true; nestedResource.RootResource = rootResource; rootResource.AlternateResources.Add(nestedResource); }
public void AddRootResource(ClassModel c) { var resource = new RootResource(); resource.Name = c.Name; resource.Class = c; resource.DataModel = DataModel; RootResources.Add(resource); }
private void CreateManyToManyRelation(RootResource resource, Property property) { var rootResource = RootResources.First(r => r.Class == property.Class); string pivotName; if (resource.Class == property.Class || string.Compare(resource.Class.Name, property.Noun, StringComparison.InvariantCulture) < 0) { pivotName = $"{resource.Class.Name}{property.Noun}"; } else { pivotName = $"{property.Noun}{resource.Class.Name}"; } var nestedResource = resource.ManyToMany(property, pivotName); nestedResource.Name = property.Name.Substring(0, property.Name.Length - 1); nestedResource.Name.Plural = property.Name; nestedResource.RootResource = rootResource; rootResource.AlternateResources.Add(nestedResource); }
public void AddNestedResources(ClassModel c) { var resource = RootResources.First(r => r.Class == c); foreach (var property in c.Properties) { if (!property.IsCollection || property.BuiltInType != BuiltInType.Object) { continue; } if (property.IsManyToMany) { CreateManyToManyRelation(resource, property); } else { CreateOneToManyRelation(resource, property); } } }
public void Read() { foreach (System.Xml.XPath.XPathNavigator child in document.CreateNavigator().Select("root/*")) { if (child.Name == "depth") { int maxCrawlNestity; if (int.TryParse(child.InnerXml, out maxCrawlNestity)) { MaxCrawlNestity = maxCrawlNestity; } else { MaxCrawlNestity = 2; } } } foreach (System.Xml.XPath.XPathNavigator child in document.CreateNavigator().Select("root/rootResources/*")) { if (child.Name == "resource") { Uri uriResult; bool isValidUri = Uri.TryCreate(child.InnerXml, UriKind.Absolute, out uriResult) && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps); if (isValidUri) { RootResources.Add(child.InnerXml); } } } if (MaxCrawlNestity == -1) { MaxCrawlNestity = 2; } }