use of com.baidu.hugegraph.entity.query.TableView in project incubator-hugegraph-toolchain by apache.
the class GremlinQueryService method buildTableView.
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()));
}
}
use of com.baidu.hugegraph.entity.query.TableView in project incubator-hugegraph-toolchain by apache.
the class GremlinQueryService method executeQuery.
public GremlinResult executeQuery(int connId, GremlinQuery query) {
HugeClient client = this.getClient(connId);
log.debug("The original gremlin ==> {}", query.getContent());
String gremlin = this.optimize(query.getContent());
log.debug("The optimized gremlin ==> {}", gremlin);
// Execute gremlin query
ResultSet resultSet = this.executeGremlin(gremlin, client);
// Scan data, vote the result type
TypedResult typedResult = this.parseResults(resultSet);
// Build json view
JsonView jsonView = new JsonView(typedResult.getData());
// Build table view
TableView tableView = this.buildTableView(typedResult);
// Build graph view
GraphView graphView = this.buildGraphView(typedResult, client);
return GremlinResult.builder().type(typedResult.getType()).jsonView(jsonView).tableView(tableView).graphView(graphView).build();
}
use of com.baidu.hugegraph.entity.query.TableView in project incubator-hugegraph-toolchain by apache.
the class OltpAlgoService method shortestPath.
public GremlinResult shortestPath(int connId, ShortestPath body) {
HugeClient client = this.getClient(connId);
TraverserManager traverser = client.traverser();
Path result = traverser.shortestPath(body.getSource(), body.getTarget(), body.getDirection(), body.getLabel(), body.getMaxDepth(), body.getMaxDegree(), body.getSkipDegree(), body.getCapacity());
JsonView jsonView = new JsonView();
jsonView.setData(result.objects());
Date createTime = HubbleUtil.nowDate();
TableView tableView = this.buildPathTableView(result);
GraphView graphView = this.buildPathGraphView(result);
// Insert execute history
ExecuteStatus status = ExecuteStatus.SUCCESS;
ExecuteHistory history;
history = new ExecuteHistory(null, connId, 0L, ExecuteType.ALGORITHM, body.toString(), status, AsyncTaskStatus.UNKNOWN, -1L, createTime);
this.historyService.save(history);
return GremlinResult.builder().type(GremlinResult.Type.PATH).jsonView(jsonView).tableView(tableView).graphView(graphView).build();
}
Aggregations