private static IList <IDictionary <string, object> > RelationshipCounts(TokenRead tokens, Read read, Anonymizer anonymizer) { IList <IDictionary <string, object> > relationshipCounts = new List <IDictionary <string, object> >(); IDictionary <string, object> relationshipCount = new Dictionary <string, object>(); relationshipCount["count"] = read.CountsForRelationshipWithoutTxState(-1, -1, -1); relationshipCounts.Add(relationshipCount); IList <NamedToken> labels = Iterators.asList(tokens.LabelsGetAllTokens()); tokens.RelationshipTypesGetAllTokens().forEachRemaining(t => { long count = read.CountsForRelationshipWithoutTxState(-1, t.id(), -1); IDictionary <string, object> relationshipTypeCount = new Dictionary <string, object>(); relationshipTypeCount.put("relationshipType", anonymizer.RelationshipType(t.name(), t.id())); relationshipTypeCount.put("count", count); relationshipCounts.Add(relationshipTypeCount); foreach (NamedToken label in labels) { long startCount = read.CountsForRelationshipWithoutTxState(label.id(), t.id(), -1); if (startCount > 0) { IDictionary <string, object> x = new Dictionary <string, object>(); x.put("relationshipType", anonymizer.RelationshipType(t.name(), t.id())); x.put("startLabel", anonymizer.Label(label.name(), label.id())); x.put("count", startCount); relationshipCounts.Add(x); } long endCount = read.CountsForRelationshipWithoutTxState(-1, t.id(), label.id()); if (endCount > 0) { IDictionary <string, object> x = new Dictionary <string, object>(); x.put("relationshipType", anonymizer.RelationshipType(t.name(), t.id())); x.put("endLabel", anonymizer.Label(label.name(), label.id())); x.put("count", endCount); relationshipCounts.Add(x); } } }); return(relationshipCounts); }