private Set<Id> adjacentVertices(Set<Id> vertices, Directions dir, Id label, Set<Id> excluded, long degree, long limit) { if (limit == 0) { return ImmutableSet.of(); } Set<Id> neighbors = newSet(); for (Id source : vertices) { Iterator<Edge> edges = this.edgesOfVertex(source, dir, label, degree); while (edges.hasNext()) { HugeEdge e = (HugeEdge) edges.next(); Id target = e.id().otherVertexId(); if (excluded != null && excluded.contains(target)) { continue; } neighbors.add(target); if (limit != NO_LIMIT && neighbors.size() >= limit) { return neighbors; } } } return neighbors; }
protected final List<Object> idColumnValue(EdgeId edgeId) { List<Object> list = new ArrayList<>(5); list.add(IdUtil.writeString(edgeId.ownerVertexId())); list.add(edgeId.direction().code()); list.add(edgeId.edgeLabelId().asLong()); list.add(edgeId.sortValues()); list.add(IdUtil.writeString(edgeId.otherVertexId())); return list; }
while (edges.hasNext()) { HugeEdge edge = (HugeEdge) edges.next(); Id target = edge.id().otherVertexId();
while (edges.hasNext()) { HugeEdge edge = (HugeEdge) edges.next(); Id target = edge.id().otherVertexId();
private String writeEdgeId(Id id, boolean withOwnerVertex) { EdgeId edgeId; if (id instanceof EdgeId) { edgeId = (EdgeId) id; } else { edgeId = EdgeId.parse(id.asString()); } List<String> list = new ArrayList<>(5); if (withOwnerVertex) { list.add(writeEntryId(edgeId.ownerVertexId())); } // Edge name: type + edge-label-name + sortKeys + targetVertex list.add(writeType(edgeId.direction().type())); list.add(writeId(edgeId.edgeLabelId())); list.add(edgeId.sortValues()); list.add(writeEntryId(edgeId.otherVertexId())); return EdgeId.concat(list.toArray(new String[0])); }
while (edges.hasNext()) { HugeEdge edge = (HugeEdge) edges.next(); Id target = edge.id().otherVertexId();
while (edges.hasNext()) { HugeEdge edge = (HugeEdge) edges.next(); Id target = edge.id().otherVertexId();
Id target = edge.id().otherVertexId(); this.accessedVertices.add(target);
@Override protected List<Object> idColumnValue(Id id) { EdgeId edgeId; if (!(id instanceof EdgeId)) { String[] idParts = EdgeId.split(id); if (idParts.length == 1) { // Delete edge by label return Arrays.asList((Object[]) idParts); } id = IdUtil.readString(id.asString()); edgeId = EdgeId.parse(id.asString()); } else { edgeId = (EdgeId) id; } E.checkState(edgeId.direction() == this.direction, "Can't query %s edges from %s edges table", edgeId.direction(), this.direction); List<Object> list = new ArrayList<>(5); list.add(IdUtil.writeString(edgeId.ownerVertexId())); list.add(edgeId.direction().code()); list.add(edgeId.edgeLabelId().asLong()); list.add(edgeId.sortValues()); list.add(IdUtil.writeString(edgeId.otherVertexId())); return list; }
@Override protected List<Object> idColumnValue(Id id) { EdgeId edgeId; if (!(id instanceof EdgeId)) { String[] idParts = EdgeId.split(id); if (idParts.length == 1) { // Delete edge by label return Arrays.asList((Object[]) idParts); } id = IdUtil.readString(id.asString()); edgeId = EdgeId.parse(id.asString()); } else { edgeId = (EdgeId) id; } E.checkState(edgeId.direction() == this.direction, "Can't query %s edges from %s edges table", edgeId.direction(), this.direction); List<Object> list = new ArrayList<>(5); list.add(IdUtil.writeString(edgeId.ownerVertexId())); list.add(edgeId.direction().code()); list.add(edgeId.edgeLabelId().asLong()); list.add(edgeId.sortValues()); list.add(IdUtil.writeString(edgeId.otherVertexId())); return list; }
protected TableBackendEntry.Row formatEdge(HugeEdge edge) { EdgeId id = edge.idWithDirection(); TableBackendEntry.Row row = new TableBackendEntry.Row(edge.type(), id); // Id: ownerVertex + direction + edge-label + sortValues + otherVertex row.column(HugeKeys.OWNER_VERTEX, IdUtil.writeString(id.ownerVertexId())); row.column(HugeKeys.DIRECTION, id.direction().code()); row.column(HugeKeys.LABEL, id.edgeLabelId().asLong()); row.column(HugeKeys.SORT_VALUES, id.sortValues()); row.column(HugeKeys.OTHER_VERTEX, IdUtil.writeString(id.otherVertexId())); this.formatProperties(edge, row); return row; }
private static BinaryId writeEdgeId(Id id) { EdgeId edgeId; if (id instanceof EdgeId) { edgeId = (EdgeId) id; } else { edgeId = EdgeId.parse(id.asString()); } BytesBuffer buffer = BytesBuffer.allocate(256); buffer.writeId(edgeId.ownerVertexId()); buffer.write(edgeId.direction().type().code()); buffer.writeId(edgeId.edgeLabelId()); buffer.writeString(edgeId.sortValues()); buffer.writeId(edgeId.otherVertexId()); return new BinaryId(buffer.bytes(), id); }
@Override public BackendEntry writeEdgeProperty(HugeEdgeProperty<?> prop) { HugeEdge edge = prop.element(); EdgeId id = edge.idWithDirection(); TableBackendEntry.Row row = new TableBackendEntry.Row(edge.type(), id); // Id: ownerVertex + direction + edge-label + sortValues + otherVertex row.column(HugeKeys.OWNER_VERTEX, IdUtil.writeString(id.ownerVertexId())); row.column(HugeKeys.DIRECTION, id.direction().code()); row.column(HugeKeys.LABEL, id.edgeLabelId().asLong()); row.column(HugeKeys.SORT_VALUES, id.sortValues()); row.column(HugeKeys.OTHER_VERTEX, IdUtil.writeString(id.otherVertexId())); // Format edge property this.formatProperty(prop, row); TableBackendEntry entry = newBackendEntry(row); entry.subId(IdGenerator.of(prop.key())); return entry; }
private Set<Id> adjacentVertices(Set<Id> vertices, Directions dir, Id label, Set<Id> excluded, long degree, long limit) { if (limit == 0) { return ImmutableSet.of(); } Set<Id> neighbors = newSet(); for (Id source : vertices) { Iterator<Edge> edges = this.edgesOfVertex(source, dir, label, degree); while (edges.hasNext()) { HugeEdge e = (HugeEdge) edges.next(); Id target = e.id().otherVertexId(); if (excluded != null && excluded.contains(target)) { continue; } neighbors.add(target); if (limit != NO_LIMIT && neighbors.size() >= limit) { return neighbors; } } } return neighbors; }
protected final List<Object> idColumnValue(EdgeId edgeId) { List<Object> list = new ArrayList<>(5); list.add(IdUtil.writeString(edgeId.ownerVertexId())); list.add(edgeId.direction().code()); list.add(edgeId.edgeLabelId().asLong()); list.add(edgeId.sortValues()); list.add(IdUtil.writeString(edgeId.otherVertexId())); return list; }
private String writeEdgeId(Id id, boolean withOwnerVertex) { EdgeId edgeId; if (id instanceof EdgeId) { edgeId = (EdgeId) id; } else { edgeId = EdgeId.parse(id.asString()); } List<String> list = new ArrayList<>(5); if (withOwnerVertex) { list.add(writeEntryId(edgeId.ownerVertexId())); } // Edge name: type + edge-label-name + sortKeys + targetVertex list.add(writeType(edgeId.direction().type())); list.add(writeId(edgeId.edgeLabelId())); list.add(edgeId.sortValues()); list.add(writeEntryId(edgeId.otherVertexId())); return EdgeId.concat(list.toArray(new String[0])); }
@Override protected List<Object> idColumnValue(Id id) { EdgeId edgeId; if (!(id instanceof EdgeId)) { String[] idParts = EdgeId.split(id); if (idParts.length == 1) { // Delete edge by label return Arrays.asList((Object[]) idParts); } id = IdUtil.readString(id.asString()); edgeId = EdgeId.parse(id.asString()); } else { edgeId = (EdgeId) id; } E.checkState(edgeId.direction() == this.direction, "Can't query %s edges from %s edges table", edgeId.direction(), this.direction); List<Object> list = new ArrayList<>(5); list.add(IdUtil.writeString(edgeId.ownerVertexId())); list.add(edgeId.direction().code()); list.add(edgeId.edgeLabelId().asLong()); list.add(edgeId.sortValues()); list.add(IdUtil.writeString(edgeId.otherVertexId())); return list; }
protected TableBackendEntry.Row formatEdge(HugeEdge edge) { EdgeId id = edge.idWithDirection(); TableBackendEntry.Row row = new TableBackendEntry.Row(edge.type(), id); // Id: ownerVertex + direction + edge-label + sortValues + otherVertex row.column(HugeKeys.OWNER_VERTEX, IdUtil.writeString(id.ownerVertexId())); row.column(HugeKeys.DIRECTION, id.direction().code()); row.column(HugeKeys.LABEL, id.edgeLabelId().asLong()); row.column(HugeKeys.SORT_VALUES, id.sortValues()); row.column(HugeKeys.OTHER_VERTEX, IdUtil.writeString(id.otherVertexId())); this.formatProperties(edge, row); return row; }
private static BinaryId writeEdgeId(Id id) { EdgeId edgeId; if (id instanceof EdgeId) { edgeId = (EdgeId) id; } else { edgeId = EdgeId.parse(id.asString()); } BytesBuffer buffer = BytesBuffer.allocate(256); buffer.writeId(edgeId.ownerVertexId()); buffer.write(edgeId.direction().type().code()); buffer.writeId(edgeId.edgeLabelId()); buffer.writeString(edgeId.sortValues()); buffer.writeId(edgeId.otherVertexId()); return new BinaryId(buffer.bytes(), id); }
@Override public BackendEntry writeEdgeProperty(HugeEdgeProperty<?> prop) { HugeEdge edge = prop.element(); EdgeId id = edge.idWithDirection(); TableBackendEntry.Row row = new TableBackendEntry.Row(edge.type(), id); // Id: ownerVertex + direction + edge-label + sortValues + otherVertex row.column(HugeKeys.OWNER_VERTEX, IdUtil.writeString(id.ownerVertexId())); row.column(HugeKeys.DIRECTION, id.direction().code()); row.column(HugeKeys.LABEL, id.edgeLabelId().asLong()); row.column(HugeKeys.SORT_VALUES, id.sortValues()); row.column(HugeKeys.OTHER_VERTEX, IdUtil.writeString(id.otherVertexId())); // Format edge property this.formatProperty(prop, row); TableBackendEntry entry = newBackendEntry(row); entry.subId(IdGenerator.of(prop.key())); return entry; }