public static GremlinResultParser analyze()

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;
    }