in hugegraph-hubble/hubble-be/src/main/java/org/apache/hugegraph/service/query/GremlinQueryService.java [258:316]
private TableView buildTableView(TypedResult typedResult) {
List<Object> data = typedResult.getData();
if (CollectionUtils.isEmpty(data)) {
return TableView.EMPTY;
}
switch (typedResult.getType()) {
case EMPTY:
return TableView.EMPTY;
case GENERAL:
// result
List<Object> results = new ArrayList<>(data.size());
data.forEach(object -> {
results.add(ImmutableMap.of("result", object));
});
return new TableView(TableView.GENERAL_HEADER, results);
case VERTEX:
// id, label, properties
List<Object> vertices = new ArrayList<>(data.size());
data.forEach(object -> {
if (object instanceof Vertex) {
vertices.add(object);
}
});
return new TableView(TableView.VERTEX_HEADER, vertices);
case EDGE:
// id, label, source, target, properties
List<Object> edges = new ArrayList<>(data.size());
data.forEach(object -> {
if (object instanceof Edge) {
edges.add(object);
}
});
return new TableView(TableView.EDGE_HEADER, edges);
case PATH:
// path, only fill vertex/edge id
List<Object> paths = new ArrayList<>(data.size());
data.forEach(object -> {
if (object instanceof Path) {
Path path = (Path) object;
List<Object> ids = new ArrayList<>();
path.objects().forEach(element -> {
if (element instanceof Vertex) {
ids.add(((Vertex) element).id());
} else if (element instanceof Edge) {
ids.add(((Edge) element).id());
} else {
ids.add(element);
}
});
paths.add(ImmutableMap.of("path", ids));
}
});
return new TableView(TableView.PATH_HEADER, paths);
default:
throw new AssertionError(String.format(
"Unknown result type '%s'", typedResult.getType()));
}
}