+/*
+ * JavaInspect - Utility to visualize java software
+ * Copyright (C) 2013-2014, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 3 of the GNU Lesser General Public License
+ * or later as published by the Free Software Foundation.
+ */
+
package eu.svjatoslav.inspector.java.methods;
import java.io.BufferedReader;
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;
+import eu.svjatoslav.commons.string.tokenizer.InvalidSyntaxException;
+import eu.svjatoslav.commons.string.tokenizer.Tokenizer;
+import eu.svjatoslav.commons.string.tokenizer.TokenizerMatch;
public class JavaFile {
StringBuffer contents = new StringBuffer();
+ public List<Clazz> classes = new ArrayList<Clazz>();
+
public JavaFile(final File file) throws IOException, InvalidSyntaxException {
this.file = file;
parse();
readFile();
final Tokenizer tokenizer = new Tokenizer(contents.toString());
+
+ // empty space
tokenizer.addTerminator(" ", true);
tokenizer.addTerminator("\t", true);
tokenizer.addTerminator("\n", true);
tokenizer.addTerminator("<", false);
tokenizer.addTerminator(">", false);
tokenizer.addTerminator(",", false);
+ tokenizer.addTerminator("@", false);
+
+ // comments
+ tokenizer.addTerminator("//", "\n", true);
+ tokenizer.addTerminator("/*", "*/", true);
final Modifiers modifiers = new Modifiers();
while (true) {
- final TokenizerMatch match = tokenizer.getToken();
+ final TokenizerMatch match = tokenizer.getNextToken();
if (match == null)
break;
continue;
}
+ if ("interface".equals(match.token)) {
+ parseInterface(tokenizer);
+ continue;
+ }
+
+ if ("@".equals(match.token)) {
+ final Annotation annotation = new Annotation(tokenizer);
+ continue;
+ }
+
System.out.println(" " + modifiers.toString() + " "
+ match.token);
modifiers.reset();
private void parseClass(final Tokenizer tokenizer)
throws InvalidSyntaxException {
- final TokenizerMatch match = tokenizer.getToken();
- final Clazz clazz = new Clazz(packageName, match.token, tokenizer);
- System.out.println(clazz.toString());
+ final TokenizerMatch match = tokenizer.getNextToken();
+ final Clazz clazz = new Clazz(packageName, match.token, tokenizer,
+ false);
+ // System.out.println(clazz.toString());
+ classes.add(clazz);
}
final Import imp = new Import();
- final TokenizerMatch match = tokenizer.getToken();
+ final TokenizerMatch match = tokenizer.getNextToken();
if (match.token.equals("static")) {
imp.isStatic = true;
- imp.path = tokenizer.getToken().token;
+ imp.path = tokenizer.getNextToken().token;
} else
imp.path = match.token;
imports.add(imp);
- tokenizer.expectToken(";");
+ tokenizer.expectNextToken(";");
+ }
+
+ private void parseInterface(final Tokenizer tokenizer)
+ throws InvalidSyntaxException {
+
+ final TokenizerMatch match = tokenizer.getNextToken();
+ final Clazz clazz = new Clazz(packageName, match.token, tokenizer, true);
+ // System.out.println(clazz.toString());
+ classes.add(clazz);
}
private void parsePackage(final Tokenizer tokenizer)
throws InvalidSyntaxException {
- final TokenizerMatch match = tokenizer.getToken();
+ final TokenizerMatch match = tokenizer.getNextToken();
packageName = match.token;
- tokenizer.expectToken(";");
+ tokenizer.expectNextToken(";");
}
private void readFile() throws FileNotFoundException, IOException {
public void skipUntilSemicolon(final Tokenizer tokenizer) {
while (true) {
- final TokenizerMatch token = tokenizer.getToken();
+ final TokenizerMatch token = tokenizer.getNextToken();
+
+ if (token == null)
+ return;
+
if (token.token.equals(";"))
return;
}