@Override public void addGraphId(GradoopId graphId) { if (graphIds == null) { graphIds = new GradoopIdSet(); } graphIds.add(graphId); }
/** * Creates a new instance from multiple GradoopIDs. * * @param ids array of gradoop ids * @return gradoop id set */ public static GradoopIdSet fromExisting(GradoopId... ids) { return fromExisting(Arrays.asList(ids)); }
@Override public GradoopIdSet readGraphIds(Result res) { byte[] graphBytes = res.getValue(CF_META_BYTES, COL_GRAPHS_BYTES); GradoopIdSet graphIds; if (graphBytes != null) { graphIds = GradoopIdSet.fromByteArray(graphBytes); } else { graphIds = new GradoopIdSet(); } return graphIds; } }
/** * Returns all edges that belong to the given graphs. * * @param graphIds Graph identifiers * @return edges */ public Collection<E> getEdgesByGraphIds(GradoopIdSet graphIds) { Collection<E> result = Sets.newHashSetWithExpectedSize(graphIds.size()); for (E edge : edges.values()) { if (edge.getGraphIds().containsAny(graphIds)) { result.add(edge); } } return result; }
@Test public void testAddAllGradoopIds() throws Exception { GradoopId id1 = GradoopId.get(); GradoopId id2 = GradoopId.get(); GradoopIdSet list1 = new GradoopIdSet(); list1.add(id1); list1.add(id2); GradoopIdSet list2 = new GradoopIdSet(); list2.addAll(list1); assertThat(list2.size(), is(2)); assertTrue(list2.contains(id1)); assertTrue(list2.contains(id2)); list2.addAll(list1); assertThat(list2.size(), is(2)); }
@Override public void flatMap( Tuple4<GradoopId, GradoopIdSet, GradoopIdSet, GradoopIdSet> edgeTuple, Collector<Tuple2<GradoopId, GradoopIdSet>> collector) throws Exception { GradoopIdSet set = new GradoopIdSet(); for (GradoopId edgeGraph : edgeTuple.f3) { for (GradoopId sourceGraph : edgeTuple.f1) { if (edgeGraph.equals(sourceGraph)) { for (GradoopId targetGraph : edgeTuple.f2) { if (edgeGraph.equals(targetGraph)) { set.add(edgeGraph); } } } } } if (!set.isEmpty()) { reuseTuple.f0 = edgeTuple.f0; reuseTuple.f1 = set; collector.collect(reuseTuple); } } }
@Test public void testContainsAny1() throws Exception { GradoopId id1 = GradoopId.get(); GradoopId id2 = GradoopId.get(); GradoopId id3 = GradoopId.get(); GradoopIdSet ids = new GradoopIdSet(); ids.addAll(Arrays.asList(id1, id2)); assertTrue(ids.containsAny(GradoopIdSet.fromExisting(id1))); assertTrue(ids.containsAny(GradoopIdSet.fromExisting(id2))); assertTrue(ids.containsAny(GradoopIdSet.fromExisting(id1, id2))); assertFalse(ids.containsAny(GradoopIdSet.fromExisting(id3))); assertTrue(ids.containsAny(GradoopIdSet.fromExisting(id1, id3))); }
@Test public void testIsEmpty() throws Exception { GradoopIdSet set1 = GradoopIdSet.fromExisting(GradoopId.get()); assertFalse(set1.isEmpty()); assertTrue(new GradoopIdSet().isEmpty()); }
@Test public void testContainsAllGradoopIds() throws Exception { GradoopId id1 = GradoopId.get(); GradoopId id2 = GradoopId.get(); GradoopId id3 = GradoopId.get(); GradoopIdSet ids = new GradoopIdSet(); ids.addAll(Arrays.asList(id1, id2)); assertTrue(ids.containsAll(GradoopIdSet.fromExisting(id1))); assertTrue(ids.containsAll(GradoopIdSet.fromExisting(id2))); assertTrue(ids.containsAll(GradoopIdSet.fromExisting(id1, id2))); assertFalse(ids.containsAll(GradoopIdSet.fromExisting(id3))); assertFalse(ids.containsAll(GradoopIdSet.fromExisting(id1, id3))); }
@Override public boolean filter(Tuple2<GradoopId, T> tuple2) throws Exception { return graphIds.contains(tuple2.f0); } }
@Override public void reduce(Iterable<Tuple2<T, GradoopId>> iterable, Collector<Tuple2<T, GradoopIdSet>> collector) throws Exception { Iterator<Tuple2<T, GradoopId>> it = iterable.iterator(); Tuple2<T, GradoopId> firstTuple = it.next(); T firstField = firstTuple.f0; GradoopIdSet secondField = GradoopIdSet.fromExisting(firstTuple.f1); while (it.hasNext()) { GradoopId id = it.next().f1; secondField.add(id); } collector.collect(new Tuple2<>(firstField, secondField)); } }
@Test public void testSize() throws Exception { GradoopId id1 = GradoopId.get(); GradoopId id2 = GradoopId.get(); GradoopIdSet ids = new GradoopIdSet(); assertThat(ids.size(), is(0)); ids.add(id1); assertThat(ids.size(), is(1)); ids.add(id1); assertThat(ids.size(), is(1)); ids.add(id2); assertThat(ids.size(), is(2)); }
@Test public void testContainsAny() throws Exception { GradoopId id1 = GradoopId.get(); GradoopId id2 = GradoopId.get(); GradoopId id3 = GradoopId.get(); GradoopIdSet ids = new GradoopIdSet(); ids.addAll(Arrays.asList(id1, id2)); assertTrue(ids.containsAny(Sets.newHashSet(id1))); assertTrue(ids.containsAny(Sets.newHashSet(id2))); assertTrue(ids.containsAny(Sets.newHashSet(id1, id2))); assertFalse(ids.containsAny(Sets.newHashSet(id3))); assertTrue(ids.containsAny(Sets.newHashSet(id1, id3))); }
@Test public void testContainsAllCollection() throws Exception { GradoopId id1 = GradoopId.get(); GradoopId id2 = GradoopId.get(); GradoopId id3 = GradoopId.get(); GradoopIdSet ids = new GradoopIdSet(); ids.addAll(Arrays.asList(id1, id2)); assertTrue(ids.containsAll(Sets.newHashSet(id1))); assertTrue(ids.containsAll(Sets.newHashSet(id2))); assertTrue(ids.containsAll(Sets.newHashSet(id1, id2))); assertFalse(ids.containsAll(Sets.newHashSet(id3))); assertFalse(ids.containsAll(Sets.newHashSet(id1, id3))); }
@Override public boolean filter(EL value) throws Exception { return value.getGraphIds() == null || value.getGraphIds().isEmpty(); } }
@Test(expected = NoSuchElementException.class) public void testIteratorException() throws Exception { GradoopIdSet ids = new GradoopIdSet(); Iterator<GradoopId> idsIterator = ids.iterator(); assertFalse(idsIterator.hasNext()); idsIterator.next(); }
@Test public void testIterator() throws Exception { GradoopId id1 = GradoopId.get(); GradoopId id2 = GradoopId.get(); GradoopIdSet ids = GradoopIdSet.fromExisting(id1, id2); Iterator<GradoopId> idsIterator = ids.iterator(); assertTrue(idsIterator.hasNext()); assertNotNull(idsIterator.next()); assertTrue(idsIterator.hasNext()); assertNotNull(idsIterator.next()); assertFalse(idsIterator.hasNext()); }
/** * Creates a new instance from multiple GradoopIDs. * * @param ids given ids * @return gradoop id set */ public static GradoopIdSet fromExisting(Collection<GradoopId> ids) { return new GradoopIdSet(ids); }