public IEnumerable <ISonesIndex> GetIndices(IVertexType myVertexType, IList <IPropertyDefinition> myPropertyDefinition, SecurityToken mySecurityToken, Int64 myTransactionToken) { myVertexType.CheckNull("myVertexType"); myPropertyDefinition.CheckNull("myPropertyDefinition"); if (myPropertyDefinition.Count == 0) { throw new ArgumentOutOfRangeException("myPropertyDefinition", "At least one property must be given."); } var propertyTypes = myPropertyDefinition.GroupBy(_ => _.RelatedType); foreach (var group in propertyTypes) { if (!myVertexType.IsDescendantOrSelf(group.Key)) { throw new ArgumentException(string.Format("The properties ({0}) defined on type {1} is not part of inheritance hierarchy of {2}.", string.Join(",", group.Select(_ => _.Name)), group.Key.Name, myVertexType.Name)); } } var result = myVertexType.GetIndexDefinitions(false).Where(_ => myPropertyDefinition.SequenceEqual(_.IndexedProperties)).Select(_ => _indices[_.ID]).ToArray(); return(result); }
public IEnumerable<ISonesIndex> GetIndices(IVertexType myVertexType, IList<IPropertyDefinition> myPropertyDefinition, SecurityToken mySecurityToken, Int64 myTransactionToken) { myVertexType.CheckNull("myVertexType"); myPropertyDefinition.CheckNull("myPropertyDefinition"); if (myPropertyDefinition.Count == 0) throw new ArgumentOutOfRangeException("myPropertyDefinition", "At least one property must be given."); var propertyTypes = myPropertyDefinition.GroupBy(_ => _.RelatedType); foreach (var group in propertyTypes) { if (!myVertexType.IsDescendantOrSelf(group.Key)) { throw new ArgumentException(string.Format("The properties ({0}) defined on type {1} is not part of inheritance hierarchy of {2}.", string.Join(",", group.Select(_ => _.Name)), group.Key.Name, myVertexType.Name)); } } var result = myVertexType.GetIndexDefinitions(false).Where(_ => myPropertyDefinition.SequenceEqual(_.IndexedProperties)).Select(_=>_indices[_.ID]).ToArray(); return result; }