1
2
3 package net.sourceforge.pmd.lang.java.ast;
4
5 public class ASTFieldDeclaration extends AbstractJavaAccessTypeNode implements Dimensionable {
6
7 public ASTFieldDeclaration(int id) {
8 super(id);
9 }
10
11 public ASTFieldDeclaration(JavaParser p, int id) {
12 super(p, id);
13 }
14
15
16
17
18 @Override
19 public Object jjtAccept(JavaParserVisitor visitor, Object data) {
20 return visitor.visit(this, data);
21 }
22
23 public boolean isSyntacticallyPublic() {
24 return super.isPublic();
25 }
26
27 @Override
28 public boolean isPublic() {
29 if (isInterfaceMember()) {
30 return true;
31 }
32 return super.isPublic();
33 }
34
35 public boolean isSyntacticallyStatic() {
36 return super.isStatic();
37 }
38
39 @Override
40 public boolean isStatic() {
41 if (isInterfaceMember()) {
42 return true;
43 }
44 return super.isStatic();
45 }
46
47 public boolean isSyntacticallyFinal() {
48 return super.isFinal();
49 }
50
51 @Override
52 public boolean isFinal() {
53 if (isInterfaceMember()) {
54 return true;
55 }
56 return super.isFinal();
57 }
58
59 @Override
60 public boolean isPrivate() {
61 if (isInterfaceMember()) {
62 return false;
63 }
64 return super.isPrivate();
65 }
66
67 @Override
68 public boolean isPackagePrivate() {
69 if (isInterfaceMember()) {
70 return false;
71 }
72 return super.isPackagePrivate();
73 }
74
75 @Override
76 public boolean isProtected() {
77 if (isInterfaceMember()) {
78 return false;
79 }
80 return super.isProtected();
81 }
82
83 public boolean isInterfaceMember() {
84 if (jjtGetParent().jjtGetParent() instanceof ASTEnumBody) {
85 return false;
86 }
87 ASTClassOrInterfaceDeclaration n = getFirstParentOfType(ASTClassOrInterfaceDeclaration.class);
88 return n != null && n.isInterface();
89 }
90
91 public boolean isArray() {
92 return checkType() + checkDecl() > 0;
93 }
94
95 public int getArrayDepth() {
96 if (!isArray()) {
97 return 0;
98 }
99 return checkType() + checkDecl();
100 }
101
102 private int checkType() {
103 if (jjtGetNumChildren() == 0 || !(jjtGetChild(0) instanceof ASTType)) {
104 return 0;
105 }
106 return ((ASTType) jjtGetChild(0)).getArrayDepth();
107 }
108
109 private int checkDecl() {
110 if (jjtGetNumChildren() < 2 || !(jjtGetChild(1) instanceof ASTVariableDeclarator)) {
111 return 0;
112 }
113 return ((ASTVariableDeclaratorId) jjtGetChild(1).jjtGetChild(0)).getArrayDepth();
114 }
115
116
117
118
119
120
121
122 public String getVariableName() {
123 ASTVariableDeclaratorId decl = getFirstDescendantOfType(ASTVariableDeclaratorId.class);
124 if (decl != null) {
125 return decl.getImage();
126 }
127 return null;
128 }
129 }