001package gudusoft.gsqlparser.dlineage.dataflow.model;
002
003/**
004 * Represents a single upstream source reference for a pipelined function output column.
005 */
006public class PipelinedSourceRef {
007    private String parentName;
008    private String columnName;
009    private SourceKind sourceKind;
010    private EffectType effectType;
011    private String clauseType;
012
013    public enum SourceKind {
014        BASE_TABLE, CTE, SUBQUERY, CONST, UNRESOLVED
015    }
016
017    public PipelinedSourceRef(String parentName, String columnName, SourceKind sourceKind) {
018        this.parentName = parentName;
019        this.columnName = columnName;
020        this.sourceKind = sourceKind;
021        this.effectType = EffectType.select;
022        this.clauseType = "PIPE_ROW";
023    }
024
025    public String getParentName() {
026        return parentName;
027    }
028
029    public void setParentName(String parentName) {
030        this.parentName = parentName;
031    }
032
033    public String getColumnName() {
034        return columnName;
035    }
036
037    public void setColumnName(String columnName) {
038        this.columnName = columnName;
039    }
040
041    public SourceKind getSourceKind() {
042        return sourceKind;
043    }
044
045    public void setSourceKind(SourceKind sourceKind) {
046        this.sourceKind = sourceKind;
047    }
048
049    public EffectType getEffectType() {
050        return effectType;
051    }
052
053    public void setEffectType(EffectType effectType) {
054        this.effectType = effectType;
055    }
056
057    public String getClauseType() {
058        return clauseType;
059    }
060
061    public void setClauseType(String clauseType) {
062        this.clauseType = clauseType;
063    }
064
065    @Override
066    public String toString() {
067        return parentName + "." + columnName + " (" + sourceKind + ")";
068    }
069}