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 }