001package gudusoft.gsqlparser.nodes;
002
003
004import java.util.ArrayList;
005
006/**
007 * Postgresql;
008 * <p> used in subscript:
009 * <p> '[' expr ']'
010 * <p> '[' expr ':' expr ']'
011 * <p>
012 *
013 */
014
015public class TIndices extends TParseTreeNode {
016    private TExpression lowerSubscript;
017    private TExpression upperSubscript;
018
019    private TObjectName attributeName;
020
021    /**
022     * If this attribute name was set, then this is a fake Indices
023     * @return object name
024     */
025    public TObjectName getAttributeName() {
026        return attributeName;
027    }
028
029    public TExpression getLowerSubscript() {
030        return lowerSubscript;
031    }
032
033    public TExpression getUpperSubscript() {
034        return upperSubscript;
035    }
036
037    public  boolean isRealIndices(){
038        return (this.attributeName == null);
039    }
040
041    public  void init(Object arg1, Object arg2, Object arg3){
042        this.attributeName = (TObjectName)arg1;
043        this.lowerSubscript = (TExpression)arg2;
044        this.upperSubscript = (TExpression)arg3;
045    }
046
047    public void setLowerSubscript(TExpression lowerSubscript) {
048        this.lowerSubscript = lowerSubscript;
049    }
050
051    public void setUpperSubscript(TExpression upperSubscript) {
052        this.upperSubscript = upperSubscript;
053    }
054
055    public void setAttributeName(TObjectName attributeName) {
056        this.attributeName = attributeName;
057    }
058
059    public TExpressionList getSubscriptList() {
060        return subscriptList;
061    }
062
063    private TExpressionList subscriptList;
064
065
066    public void addSubscript(TExpression expr){
067        if (lowerSubscript == null){
068            lowerSubscript = expr;
069        }else{
070            if (subscriptList == null){
071                subscriptList = new TExpressionList();
072            }
073            subscriptList.addExpression(expr);
074        }
075    }
076
077    public static void addSubscript(ArrayList<TIndices> indicesArrayList,TExpression expr){
078        indicesArrayList.get(indicesArrayList.size()-1).addSubscript(expr);
079    }
080}