Ejemplo n.º 1
0
        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);
        }