/// <summary> /// Builds out the nodes and descriptors on the client side. Adds to a _cachedNodes list and keeps it updated. /// </summary> /// <param name="relatedNodesResult"></param> /// <returns></returns> private List <INodeProxy> BuildNodeList(RelatedNodesSearchResult relatedNodesResult) { List <INodeProxy> nodes = new List <INodeProxy>(); if (relatedNodesResult.Nodes.Count > 0) { foreach (SoapNode soapNode in relatedNodesResult.Nodes.Values) { if (_cachedNodes.ContainsKey(soapNode.Id)) { _cachedNodes.Remove(soapNode.Id); } NodeProxy node = new NodeProxy(soapNode); _cachedNodes.Add(soapNode.Id, node); } foreach (SoapNode soapNode in relatedNodesResult.Nodes.Values) { foreach (SoapRelationship relationship in soapNode.Relationships.Values) { RelationshipProxy relationshipProxy = new RelationshipProxy(relationship); foreach (DescriptorProxy descriptor in relationshipProxy.Descriptors) { if (_cachedNodes.ContainsKey(descriptor.NodeId)) { INodeProxy connectedNode = _cachedNodes[descriptor.NodeId]; descriptor.Node = connectedNode; if (!connectedNode.Descriptors.Contains(descriptor)) { connectedNode.Descriptors.Add(descriptor); } } } } } foreach (SoapNode soapNode in relatedNodesResult.Nodes.Values) { nodes.Add(_cachedNodes[soapNode.Id]); } foreach (INodeProxy nodeProxy in nodes) { foreach (IDescriptorProxy descriptorProxy in nodeProxy.Descriptors) { CompleteRelationship(descriptorProxy.Relationship); } } } return(nodes); }
/// <summary> /// Builds out the nodes and descriptors on the client side. Adds to a _cachedNodes list and keeps it updated. /// </summary> /// <param name="relatedNodesResult"></param> /// <returns></returns> private List<INodeProxy> BuildNodeList(RelatedNodesSearchResult relatedNodesResult) { List<INodeProxy> nodes = new List<INodeProxy>(); if (relatedNodesResult.Nodes.Count > 0) { foreach (SoapNode soapNode in relatedNodesResult.Nodes.Values) { if (_cachedNodes.ContainsKey(soapNode.Id)) { _cachedNodes.Remove(soapNode.Id); } NodeProxy node = new NodeProxy(soapNode); _cachedNodes.Add(soapNode.Id, node); } foreach (SoapNode soapNode in relatedNodesResult.Nodes.Values) { foreach (SoapRelationship relationship in soapNode.Relationships.Values) { RelationshipProxy relationshipProxy = new RelationshipProxy(relationship); foreach (DescriptorProxy descriptor in relationshipProxy.Descriptors) { if (_cachedNodes.ContainsKey(descriptor.NodeId)) { INodeProxy connectedNode = _cachedNodes[descriptor.NodeId]; descriptor.Node = connectedNode; if (!connectedNode.Descriptors.Contains(descriptor)) { connectedNode.Descriptors.Add(descriptor); } } } } } foreach (SoapNode soapNode in relatedNodesResult.Nodes.Values) { nodes.Add(_cachedNodes[soapNode.Id]); } foreach (INodeProxy nodeProxy in nodes) { foreach (IDescriptorProxy descriptorProxy in nodeProxy.Descriptors) { CompleteRelationship(descriptorProxy.Relationship); } } } return nodes; }