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 public JavadocNodeImpl() {
79
80 }
81
82
83
84
85
86
87 public void initialize(Token token) {
88 type = token.getType();
89 text = token.getText();
90 lineNumber = token.getLine() - 1;
91 columnNumber = token.getCharPositionInLine();
92 }
93
94 @Override
95 public int getType() {
96 return type;
97 }
98
99 @Override
100 public String getText() {
101 return text;
102 }
103
104 @Override
105 public int getLineNumber() {
106 final JavadocNodeImpl node = firstChild;
107 if (node != null) {
108 lineNumber = node.getLineNumber();
109 }
110 return lineNumber;
111 }
112
113 @Override
114 public int getColumnNumber() {
115 final JavadocNodeImpl node = firstChild;
116 if (node != null) {
117 columnNumber = node.getColumnNumber();
118 }
119 return columnNumber;
120 }
121
122 @Override
123 public DetailNode getParent() {
124 return parent;
125 }
126
127 @Override
128 public DetailNode getNextSibling() {
129 return nextSibling;
130 }
131
132 @Override
133 public DetailNode getPreviousSibling() {
134 return previousSibling;
135 }
136
137 @Override
138 public JavadocNodeImpl getFirstChild() {
139 return firstChild;
140 }
141
142
143
144
145
146
147 public void setType(int type) {
148 this.type = type;
149 }
150
151
152
153
154
155
156 public void setText(String text) {
157 this.text = text;
158 }
159
160
161
162
163
164
165 public void setLineNumber(int lineNumber) {
166 this.lineNumber = lineNumber;
167 }
168
169
170
171
172
173
174 public void setColumnNumber(int columnNumber) {
175 this.columnNumber = columnNumber;
176 }
177
178
179
180
181
182
183 public void setParent(DetailNode node) {
184 JavadocNodeImpl instance = this;
185 final JavadocNodeImpl newParent = (JavadocNodeImpl) node;
186 do {
187 instance.parent = newParent;
188 instance = instance.nextSibling;
189 } while (instance != null);
190 }
191
192
193
194
195
196
197 public void setNextSibling(DetailNode nextSibling) {
198 this.nextSibling = (JavadocNodeImpl) nextSibling;
199 ((JavadocNodeImpl) nextSibling).setParent(parent);
200 ((JavadocNodeImpl) nextSibling).previousSibling = this;
201 }
202
203
204
205
206
207
208 public void addChild(DetailNode newChild) {
209 final JavadocNodeImpl astImpl = (JavadocNodeImpl) newChild;
210 astImpl.setParent(this);
211
212 DetailNode temp = firstChild;
213 if (temp == null) {
214 firstChild = (JavadocNodeImpl) newChild;
215 }
216 else {
217 while (temp.getNextSibling() != null) {
218 temp = temp.getNextSibling();
219 }
220
221 ((JavadocNodeImpl) temp).setNextSibling(newChild);
222 }
223 }
224
225 @Override
226 public String toString() {
227 return text + "[" + getLineNumber() + "x" + getColumnNumber() + "]";
228 }
229
230 }