001
002package gudusoft.gsqlparser.dlineage.dataflow.model;
003
004import gudusoft.gsqlparser.TSourceToken;
005import gudusoft.gsqlparser.dlineage.util.Pair3;
006import gudusoft.gsqlparser.nodes.TDeclareVariable;
007import gudusoft.gsqlparser.nodes.TObjectName;
008import gudusoft.gsqlparser.util.SQLUtil;
009
010public class VariableProperty extends TableColumn {
011
012        public VariableProperty(Table variableTable, TObjectName variableName, TDeclareVariable variable) {
013                super(variableTable, variableName);
014                TSourceToken startToken = variable.getDefaultValue().getStartToken();
015                TSourceToken endToken = variable.getDefaultValue().getEndToken();
016                this.startPosition = new Pair3<Long, Long, String>(startToken.lineNo, startToken.columnNo,
017                                ModelBindingManager.getGlobalHash());
018                String[] segments = endToken.astext.split("\n");
019                if (segments.length == 1) {
020                        this.endPosition = new Pair3<Long, Long, String>(endToken.lineNo,
021                                        endToken.columnNo + SQLUtil.endTrim(endToken.astext).length(), ModelBindingManager.getGlobalHash());
022                }
023                else{
024                        this.endPosition = new Pair3<Long, Long, String>(endToken.lineNo + segments.length - 1,
025                                        (long)segments[segments.length - 1].length() + 1, ModelBindingManager.getGlobalHash());
026                }
027        }
028
029}