001package gudusoft.gsqlparser.dlineage;
002
003import gudusoft.gsqlparser.dlineage.dataflow.listener.DataFlowHandleListener;
004import gudusoft.gsqlparser.dlineage.dataflow.model.AuthoritativeLineageEvidence;
005import gudusoft.gsqlparser.dlineage.dataflow.model.DbObjectPosition;
006import gudusoft.gsqlparser.dlineage.dataflow.model.ErrorInfo;
007import gudusoft.gsqlparser.dlineage.dataflow.model.Option;
008import gudusoft.gsqlparser.dlineage.dataflow.model.SqlInfo;
009import gudusoft.gsqlparser.dlineage.dataflow.model.json.Coordinate;
010import gudusoft.gsqlparser.dlineage.dataflow.model.xml.dataflow;
011import gudusoft.gsqlparser.sqlenv.TSQLEnv;
012
013import java.util.List;
014import java.util.Map;
015
016public interface IDataFlowAnalyzer {
017    boolean isIgnoreRecordSet();
018
019    void setIgnoreRecordSet(boolean ignoreRecordSet);
020
021    boolean isSimpleShowTopSelectResultSet();
022
023    void setSimpleShowTopSelectResultSet(boolean simpleShowTopSelectResultSet);
024
025    boolean isSimpleShowFunction();
026
027    void setSimpleShowFunction(boolean simpleShowFunction);
028
029    boolean isShowJoin();
030
031    void setShowJoin(boolean showJoin);
032
033    boolean isShowImplicitSchema();
034
035    void setShowImplicitSchema(boolean showImplicitSchema);
036
037    boolean isShowConstantTable();
038
039    void setShowConstantTable(boolean showConstantTable);
040
041    boolean isShowCountTableColumn();
042
043    void setShowCountTableColumn(boolean showCountTableColumn);
044
045    boolean isTransform();
046
047    void setTransform(boolean transform);
048
049    boolean isTransformCoordinate();
050
051    void setTransformCoordinate(boolean transformCoordinate);
052
053    boolean isLinkOrphanColumnToFirstTable();
054
055    void setLinkOrphanColumnToFirstTable(boolean linkOrphanColumnToFirstTable);
056
057    boolean isIgnoreCoordinate();
058
059    void setIgnoreCoordinate(boolean ignoreCoordinate);
060
061    void setHandleListener(DataFlowHandleListener listener);
062
063    void setSqlEnv(TSQLEnv sqlenv);
064
065    void setOption(Option option);
066
067    Option getOption();
068
069    List<ErrorInfo> getErrorMessages();
070
071    String generateSqlInfos();
072
073    String generateDataFlow();
074
075    Map<String, List<SqlInfo>> getSqlInfos();
076
077    /**
078     * @deprecated please use SqlInfoHelper.getSelectedDbObjectInfo
079     */
080    DbObjectPosition getSelectedDbObjectInfo(Coordinate start, Coordinate end);
081
082    String generateDataFlow(boolean withExtraInfo);
083
084    void dispose();
085
086    dataflow getDataFlow();
087
088    /**
089     * Semantic evidence retained outside the legacy serialized contract.
090     * Analyzer variants that cannot preserve document-local ID correlation
091     * (notably today's parallel merge path) return an empty bundle.
092     */
093    default AuthoritativeLineageEvidence getAuthoritativeLineageEvidence() {
094        return AuthoritativeLineageEvidence.empty();
095    }
096
097    Map<String, String> getHashSQLMap();
098}