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}