java syntax parser
[javainspect.git] / src / main / java / eu / svjatoslav / inspector / java / methods / Clazz.java
diff --git a/src/main/java/eu/svjatoslav/inspector/java/methods/Clazz.java b/src/main/java/eu/svjatoslav/inspector/java/methods/Clazz.java
new file mode 100644 (file)
index 0000000..fda73d1
--- /dev/null
@@ -0,0 +1,73 @@
+package eu.svjatoslav.inspector.java.methods;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import eu.svjatoslav.inspector.tokenizer.InvalidSyntaxException;
+import eu.svjatoslav.inspector.tokenizer.Tokenizer;
+import eu.svjatoslav.inspector.tokenizer.TokenizerMatch;
+
+public class Clazz {
+
+       private final String packageName;
+       private final String className;
+
+       public ClassReference superClass;
+       public List<ClassReference> implementedInterfaces = new ArrayList<ClassReference>();
+
+       public Clazz(final String packageName, final String className,
+                       final Tokenizer tokenizer) throws InvalidSyntaxException {
+               this.packageName = packageName;
+               this.className = className;
+
+               while (true) {
+                       final TokenizerMatch match = tokenizer.getToken();
+
+                       if ("extends".equals(match.token)) {
+                               superClass = new ClassReference(tokenizer);
+                               continue;
+                       }
+
+                       if ("implements".equals(match.token)) {
+                               while (true) {
+                                       implementedInterfaces.add(new ClassReference(tokenizer));
+
+                                       if (tokenizer.isNextToken(","))
+                                               continue;
+
+                                       break;
+                               }
+                               continue;
+                       }
+
+                       if ("{".equals(match.token)) {
+                               parseClassBody(tokenizer);
+                               break;
+                       }
+
+               }
+       }
+
+       public void parseClassBody(final Tokenizer tokenizer) {
+               tokenizer.skipUtilEnd();
+       }
+
+       @Override
+       public String toString() {
+               final EnumerationBuffer result = new EnumerationBuffer();
+
+               result.append(packageName + " -> " + className + "\n");
+               if (superClass != null)
+                       result.append("    super: " + superClass.toString() + "\n");
+
+               if (implementedInterfaces.size() > 0) {
+                       result.append("    implements: ");
+                       for (final ClassReference classReference : implementedInterfaces)
+                               result.appendEnumeration(classReference.toString());
+                       result.append("\n");
+               }
+
+               return result.toString();
+       }
+
+}