in interactive_engine/compiler/src/main/java/com/alibaba/graphscope/gremlin/result/GremlinResultAnalyzer.java [36:81]
public static GremlinResultParser analyze(Traversal traversal) {
List<Step> steps = traversal.asAdmin().getSteps();
GremlinResultParser parserType = GremlinResultParserFactory.GRAPH_ELEMENT;
for (Step step : steps) {
if (Utils.equalClass(step, ScanFusionStep.class)
|| Utils.equalClass(step, ExpandFusionStep.class)
|| Utils.equalClass(step, EdgeVertexStep.class)
|| Utils.equalClass(step, EdgeOtherVertexStep.class)
|| Utils.equalClass(step, PathExpandStep.class)
|| Utils.equalClass(step, IdentityStep.class)
|| Utils.equalClass(step, UnfoldStep.class)) {
parserType = GremlinResultParserFactory.GRAPH_ELEMENT;
} else if (Utils.equalClass(step, CountGlobalStep.class)
|| Utils.equalClass(step, SumGlobalStep.class)
|| Utils.equalClass(step, MinGlobalStep.class)
|| Utils.equalClass(step, MaxGlobalStep.class)
|| Utils.equalClass(step, MeanGlobalStep.class)
|| Utils.equalClass(step, FoldStep.class)) {
parserType = GremlinResultParserFactory.SINGLE_VALUE;
} else if (Utils.equalClass(step, SelectOneStep.class)
|| Utils.equalClass(step, SelectStep.class)
|| Utils.equalClass(step, PropertiesStep.class)
|| Utils.equalClass(step, PropertyMapStep.class)
|| Utils.equalClass(step, ElementMapStep.class)
|| Utils.equalClass(step, TraversalMapStep.class)
|| Utils.equalClass(step, MatchStep.class)
|| Utils.equalClass(step, ExprStep.class)
|| Utils.equalClass(step, IdStep.class)
|| Utils.equalClass(step, LabelStep.class)
|| Utils.equalClass(step, ConstantStep.class)) {
parserType = ProjectResultParser.create(step);
} else if (Utils.equalClass(step, GroupCountStep.class)
|| Utils.equalClass(step, GroupStep.class)) {
parserType = GroupResultParser.create(step);
} else if (Utils.equalClass(step, UnionStep.class)) {
parserType = UnionResultParser.create(step);
} else if (Utils.equalClass(step, SubgraphStep.class)) {
parserType = GremlinResultParserFactory.SUBGRAPH;
} else if (isSameInAndOutputType(step)) {
// do nothing;
} else {
throw new UnsupportedStepException(step.getClass(), "unimplemented yet");
}
}
return parserType;
}