@Override public Iterator<MarkedEdge> loadEdges( final ShardedEdgeSerialization serialization, final EdgeColumnFamilies edgeColumnFamilies, final ApplicationScope scope, final Collection<Shard> shards, final long maxValue, final SearchByEdgeType.Order order ) { final Id targetId = nodes[0].id; final String edgeType = types[0]; final String sourceType = types[1]; final SearchByIdType search = new SimpleSearchByIdType( targetId, edgeType, maxValue, order, sourceType, Optional.absent() ); return serialization.getEdgesToTargetBySourceType( edgeColumnFamilies, scope, search, shards ); }
@Override public Iterator<MarkedEdge> loadEdges( final ShardedEdgeSerialization serialization, final EdgeColumnFamilies edgeColumnFamilies, final ApplicationScope scope, final Collection<Shard> shards, final long maxValue, final SearchByEdgeType.Order order ) { // final Id sourceId = nodes[0].id; final String edgeType = types[0]; final String targetType = types[1]; final SearchByIdType search = new SimpleSearchByIdType( sourceId, edgeType, maxValue, order, targetType, Optional.<Edge>absent() ); return serialization.getEdgesFromSourceByTargetType( edgeColumnFamilies, scope, search, shards ); }
/** * * @param sourceId * @param type * @param maxVersion * @param idType * @param last * @return */ public static SearchByIdType createSearchByEdgeAndId( final Id sourceId, final String type, final long maxVersion, final String idType, final Edge last ) { return new SimpleSearchByIdType( sourceId, type, maxVersion, SearchByEdgeType.Order.DESCENDING, idType, Optional.fromNullable(last) ); }
/** * * @param sourceId * @param type * @param maxVersion * @param idType * @param last * @return */ public static SearchByIdType createSearchByEdgeAndIdUnfiltered( final Id sourceId, final String type, final long maxVersion, final String idType, final Edge last ) { return new SimpleSearchByIdType( sourceId, type, maxVersion, SearchByEdgeType.Order.DESCENDING, idType, Optional.fromNullable(last), false ); }
@Override public Observable<Edge> getEdgesFromSource( final GraphManager gm, final Id sourceNode, final String targetType ) { final Observable<String> edgeTypes = gm.getEdgeTypesFromSource( new SimpleSearchEdgeType( sourceNode, null, null ) ); return edgeTypes.flatMap( edgeType -> { if (logger.isTraceEnabled()) { logger.trace("Loading edges of edgeType {} from {}", edgeType, sourceNode); } return gm.loadEdgesFromSourceByType( new SimpleSearchByIdType( sourceNode, edgeType, Long.MAX_VALUE, SearchByEdgeType.Order.DESCENDING, targetType, null ) ); } ); }
@Override protected Iterator<MarkedEdge> getIteratorFullRange (final Collection<Shard> readShards) { final SearchByIdType edgeTypeFullRange = new SimpleSearchByIdType( edgeType.getNode(), edgeType.getType(), Long.MAX_VALUE, SearchByEdgeType.Order.DESCENDING, edgeType.getIdType(), Optional.absent(), false ); return shardedEdgeSerialization .getEdgesFromSourceByTargetType( edgeColumnFamilies, scope, edgeTypeFullRange, readShards); } };
@Override protected Iterator<MarkedEdge> getIteratorFullRange( final Collection<Shard> readShards ) { final SearchByIdType edgeTypeFullRange = new SimpleSearchByIdType( edgeType.getNode(), edgeType.getType(), Long.MAX_VALUE, SearchByEdgeType.Order.DESCENDING, edgeType.getIdType(), Optional.absent(), false ); return shardedEdgeSerialization.getEdgesToTargetBySourceType( edgeColumnFamilies, scope, edgeTypeFullRange, readShards); } };
@Override public Observable<FilterResult<Id>> call( final Observable<FilterResult<Id>> filterResultObservable ) { //get the graph manager final GraphManager graphManager = graphManagerFactory.createEdgeManager( pipelineContext.getApplicationScope() ); final String edgeName = getEdgeTypeFromConnectionType( connectionName ); //return all ids that are emitted from this edge return filterResultObservable.flatMap( idFilterResult -> { //set our our constant state final Optional<MarkedEdge> startFromCursor = getSeekValue(); final Id id = idFilterResult.getValue(); final Optional<Edge> typeWrapper = Optional.fromNullable(startFromCursor.orNull()); final SimpleSearchByIdType search = new SimpleSearchByIdType( id, edgeName, Long.MAX_VALUE, SearchByEdgeType.Order.DESCENDING, entityType, typeWrapper ); return graphManager.loadEdgesFromSourceByType( search ).map( edge -> createFilterResult( edge.getTargetNode(), edge, idFilterResult.getPath() )); } ); }