1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  package com.puppycrawl.tools.checkstyle.checks.javadoc;
21  
22  import org.antlr.v4.runtime.Token;
23  
24  import com.puppycrawl.tools.checkstyle.api.DetailNode;
25  
26  
27  
28  
29  
30  
31  
32  
33  public class JavadocNodeImpl implements DetailNode {
34  
35      
36  
37  
38      private int type;
39  
40      
41  
42  
43      private String text;
44  
45      
46  
47  
48      private int lineNumber;
49  
50      
51  
52  
53      private int columnNumber;
54  
55      
56  
57  
58      private JavadocNodeImpl parent;
59  
60      
61  
62  
63      private JavadocNodeImpl nextSibling;
64  
65      
66  
67  
68      private JavadocNodeImpl previousSibling;
69  
70      
71  
72  
73      private JavadocNodeImpl firstChild;
74  
75      
76  
77  
78  
79  
80      public void initialize(Token token) {
81          type = token.getType();
82          text = token.getText();
83          lineNumber = token.getLine() - 1;
84          columnNumber = token.getCharPositionInLine();
85      }
86  
87      @Override
88      public int getType() {
89          return type;
90      }
91  
92      @Override
93      public String getText() {
94          return text;
95      }
96  
97      @Override
98      public int getLineNumber() {
99          final JavadocNodeImpl node = firstChild;
100         if (node != null) {
101             lineNumber = node.getLineNumber();
102         }
103         return lineNumber;
104     }
105 
106     @Override
107     public int getColumnNumber() {
108         final JavadocNodeImpl node = firstChild;
109         if (node != null) {
110             columnNumber = node.getColumnNumber();
111         }
112         return columnNumber;
113     }
114 
115     @Override
116     public DetailNode getParent() {
117         return parent;
118     }
119 
120     @Override
121     public DetailNode getNextSibling() {
122         return nextSibling;
123     }
124 
125     @Override
126     public DetailNode getPreviousSibling() {
127         return previousSibling;
128     }
129 
130     @Override
131     public JavadocNodeImpl getFirstChild() {
132         return firstChild;
133     }
134 
135     
136 
137 
138 
139 
140     public void setType(int type) {
141         this.type = type;
142     }
143 
144     
145 
146 
147 
148 
149     public void setText(String text) {
150         this.text = text;
151     }
152 
153     
154 
155 
156 
157 
158     public void setLineNumber(int lineNumber) {
159         this.lineNumber = lineNumber;
160     }
161 
162     
163 
164 
165 
166 
167     public void setColumnNumber(int columnNumber) {
168         this.columnNumber = columnNumber;
169     }
170 
171     
172 
173 
174 
175 
176     public void setParent(DetailNode node) {
177         JavadocNodeImpl instance = this;
178         final JavadocNodeImpl newParent = (JavadocNodeImpl) node;
179         do {
180             instance.parent = newParent;
181             instance = instance.nextSibling;
182         } while (instance != null);
183     }
184 
185     
186 
187 
188 
189 
190     public void setNextSibling(DetailNode nextSibling) {
191         this.nextSibling = (JavadocNodeImpl) nextSibling;
192         ((JavadocNodeImpl) nextSibling).setParent(parent);
193         ((JavadocNodeImpl) nextSibling).previousSibling = this;
194     }
195 
196     
197 
198 
199 
200 
201     public void addChild(DetailNode newChild) {
202         final JavadocNodeImpl astImpl = (JavadocNodeImpl) newChild;
203         astImpl.setParent(this);
204 
205         DetailNode temp = firstChild;
206         if (temp == null) {
207             firstChild = (JavadocNodeImpl) newChild;
208         }
209         else {
210             while (temp.getNextSibling() != null) {
211                 temp = temp.getNextSibling();
212             }
213 
214             ((JavadocNodeImpl) temp).setNextSibling(newChild);
215         }
216     }
217 
218     @Override
219     public String toString() {
220         return text + "[" + getLineNumber() + "x" + getColumnNumber() + "]";
221     }
222 
223 }