@Override protected Iterator<MarkedEdge> getIteratorFullRange( final Collection<Shard> readShards ) { final SearchByEdge searchFullRange = new SimpleSearchByEdge( search.sourceNode(), search.getType(),search.targetNode(), Long.MAX_VALUE, SearchByEdgeType.Order.DESCENDING, Optional.absent()); return shardedEdgeSerialization.getEdgeVersions( edgeColumnFamilies, scope, searchFullRange, readShards ); } };
/** * Validate the search edge */ public static void validateSearchByEdge( final SearchByEdge search ) { Preconditions.checkNotNull( search, "search is required" ); ValidationUtils.verifyIdentity( search.sourceNode() ); ValidationUtils.verifyIdentity( search.targetNode() ); ValidationUtils.verifyString( search.getType(), "type" ); validateTimestamp( search.getMaxTimestamp(), "maxTimestamp" ); //only validate if the value is present if(search.last().isPresent()){ validateEdge( search.last().get() ); } }
@Override public Iterator<MarkedEdge> getEdgeVersions( final ApplicationScope scope, final SearchByEdge search ) { ValidationUtils.validateApplicationScope( scope ); GraphValidation.validateSearchByEdge( search ); final Id targetId = search.targetNode(); final Id sourceId = search.sourceNode(); final String type = search.getType(); final long maxTimestamp = search.getMaxTimestamp(); final DirectedEdgeMeta versionMetaData = DirectedEdgeMeta.fromEdge( sourceId, targetId, type ); final Iterator<ShardEntryGroup> readShards = edgeShardStrategy.getReadShards( scope, maxTimestamp, versionMetaData ); //now create a result iterator with our iterator of read shards return new ShardGroupColumnIterator( scope, versionMetaData, shardGroupDeletion, readShards ) { @Override protected Iterator<MarkedEdge> getIterator( final Collection<Shard> readShards ) { return shardedEdgeSerialization.getEdgeVersions( edgeColumnFamilies, scope, search, readShards ); } @Override protected Iterator<MarkedEdge> getIteratorFullRange( final Collection<Shard> readShards ) { final SearchByEdge searchFullRange = new SimpleSearchByEdge( search.sourceNode(), search.getType(),search.targetNode(), Long.MAX_VALUE, SearchByEdgeType.Order.DESCENDING, Optional.absent()); return shardedEdgeSerialization.getEdgeVersions( edgeColumnFamilies, scope, searchFullRange, readShards ); } }; }
GraphValidation.validateSearchByEdge( search ); final Id targetId = search.targetNode(); final Id sourceId = search.sourceNode(); final String type = search.getType();