public QueryResponse GetPage(int startingObjectIndex) { SortedList<Guid, object> sortedObjects = new SortedList<Guid, object>(); QueryResponse pagedQueryResponse = new QueryResponse(); pagedQueryResponse.Nodes = new Dictionary<Guid, Node>(); pagedQueryResponse.Relationships = new Dictionary<Guid, Relationship>(); pagedQueryResponse.Domain = Domain; pagedQueryResponse.NodeContext = NodeContext; pagedQueryResponse.StartingObjectIndex = startingObjectIndex; //pagedQueryResponse.LastObjectIndex = startingObjectIndex + 2000; pagedQueryResponse.FinalObjectIndex = 0; foreach (KeyValuePair<Guid, Node> nodePair in Nodes) { sortedObjects.Add(nodePair.Key, nodePair.Value); pagedQueryResponse.FinalObjectIndex++; /// Adding up all the metadata. //pagedQueryResponse.FinalObjectIndex += nodePair.Value.Metadata.Count; } foreach (KeyValuePair<Guid, Relationship> relationshipPair in Relationships) { sortedObjects.Add(relationshipPair.Key, relationshipPair.Value); pagedQueryResponse.FinalObjectIndex++; /// Adding up all the descriptors. //pagedQueryResponse.FinalObjectIndex += relationshipPair.Value.Nodes.Count; } int sortedObjectIndex = pagedQueryResponse.StartingObjectIndex - 1; int totalObjectCount = 0; while (totalObjectCount < 3000) { sortedObjectIndex++; if (sortedObjectIndex >= sortedObjects.Count) { break; } object sortedObject = sortedObjects.Values[sortedObjectIndex]; if (sortedObject is Node) { Node node = sortedObject as Node; /// Add one for the node; totalObjectCount++; /// Add the number of metadata; totalObjectCount += node.Metadata.Count; pagedQueryResponse.Nodes.Add(node.NodeUid, node); } else if (sortedObject is Relationship) { Relationship relationship = sortedObject as Relationship; /// Add one for the relationship. totalObjectCount++; // Add the number of descriptors. totalObjectCount += relationship.Nodes.Count; pagedQueryResponse.Relationships.Add(relationship.RelationshipUid, relationship); } } pagedQueryResponse.LastObjectIndex = sortedObjectIndex; pagedQueryResponse.FinalObjectIndex = sortedObjects.Count; return pagedQueryResponse; }
public QueryResponse GetPage(int startingObjectIndex) { SortedList <Guid, object> sortedObjects = new SortedList <Guid, object>(); QueryResponse pagedQueryResponse = new QueryResponse(); pagedQueryResponse.Nodes = new Dictionary <Guid, Node>(); pagedQueryResponse.Relationships = new Dictionary <Guid, Relationship>(); pagedQueryResponse.Domain = Domain; pagedQueryResponse.NodeContext = NodeContext; pagedQueryResponse.StartingObjectIndex = startingObjectIndex; //pagedQueryResponse.LastObjectIndex = startingObjectIndex + 2000; pagedQueryResponse.FinalObjectIndex = 0; foreach (KeyValuePair <Guid, Node> nodePair in Nodes) { sortedObjects.Add(nodePair.Key, nodePair.Value); pagedQueryResponse.FinalObjectIndex++; /// Adding up all the metadata. //pagedQueryResponse.FinalObjectIndex += nodePair.Value.Metadata.Count; } foreach (KeyValuePair <Guid, Relationship> relationshipPair in Relationships) { sortedObjects.Add(relationshipPair.Key, relationshipPair.Value); pagedQueryResponse.FinalObjectIndex++; /// Adding up all the descriptors. //pagedQueryResponse.FinalObjectIndex += relationshipPair.Value.Nodes.Count; } int sortedObjectIndex = pagedQueryResponse.StartingObjectIndex - 1; int totalObjectCount = 0; while (totalObjectCount < 3000) { sortedObjectIndex++; if (sortedObjectIndex >= sortedObjects.Count) { break; } object sortedObject = sortedObjects.Values[sortedObjectIndex]; if (sortedObject is Node) { Node node = sortedObject as Node; /// Add one for the node; totalObjectCount++; /// Add the number of metadata; totalObjectCount += node.Metadata.Count; pagedQueryResponse.Nodes.Add(node.NodeUid, node); } else if (sortedObject is Relationship) { Relationship relationship = sortedObject as Relationship; /// Add one for the relationship. totalObjectCount++; // Add the number of descriptors. totalObjectCount += relationship.Nodes.Count; pagedQueryResponse.Relationships.Add(relationship.RelationshipUid, relationship); } } pagedQueryResponse.LastObjectIndex = sortedObjectIndex; pagedQueryResponse.FinalObjectIndex = sortedObjects.Count; return(pagedQueryResponse); }