public void FindNodeIdsByRelationshipType(Guid nodeId, ref HashSet <Guid> relatedMapsNodeList, Guid ignoreNodeId, Guid descriptorTypeId, params Guid[] relationshipTypes) { if (DescriptorsByNode.ContainsKey(nodeId)) { Dictionary <Guid, List <QueryMapDescriptor> > descriptorsByType = DescriptorsByNode[nodeId]; foreach (List <QueryMapDescriptor> descriptorList in descriptorsByType.Values) { foreach (QueryMapDescriptor descriptor in descriptorList) { if (Relationships.ContainsKey(descriptor.RelationshipUid.Value)) { QueryMapRelationship relationship = Relationships[descriptor.RelationshipUid.Value]; foreach (Guid relationshipType in relationshipTypes) { if (relationship.RelationshipTypeUid == relationshipType) { var descriptors = DescriptorsByRelationship[relationship.RelationshipUid][descriptorTypeId]; foreach (QueryMapDescriptor opposingDescriptor in descriptors) { if (opposingDescriptor.NodeUid.Value != null && (ignoreNodeId == Guid.Empty || opposingDescriptor.NodeUid != ignoreNodeId)) { relatedMapsNodeList.Add(opposingDescriptor.NodeUid.Value); } } } } } } } } }
public IEnumerable <QueryMapRelationship> GetRelationshipsByRelationshipType(Guid nodeId, params Guid[] relationshipTypes) { if (DescriptorsByNode.ContainsKey(nodeId)) { Dictionary <Guid, List <QueryMapDescriptor> > descriptorsByType = DescriptorsByNode[nodeId]; foreach (List <QueryMapDescriptor> descriptorList in descriptorsByType.Values) { foreach (QueryMapDescriptor descriptor in descriptorList) { if (Relationships.ContainsKey(descriptor.RelationshipUid.Value)) { QueryMapRelationship relationship = Relationships[descriptor.RelationshipUid.Value]; foreach (Guid relationshipType in relationshipTypes) { if (relationship.RelationshipTypeUid == relationshipType) { yield return(relationship); } } } } } } }
private void AddDescriptorByNode(QueryMapDescriptor descriptor) { if (descriptor.NodeUid.HasValue && descriptor.DescriptorTypeUid.HasValue) { Dictionary <Guid, List <QueryMapDescriptor> > descriptorsForNodeByDescriptorType; if (DescriptorsByNode.ContainsKey(descriptor.NodeUid.Value)) { descriptorsForNodeByDescriptorType = DescriptorsByNode[descriptor.NodeUid.Value]; } else { descriptorsForNodeByDescriptorType = new Dictionary <Guid, List <QueryMapDescriptor> >(); DescriptorsByNode[descriptor.NodeUid.Value] = descriptorsForNodeByDescriptorType; } List <QueryMapDescriptor> descriptorsForNode; if (descriptorsForNodeByDescriptorType.ContainsKey(descriptor.DescriptorTypeUid.Value)) { descriptorsForNode = descriptorsForNodeByDescriptorType[descriptor.DescriptorTypeUid.Value]; } else { descriptorsForNode = new List <QueryMapDescriptor>(); descriptorsForNodeByDescriptorType[descriptor.DescriptorTypeUid.Value] = descriptorsForNode; } descriptorsForNode.Add(descriptor); } }
public IEnumerable <QueryMapRelationship> GetRelationshipsByDescriptorType(Guid nodeId, Guid descriptorType) { if (DescriptorsByNode.ContainsKey(nodeId)) { if (DescriptorsByNode[nodeId].ContainsKey(descriptorType)) { foreach (var descriptor in DescriptorsByNode[nodeId][descriptorType]) { if (Relationships.ContainsKey(descriptor.RelationshipUid.Value)) { yield return(Relationships[descriptor.RelationshipUid.Value]); } } } } }