Skip to content

Commit

Permalink
chore: unify to call SchemaLabel.getLabelId() (#2458)
Browse files Browse the repository at this point in the history
Change-Id: I31bcc0d1ee99f3c443f8f4f0d458e06ca89977ef
javeme authored and VGalaxies committed Feb 25, 2024
1 parent 02c9b4e commit 74cf310
Showing 19 changed files with 39 additions and 34 deletions.
Original file line number Diff line number Diff line change
@@ -26,6 +26,7 @@
import org.apache.hugegraph.HugeGraph;
import org.apache.hugegraph.backend.id.Id;
import org.apache.hugegraph.backend.query.ConditionQuery;
import org.apache.hugegraph.schema.SchemaLabel;
import org.apache.hugegraph.structure.HugeVertex;
import org.apache.hugegraph.traversal.optimize.TraversalUtil;
import org.apache.hugegraph.type.HugeType;
@@ -51,6 +52,10 @@ public Iterator<Vertex> vertices(HugeGraph g) {
this.label == null), "No source vertices provided");
Iterator<Vertex> iterator;
if (this.ids != null && !this.ids.isEmpty()) {
E.checkArgument(this.label == null,
"Just provide one of ids or label of source vertices");
E.checkArgument(props == null || props.isEmpty(),
"Just provide one of ids or properties of source vertices");
List<Id> sourceIds = new ArrayList<>(this.ids.size());
for (Object id : this.ids) {
sourceIds.add(HugeVertex.getIdValue(id));
@@ -62,7 +67,7 @@ public Iterator<Vertex> vertices(HugeGraph g) {
} else {
ConditionQuery query = new ConditionQuery(HugeType.VERTEX);
if (this.label != null) {
Id label = g.vertexLabel(this.label).id();
Id label = SchemaLabel.getVertexLabelId(g, this.label);
query.eq(HugeKeys.LABEL, label);
}
if (props != null && !props.isEmpty()) {
Original file line number Diff line number Diff line change
@@ -379,7 +379,7 @@ protected Iterator<Vertex> vertices(Object label, long limit) {
ConditionQuery query = new ConditionQuery(HugeType.VERTEX);
query.capacity(Query.NO_CAPACITY);
query.limit(limit);
query.eq(HugeKeys.LABEL, this.getVertexLabelId(label));
query.eq(HugeKeys.LABEL, this.getVertexLabelIdOrNull(label));
return this.graph().vertices(query);
}

Original file line number Diff line number Diff line change
@@ -26,6 +26,7 @@
import org.apache.hugegraph.backend.query.Query;
import org.apache.hugegraph.job.UserJob;
import org.apache.hugegraph.job.algorithm.BfsTraverser;
import org.apache.hugegraph.schema.SchemaLabel;
import org.apache.hugegraph.structure.HugeVertex;
import org.apache.hugegraph.traversal.algorithm.HugeTraverser;
import org.apache.hugegraph.type.define.Directions;
@@ -80,10 +81,7 @@ private Object betweenessCentrality(Directions direction,
assert topN >= 0L || topN == NO_LIMIT;

this.globalBetweennesses = new HashMap<>();
Id edgeLabelId = null;
if (label != null) {
edgeLabelId = this.graph().edgeLabel(label).id();
}
Id edgeLabelId = this.getEdgeLabelIdOrNull(label);

// TODO: sample the startVertices
Iterator<Vertex> startVertices = this.vertices(sourceLabel,
Original file line number Diff line number Diff line change
@@ -81,10 +81,7 @@ private Object closenessCentrality(Directions direction,
assert degree > 0L || degree == NO_LIMIT;
assert topN >= 0L || topN == NO_LIMIT;

Id edgeLabelId = null;
if (label != null) {
edgeLabelId = this.graph().edgeLabel(label).id();
}
Id edgeLabelId = this.getEdgeLabelIdOrNull(label);

// TODO: sample the startVertices
Iterator<Vertex> startVertices = this.vertices(sourceLabel,
Original file line number Diff line number Diff line change
@@ -73,7 +73,7 @@ public Object degreeCentrality(Directions direction,
JsonMap degrees = new JsonMap();
TopMap<Id> tops = new TopMap<>(topN);
Id vertex = null;
Id labelId = this.getEdgeLabelId(label);
Id labelId = this.getEdgeLabelIdOrNull(label);
long degree = 0L;
long totalEdges = 0L;

Original file line number Diff line number Diff line change
@@ -60,7 +60,7 @@ public Object call(UserJob<Object> job, Map<String, Object> parameters) {

private static class Traverser extends BfsTraverser<StressNode> {

private Map<Id, MutableLong> globalStresses;
private final Map<Id, MutableLong> globalStresses;

private Traverser(UserJob<Object> job) {
super(job);
@@ -80,10 +80,7 @@ private Object stressCentrality(Directions direction,
assert degree > 0L || degree == NO_LIMIT;
assert topN >= 0L || topN == NO_LIMIT;

Id edgeLabelId = null;
if (label != null) {
edgeLabelId = this.graph().edgeLabel(label).id();
}
Id edgeLabelId = this.getEdgeLabelIdOrNull(label);

// TODO: sample the startVertices
Iterator<Vertex> startVertices = this.vertices(sourceLabel,
Original file line number Diff line number Diff line change
@@ -178,7 +178,7 @@ private String voteCommunityOfVertex(Vertex vertex, String edgeLabel,
Directions dir, long degree) {
// neighbors of source vertex v
Id source = (Id) vertex.id();
Id labelId = this.getEdgeLabelId(edgeLabel);
Id labelId = this.getEdgeLabelIdOrNull(edgeLabel);
Iterator<Id> neighbors = this.adjacentVertices(source, dir,
labelId, degree);

Original file line number Diff line number Diff line change
@@ -177,4 +177,12 @@ public static Id getLabelId(HugeGraph graph, HugeType type, Object label) {
label.getClass());
}
}

public static Id getVertexLabelId(HugeGraph graph, Object label) {
return SchemaLabel.getLabelId(graph, HugeType.VERTEX, label);
}

public static Id getEdgeLabelId(HugeGraph graph, Object label) {
return SchemaLabel.getLabelId(graph, HugeType.EDGE, label);
}
}
Original file line number Diff line number Diff line change
@@ -112,7 +112,7 @@ private Set<Similar> fusiformSimilarityForVertex(
// Ignore current vertex if its neighbors number is not enough
return ImmutableSet.of();
}
Id labelId = this.getEdgeLabelId(label);
Id labelId = this.getEdgeLabelIdOrNull(label);
// Get similar nodes and counts
Iterator<Edge> edges = this.edgesOfVertex(vertex.id(), direction,
labelId, degree);
Original file line number Diff line number Diff line change
@@ -620,18 +620,18 @@ protected long edgesCount(Id source, EdgeStep edgeStep) {
}
}

protected Object getVertexLabelId(Object label) {
protected Object getVertexLabelIdOrNull(Object label) {
if (label == null) {
return null;
}
return SchemaLabel.getLabelId(this.graph, HugeType.VERTEX, label);
return SchemaLabel.getVertexLabelId(this.graph, label);
}

protected Id getEdgeLabelId(Object label) {
protected Id getEdgeLabelIdOrNull(Object label) {
if (label == null) {
return null;
}
return SchemaLabel.getLabelId(this.graph, HugeType.EDGE, label);
return SchemaLabel.getEdgeLabelId(this.graph, label);
}

protected void checkVertexExist(Id vertexId, String name) {
Original file line number Diff line number Diff line change
@@ -54,7 +54,7 @@ public double jaccardSimilarity(Id vertex, Id other, Directions dir,
E.checkNotNull(dir, "direction");
checkDegree(degree);

Id labelId = this.getEdgeLabelId(label);
Id labelId = this.getEdgeLabelIdOrNull(label);

Set<Id> sourceNeighbors = IteratorUtils.set(this.adjacentVertices(
vertex, dir, labelId, degree));
Original file line number Diff line number Diff line change
@@ -46,7 +46,7 @@ public Set<Id> kneighbor(Id sourceV, Directions dir,
checkDegree(degree);
checkLimit(limit);

Id labelId = this.getEdgeLabelId(label);
Id labelId = this.getEdgeLabelIdOrNull(label);

KneighborRecords records = new KneighborRecords(true, sourceV, true);

Original file line number Diff line number Diff line change
@@ -58,7 +58,7 @@ public Set<Id> kout(Id sourceV, Directions dir, String label,
capacity, limit);
}

Id labelId = this.getEdgeLabelId(label);
Id labelId = this.getEdgeLabelIdOrNull(label);

Set<Id> sources = newIdSet();
Set<Id> neighbors = newIdSet();
Original file line number Diff line number Diff line change
@@ -59,7 +59,7 @@ public PathSet paths(Id sourceV, Directions sourceDir,
return PathSet.EMPTY;
}

Id labelId = this.getEdgeLabelId(label);
Id labelId = this.getEdgeLabelIdOrNull(label);
Traverser traverser = new Traverser(sourceV, targetV, labelId,
degree, capacity, limit);
// We should stop early if walk backtrace or reach limit
Original file line number Diff line number Diff line change
@@ -55,7 +55,7 @@ public Map<Id, Double> personalRank(Id source, String label,
Map<Id, Double> ranks = newMap();
ranks.put(source, 1.0);

Id labelId = this.graph().edgeLabel(label).id();
Id labelId = this.getEdgeLabelIdOrNull(label);
Directions dir = this.getStartDirection(source, label);

Set<Id> outSeeds = newIdSet();
Original file line number Diff line number Diff line change
@@ -45,7 +45,7 @@ public Set<Id> sameNeighbors(Id vertex, Id other, Directions direction,
checkDegree(degree);
checkLimit(limit);

Id labelId = this.getEdgeLabelId(label);
Id labelId = this.getEdgeLabelIdOrNull(label);

Set<Id> sourceNeighbors = IteratorUtils.set(this.adjacentVertices(
vertex, direction, labelId, degree));
@@ -80,7 +80,7 @@ public Set<Id> sameNeighbors(List<Id> vertexIds, Directions direction,
List<Id> labelsId = new ArrayList<>();
if (labels != null) {
for (String label : labels) {
labelsId.add(this.getEdgeLabelId(label));
labelsId.add(this.getEdgeLabelIdOrNull(label));
}
}

Original file line number Diff line number Diff line change
@@ -61,7 +61,7 @@ public Path shortestPath(Id sourceV, Id targetV, Directions dir,

Map<Id, String> labelMap = newMap(labels.size());
for (String label : labels) {
labelMap.put(this.getEdgeLabelId(label), label);
labelMap.put(this.getEdgeLabelIdOrNull(label), label);
}
Traverser traverser = new Traverser(sourceV, targetV, dir, labelMap,
degree, skipDegree, capacity);
@@ -122,7 +122,7 @@ public PathSet allShortestPaths(Id sourceV, Id targetV, Directions dir,

Map<Id, String> labelMap = newMap(labels.size());
for (String label : labels) {
labelMap.put(this.getEdgeLabelId(label), label);
labelMap.put(this.getEdgeLabelIdOrNull(label), label);
}
Traverser traverser = new Traverser(sourceV, targetV, dir, labelMap,
degree, skipDegree, capacity);
Original file line number Diff line number Diff line change
@@ -58,7 +58,7 @@ public WeightedPaths singleSourceShortestPaths(Id sourceV, Directions dir,
checkSkipDegree(skipDegree, degree, capacity);
checkLimit(limit);

Id labelId = this.getEdgeLabelId(label);
Id labelId = this.getEdgeLabelIdOrNull(label);
Traverser traverser = new Traverser(sourceV, dir, labelId, weight,
degree, skipDegree, capacity, limit);
while (true) {
@@ -94,7 +94,7 @@ public NodeWithWeight weightedShortestPath(Id sourceV, Id targetV,
checkCapacity(capacity);
checkSkipDegree(skipDegree, degree, capacity);

Id labelId = this.getEdgeLabelId(label);
Id labelId = this.getEdgeLabelIdOrNull(label);
Traverser traverser = new Traverser(sourceV, dir, labelId, weight,
degree, skipDegree, capacity,
NO_LIMIT);
Original file line number Diff line number Diff line change
@@ -81,7 +81,7 @@ private PathSet subGraphPaths(Id sourceV, Directions dir, String label,
checkCapacity(capacity);
checkLimit(limit);

Id labelId = this.getEdgeLabelId(label);
Id labelId = this.getEdgeLabelIdOrNull(label);
Traverser traverser = new Traverser(sourceV, labelId, depth, degree,
capacity, limit, rings,
sourceInRing);

0 comments on commit 74cf310

Please sign in to comment.