@Override protected GraphAnalyticsRecord getEntryValue (GenericRecord entry) { return new GraphAnalyticsRecord((Integer)entry.get("numCommunities"), communityListTOJava(entry)); }
/** * Add a graph community to an existing record, summing counts as needed, and keeping * the MAX_COMMUNITIES largest communities. */ public static GraphAnalyticsRecord addCommunityToRecord( GraphAnalyticsRecord record, GraphCommunity newCommunity) { if (null == record) return null; int numCommunities = record.getNumCommunities() + 1; LinkedList<GraphCommunity> accumulatedCommunities = new LinkedList<>(record.getCommunities()); addCommunityInPlace(accumulatedCommunities, newCommunity); return new GraphAnalyticsRecord(numCommunities, accumulatedCommunities); }
/** * Combine two records. */ public static GraphAnalyticsRecord addRecords( GraphAnalyticsRecord... records) { if (null == records || 0 == records.length) return null; int numCommunities = records[0].getNumCommunities(); LinkedList<GraphCommunity> communities = new LinkedList<>(records[0].getCommunities()); for (int i = 1; i < records.length; ++i) { numCommunities += records[i].getNumCommunities(); addCommunitiesInPlace(communities, records[i].getCommunities()); } return new GraphAnalyticsRecord(numCommunities, communities); }
@Test public void testRecordsEqual() { GraphAnalyticsRecord a = new GraphAnalyticsRecord(1, Arrays.asList(_sampleCommunity)); Assert.assertEquals(_sampleRecord, a); }
return new GraphAnalyticsRecord(numCommunities, communities);
return new GraphAnalyticsRecord(minNumCommunities, Arrays.asList(minCommunity));
return new GraphAnalyticsRecord(maxNumCommunities, Arrays.asList(maxCommunity));
@Test public void testRecordAggregation () { GraphAnalyticsRecord a = new GraphAnalyticsRecord(1, Arrays.asList(_sampleCommunity)); GraphCommunity community_b = new GraphCommunity(_hierLevel, 456L, new Pair<Double, Double>(3.3, 4.4), 3.4, 4, 54, "blah4\tblah5", true, _parentID, _parentCoords, _parentRadius, _statsList, _interEdges, _intraEdges); GraphAnalyticsRecord b = new GraphAnalyticsRecord(1, Arrays.asList(community_b)); GraphAnalyticsRecord c = new GraphAnalyticsRecord(2, Arrays.asList(community_b, _sampleCommunity)); Assert.assertEquals(c, GraphAnalyticsRecord.addRecords(a, b)); }
@Test public void testCommunityToRecord () { GraphAnalyticsRecord a = new GraphAnalyticsRecord(1, Arrays.asList(_sampleCommunity)); GraphCommunity community_b = new GraphCommunity(_hierLevel, 456L, new Pair<Double, Double>(3.3, 4.4), 3.4, 4, 54, "blah4\tblah5", true, _parentID, _parentCoords, _parentRadius, _statsList, _interEdges, _intraEdges); GraphAnalyticsRecord c = new GraphAnalyticsRecord(2, Arrays.asList(community_b, _sampleCommunity)); Assert.assertEquals(c, GraphAnalyticsRecord.addCommunityToRecord(a, community_b)); }
@Test public void testEmptyRecordAggregation () { GraphAnalyticsRecord a = new GraphAnalyticsRecord(0, null); GraphCommunity community_b = new GraphCommunity(_hierLevel, 456L, new Pair<Double, Double>(3.3, 4.4), 3.4, 4, 54, "blah4\tblah5", true, _parentID, _parentCoords, _parentRadius, _statsList, _interEdges, _intraEdges); GraphAnalyticsRecord b = new GraphAnalyticsRecord(1, Arrays.asList(community_b)); Assert.assertEquals(b, GraphAnalyticsRecord.addRecords(a, b)); }
@Test public void testMin() { GraphAnalyticsRecord a = new GraphAnalyticsRecord(2, Arrays.asList(_sampleCommunity)); GraphCommunity community_b = new GraphCommunity(1, 567L, Arrays.asList(new GraphEdge(1L, 4.3, 2.1, 5L)), Arrays.asList(new GraphEdge(1L, 4.3, 2.1, 5L))); GraphAnalyticsRecord b = new GraphAnalyticsRecord(1, Arrays.asList(community_b)); Arrays.asList(new GraphEdge(1L, 4.2, 2.0, 4L))); GraphAnalyticsRecord c = new GraphAnalyticsRecord(1, Arrays.asList(community_c));
@Test public void testMax() { GraphAnalyticsRecord a = new GraphAnalyticsRecord(2, Arrays.asList(_sampleCommunity)); GraphCommunity community_b = new GraphCommunity(1, 567L, Arrays.asList(new GraphEdge(1L, 4.3, 2.1, 5L)), Arrays.asList(new GraphEdge(1L, 4.3, 2.1, 5L))); GraphAnalyticsRecord b = new GraphAnalyticsRecord(1, Arrays.asList(community_b)); Arrays.asList(new GraphEdge(44L, 5.5, 7.7, 6L))); GraphAnalyticsRecord c = new GraphAnalyticsRecord(2, Arrays.asList(community_c));