@Override protected MarkedEdge createEdge( final DirectedEdge edge, final boolean marked ) { return new SimpleMarkedEdge( targetId, type, edge.id, edge.timestamp, marked ); } };
@Override protected MarkedEdge createEdge( final DirectedEdge edge, final boolean marked ) { return new SimpleMarkedEdge( sourceId, type, edge.id, edge.timestamp, marked ); } };
@Override protected MarkedEdge createEdge( final DirectedEdge edge, final boolean marked ) { return new SimpleMarkedEdge( edge.id, type, targetId, edge.timestamp, marked ); } };
@Override protected MarkedEdge createEdge( final DirectedEdge edge, final boolean marked ) { return new SimpleMarkedEdge( edge.id, type, targetId, edge.timestamp, marked ); } };
@Override protected MarkedEdge createEdge( final Long column, final boolean marked ) { return new SimpleMarkedEdge( sourceId, type, targetId, column.longValue(), marked ); }
/** * Create an edge with the specified params */ public static MarkedEdge createEdge( final Id sourceId, final String edgeType, final Id targetId, final long timestamp, final boolean deleted ) { return new SimpleMarkedEdge( sourceId, edgeType, targetId, timestamp, deleted ); }
@Nullable @Override public MarkedEdge apply( @Nullable final Edge input ) { if ( input == null ) { return null; } if ( input instanceof MarkedEdge ) { return ( MarkedEdge ) input; } return new SimpleMarkedEdge( input.getSourceNode(), input.getType(), input.getTargetNode(), input.getTimestamp(), false ); } };
@Override public Observable<MarkedEdge> markEdge( final Edge edge ) { GraphValidation.validateEdge( edge ); final MarkedEdge markedEdge = new SimpleMarkedEdge( edge, true ); final Observable<MarkedEdge> observable = Observable.just( markedEdge ).map( edge1 -> { final UUID timestamp = UUIDGenerator.newTimeUUID(); final MutationBatch edgeMutation = storageEdgeSerialization.writeEdge( scope, edge1, timestamp ); if (logger.isTraceEnabled()) { logger.trace("Marking edge {} as deleted to commit log", edge1); } try { edgeMutation.execute(); } catch ( ConnectionException e ) { throw new RuntimeException( "Unable to execute mutation", e ); } return edge1; } ); return ObservableTimer.time( observable, markEdgeTimer ); }
@Override public Observable<MarkedEdge> writeEdge( final Edge edge ) { GraphValidation.validateEdge( edge ); final MarkedEdge markedEdge = new SimpleMarkedEdge( edge, false ); final Observable<MarkedEdge> observable = Observable.just( markedEdge ).map( edge1 -> { final UUID timestamp = UUIDGenerator.newTimeUUID(); final MutationBatch mutation = edgeMetadataSerialization.writeEdge( scope, edge1 ); final MutationBatch edgeMutation = storageEdgeSerialization.writeEdge( scope, edge1, timestamp ); mutation.mergeShallow( edgeMutation ); try { mutation.execute(); } catch ( ConnectionException e ) { throw new RuntimeException( "Unable to execute mutation", e ); } return edge1; } ); return ObservableTimer.time( observable, writeEdgeTimer ); }
@Test public void sameEdges() { final Id sourceId = IdGenerator.createId( "source" ); final Id targetId = IdGenerator.createId( "target" ); final String type = "type"; final long timestamp = 10000; final SimpleMarkedEdge markedEdge1 = new SimpleMarkedEdge( sourceId, type, targetId, timestamp, true ); final SimpleMarkedEdge markedEdge2 = new SimpleMarkedEdge( sourceId, type, targetId, timestamp, true ); int compare = comp.compare( markedEdge1, markedEdge2 ); assertEquals( 0, compare ); compare = comp.compare( markedEdge2, markedEdge1 ); assertEquals( 0, compare ); }
@Test public void sameEdges() { final Id sourceId = IdGenerator.createId( "source" ); final Id targetId = IdGenerator.createId( "target" ); final String type = "type"; final long timestamp = 10000; final SimpleMarkedEdge markedEdge1 = new SimpleMarkedEdge( sourceId, type, targetId, timestamp, true ); final SimpleMarkedEdge markedEdge2 = new SimpleMarkedEdge( sourceId, type, targetId, timestamp, true ); int compare = comp.compare( markedEdge1, markedEdge2 ); assertEquals( 0, compare ); compare = comp.compare( markedEdge2, markedEdge1 ); assertEquals( 0, compare ); }
@Test public void timestampDifferent() { final Id sourceId = IdGenerator.createId( "source" ); final Id targetId = IdGenerator.createId( "target" ); final String type = "type"; final long timestamp = 10000; final SimpleMarkedEdge markedEdge1 = new SimpleMarkedEdge( sourceId, type, targetId, timestamp, true ); final SimpleMarkedEdge markedEdge2 = new SimpleMarkedEdge( sourceId, type, targetId, timestamp + 1, true ); //marked edge 1 is less than timestamp, it should be considered "greater" int compare = comp.compare( markedEdge1, markedEdge2 ); assertEquals( 1, compare ); compare = comp.compare( markedEdge2, markedEdge1 ); assertEquals( -1, compare ); }
@Test public void timestampDifferent() { final Id sourceId = IdGenerator.createId( "source" ); final Id targetId = IdGenerator.createId( "target" ); final String type = "type"; final long timestamp = 10000; final SimpleMarkedEdge markedEdge1 = new SimpleMarkedEdge( sourceId, type, targetId, timestamp, true ); final SimpleMarkedEdge markedEdge2 = new SimpleMarkedEdge( sourceId, type, targetId, timestamp + 1, true ); //marked edge 1 is less than timestamp, it should be considered "greater" int compare = comp.compare( markedEdge1, markedEdge2 ); assertEquals( 1, compare ); compare = comp.compare( markedEdge2, markedEdge1 ); assertEquals( -1, compare ); }
new SimpleMarkedEdge( nodeId, type, IdGenerator.createId( "subType" ), 10005l, false );
@Test public void uuidDifferent() { final Id sourceId = IdGenerator.createId( "source" ); final Id targetId1 = IdGenerator.createId( "target" ); final Id targetId2 = IdGenerator.createId( "target" ); final String type = "type"; final long timestamp = 10000; final SimpleMarkedEdge markedEdge1 = new SimpleMarkedEdge( sourceId, type, targetId1, timestamp, true ); final SimpleMarkedEdge markedEdge2 = new SimpleMarkedEdge( sourceId, type, targetId2, timestamp, true ); //marked edge 1 uuid is a is less than target uuid timestamp, it should be considered "greater" int compare = comp.compare( markedEdge1, markedEdge2 ); assertTrue( compare > 0 ); compare = comp.compare( markedEdge2, markedEdge1 ); assertTrue( compare < 0 ); }
@Test public void uuidDifferent() { final Id sourceId1 = IdGenerator.createId( "source" ); final Id sourceId2 = IdGenerator.createId( "source" ); final Id targetId = IdGenerator.createId( "target" ); final String type = "type"; final long timestamp = 10000; final SimpleMarkedEdge markedEdge1 = new SimpleMarkedEdge( sourceId1, type, targetId, timestamp, true ); final SimpleMarkedEdge markedEdge2 = new SimpleMarkedEdge( sourceId2, type, targetId, timestamp, true ); //marked edge 1 uuid is a is less than target uuid timestamp, it should be considered "greater" int compare = comp.compare( markedEdge1, markedEdge2 ); assertTrue( compare > 0 ); compare = comp.compare( markedEdge2, markedEdge1 ); assertTrue( compare < 0 ); }
@Test public void idTypeDifferent() { final UUID sourceId = UUIDGenerator.newTimeUUID(); final Id sourceId1 = IdGenerator.createId( sourceId, "source1" ); final Id sourceId2 = IdGenerator.createId( sourceId, "source2" ); final Id targetId = IdGenerator.createId( "target" ); final String type = "type"; final long timestamp = 10000; final SimpleMarkedEdge markedEdge1 = new SimpleMarkedEdge( sourceId2, type, targetId, timestamp, true ); final SimpleMarkedEdge markedEdge2 = new SimpleMarkedEdge( sourceId1, type, targetId, timestamp, true ); //marked edge 1 is less than timestamp, it should be considered "greater" int compare = comp.compare( markedEdge1, markedEdge2 ); assertEquals( 1, compare ); compare = comp.compare( markedEdge2, markedEdge1 ); assertEquals( -1, compare ); } }
@Test public void idTypeDifferent() { final UUID targetId = UUIDGenerator.newTimeUUID(); final Id sourceId = IdGenerator.createId( "source" ); final Id targetId1 = IdGenerator.createId( targetId, "target1" ); final Id targetId2 = IdGenerator.createId( targetId, "target2" ); final String type = "type"; final long timestamp = 10000; final SimpleMarkedEdge markedEdge1 = new SimpleMarkedEdge( sourceId, type, targetId2, timestamp, true ); final SimpleMarkedEdge markedEdge2 = new SimpleMarkedEdge( sourceId, type, targetId1, timestamp, true ); //marked edge 1 is less than timestamp, it should be considered "greater" int compare = comp.compare( markedEdge1, markedEdge2 ); assertEquals( 1, compare ); compare = comp.compare( markedEdge2, markedEdge1 ); assertEquals( -1, compare ); } }
( MarkedEdge ) new SimpleMarkedEdge( createId( "source" ), "type", createId( "target" ), 1000, false ) ) .iterator(); ( MarkedEdge ) new SimpleMarkedEdge( createId( "source" ), "type", createId( "target" ), 1000, true ) ) .iterator();
@Test public void testCursors(){ //test encoding edge final MarkedEdge edge1 = new SimpleMarkedEdge( createId("source1"), "edgeType1", createId("target1"), 100, false, false, false ); final MarkedEdge edge2 = new SimpleMarkedEdge( createId("source2"), "edgeType2", createId("target2"), 110, false, false, false ); final Integer query1 = 10; final Integer query2 = 20; final EdgePath<Integer> filter3Path = new EdgePath<>( 3, query2, ElasticsearchCursorSerializer.INSTANCE, Optional.absent() ); final EdgePath<MarkedEdge> filter2Path = new EdgePath<>( 2, edge2, EdgeCursorSerializer.INSTANCE, Optional.of( filter3Path ) ); final EdgePath<Integer> filter1Path = new EdgePath<>( 1, query1, ElasticsearchCursorSerializer.INSTANCE, Optional.of(filter2Path) ); final EdgePath<MarkedEdge> filter0Path = new EdgePath<>( 0, edge1, EdgeCursorSerializer.INSTANCE, Optional.of( filter1Path ) ); ResponseCursor responseCursor = new ResponseCursor( Optional.of(filter0Path) ); final Optional<String> cursor = responseCursor.encodeAsString(); //now parse it final RequestCursor requestCursor = new RequestCursor( cursor ); //get everything else out. We reversed the order for because we can, order shouldn't matter. final Integer parsedQuery2 = requestCursor.getCursor( 3, ElasticsearchCursorSerializer.INSTANCE ); assertEquals(query2, parsedQuery2); final MarkedEdge parsedEdge2 = requestCursor.getCursor( 2, EdgeCursorSerializer.INSTANCE ); assertEquals( edge2, parsedEdge2 ); final Integer parsedQuery1 = requestCursor.getCursor( 1, ElasticsearchCursorSerializer.INSTANCE ); assertEquals( query1, parsedQuery1 ); final MarkedEdge parsedEdge1 = requestCursor.getCursor( 0, EdgeCursorSerializer.INSTANCE ); assertEquals(edge1, parsedEdge1); }