001    package org.mesopotamia;
002    
003    import java.util.HashMap;
004    import java.util.Map;
005    
006    import biz.hammurapi.util.VisitableBase;
007    
008    /**
009     * Contains only data and no references to other objects.
010     * @author Pavel Vlasov
011     *
012     */
013    public class NodeData extends VisitableBase implements Cloneable {
014            
015    //      private StackTraceElement[] sf = new Exception().getStackTrace(); // For testing
016    
017            private int column;
018            private int line;
019            private String text;
020            private int type;
021            private int leftColumn;
022            private int id;
023            private Integer firstToken;
024            private Integer lastToken;
025            private Integer token;
026            private int sourceUnitId;
027            private int position;
028            private int sameTypeIndex;
029            
030            private Map references = new HashMap();
031            
032            public NodeData() {
033                    // default constructor
034            }
035            
036            @Override
037            public Object clone() throws CloneNotSupportedException {
038                    NodeData ret = (NodeData) super.clone();
039                    ret.setColumn(getColumn());
040                    ret.setLine(getLine());
041                    ret.setText(getText());
042                    ret.setType(getType());
043                    ret.setLeftColumn(getLeftColumn());
044                    ret.setId(getId());
045                    ret.setFirstToken(getFirstToken());
046                    ret.setLastToken(getLastToken());
047                    ret.setToken(getToken());
048                    ret.setSourceUnitId(getSourceUnitId());
049                    ret.setPosition(getPosition());
050                    ret.setSameTypeIndex(getSameTypeIndex());
051                    
052                    return ret;
053            }
054            
055    
056            public int getSourceUnitId() {
057                    return sourceUnitId;
058            }
059    
060            public void setSourceUnitId(int sourceUnitId) {
061                    this.sourceUnitId = sourceUnitId;
062            }
063    
064            public int getColumn() {
065                    return column;
066            }
067    
068            public void setColumn(int column) {
069                    this.column = column;
070            }
071    
072            public Integer getFirstToken() {
073                    return firstToken;
074            }
075    
076            public void setFirstToken(Integer firstToken) {
077                    this.firstToken = firstToken;
078            }
079    
080            public int getId() {
081                    return id;
082            }
083    
084            public void setId(int id) {
085                    this.id = id;
086            }
087    
088            public Integer getLastToken() {
089                    return lastToken;
090            }
091    
092            public void setLastToken(Integer lastToken) {
093                    this.lastToken = lastToken;
094            }
095    
096            public int getLeftColumn() {
097                    return leftColumn;
098            }
099    
100            public void setLeftColumn(int leftColumn) {
101                    this.leftColumn = leftColumn;
102            }
103    
104            public int getLine() {
105                    return line;
106            }
107    
108            public void setLine(int line) {
109                    this.line = line;
110            }
111    
112            public String getText() {
113                    return text;
114            }
115    
116            public void setText(String text) {
117                    this.text = text;
118            }
119    
120            public Integer getToken() {
121                    return token;
122            }
123    
124            public void setToken(Integer token) {
125                    this.token = token;
126            }
127    
128            public int getType() {
129                    return type;
130            }
131    
132            public void setType(int type) {
133                    this.type = type;
134            }
135            
136            public int getPosition() {
137                    return position;
138            }
139            
140            public void setPosition(int position) {
141                    this.position = position;
142            }
143    
144            public void setSameTypeIndex(int sameTypeIndex) {
145                    this.sameTypeIndex = sameTypeIndex;
146            }
147            
148            public int getSameTypeIndex() {
149                    return sameTypeIndex;
150            }
151            
152            public String toString() {
153                    return "["+getClass().getName()+"] "+sourceUnitId+"/"+id+" "+line+":"+column;
154            }
155            
156            /**
157             * Map of reference name to reference value, e.g. type -> 132.
158             * @return
159             */
160            public Map getReferences() {
161                    return references;
162            }
163    }