recognize java comments
[javainspect.git] / src / main / java / eu / svjatoslav / inspector / java / methods / Clazz.java
1 package eu.svjatoslav.inspector.java.methods;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import eu.svjatoslav.inspector.tokenizer.InvalidSyntaxException;
7 import eu.svjatoslav.inspector.tokenizer.Tokenizer;
8 import eu.svjatoslav.inspector.tokenizer.TokenizerMatch;
9
10 public class Clazz {
11
12         private final String packageName;
13         private final String className;
14         private final boolean isInterface;
15
16         public ClassReference superClass;
17         public List<ClassReference> implementedInterfaces = new ArrayList<ClassReference>();
18
19         public Clazz(final String packageName, final String className,
20                         final Tokenizer tokenizer, final boolean isInterface)
21                         throws InvalidSyntaxException {
22
23                 this.packageName = packageName;
24                 this.className = className;
25                 this.isInterface = isInterface;
26
27                 while (true) {
28                         final TokenizerMatch match = tokenizer.getNextToken();
29
30                         if ("extends".equals(match.token)) {
31                                 superClass = new ClassReference(tokenizer);
32                                 continue;
33                         }
34
35                         if ("implements".equals(match.token)) {
36                                 while (true) {
37                                         implementedInterfaces.add(new ClassReference(tokenizer));
38
39                                         if (tokenizer.probeNextToken(","))
40                                                 continue;
41
42                                         break;
43                                 }
44                                 continue;
45                         }
46
47                         if ("{".equals(match.token)) {
48                                 parseClassBody(tokenizer);
49                                 break;
50                         }
51
52                 }
53         }
54
55         public void parseClassBody(final Tokenizer tokenizer) {
56                 tokenizer.skipUntilDataEnd();
57         }
58
59         @Override
60         public String toString() {
61                 final EnumerationBuffer result = new EnumerationBuffer();
62
63                 result.append(packageName + " -> " + className + " ");
64
65                 if (isInterface)
66                         result.append("(interface)");
67                 else
68                         result.append("(class)");
69                 result.append("\n");
70
71                 if (superClass != null)
72                         result.append("    super: " + superClass.toString() + "\n");
73
74                 if (implementedInterfaces.size() > 0) {
75                         result.append("    implements: ");
76                         for (final ClassReference classReference : implementedInterfaces)
77                                 result.appendEnumeration(classReference.toString());
78                         result.append("\n");
79                 }
80
81                 return result.toString();
82         }
83
84 }