001package gudusoft.gsqlparser.nodes.mdx; 002/* 003 * Date: 12-1-31 004 */ 005 006import gudusoft.gsqlparser.nodes.TPTNodeList; 007import gudusoft.gsqlparser.nodes.TParseTreeNode; 008import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 009 010/** 011 * Mdx identifier consists of a list of segment name {@link #getSegments()} 012 */ 013public class TMdxIdentifierNode extends TMdxExpNode { 014 015 public EMdxDataType getMdxDataType(){ 016 return EMdxDataType.Member; 017 } 018 019 private final TPTNodeList<IMdxIdentifierSegment> segments = new TPTNodeList<IMdxIdentifierSegment>(); 020 021 /** 022 * Same as {@link #getSegmentList() } 023 * @return list of constituent segments 024 */ 025 public TPTNodeList<IMdxIdentifierSegment> getSegments() { 026 return segments; 027 } 028 029 public void init(Object segment) { 030 segments.addElement((IMdxIdentifierSegment)segment); 031 setStartToken(segments.getStartToken()); 032 setEndToken(segments.getEndToken()); 033 } 034 035 /** 036 * Returns the list of segments which constitute this identifier. 037 * 038 * @return list of constituent segments 039 */ 040 public TPTNodeList <IMdxIdentifierSegment> getSegmentList() { 041 return segments; 042 } 043 044 /** 045 * Returns a new Identifier consisting of this one with another segment 046 * appended. Does not modify this Identifier. 047 * 048 * @param segment Name of segment 049 */ 050 public void add(IMdxIdentifierSegment segment) { 051 segments.addElement(segment); 052 } 053 054 public void insertAt(IMdxIdentifierSegment segment, int index){ 055 segments.insertElementAt(segment,index); 056 } 057 058 public void accept(TParseTreeVisitor v){ 059 v.preVisit(this); 060 v.postVisit(this); 061 } 062 063 public void acceptChildren(TParseTreeVisitor v){ 064 v.preVisit(this); 065 v.postVisit(this); 066 } 067 068}