X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Finspector%2Fjava%2Fmethods%2FJavaFile.java;h=70d5dc2f30b267817b69fe6948838e3a145f6188;hb=b2f519fd934cd49afbb5cfc88b3d2be396af0afa;hp=df53ee89301cd331c3691a3e5c7a4cae5a1bee0a;hpb=93d3fd571ed634437334b78bec8fd725f4c90701;p=javainspect.git diff --git a/src/main/java/eu/svjatoslav/inspector/java/methods/JavaFile.java b/src/main/java/eu/svjatoslav/inspector/java/methods/JavaFile.java index df53ee8..70d5dc2 100755 --- a/src/main/java/eu/svjatoslav/inspector/java/methods/JavaFile.java +++ b/src/main/java/eu/svjatoslav/inspector/java/methods/JavaFile.java @@ -1,7 +1,7 @@ /* * JavaInspect - Utility to visualize java software - * Copyright (C) 2013-2017, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu - * + * Copyright (C) 2013-2020, 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. @@ -13,17 +13,22 @@ import eu.svjatoslav.commons.string.tokenizer.InvalidSyntaxException; import eu.svjatoslav.commons.string.tokenizer.Tokenizer; import eu.svjatoslav.commons.string.tokenizer.TokenizerMatch; -import java.io.*; +import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; +import static eu.svjatoslav.commons.file.IOHelper.getFileContentsAsString; +import static eu.svjatoslav.commons.string.tokenizer.Terminator.TerminationStrategy.DROP; +import static eu.svjatoslav.commons.string.tokenizer.Terminator.TerminationStrategy.PRESERVE; + public class JavaFile { public static final String UTF_8 = "UTF-8"; - private final List imports = new ArrayList(); + public final List classes = new ArrayList<>(); + String contents; + private final List imports = new ArrayList<>(); private final File file; - public List classes = new ArrayList(); - StringBuffer contents = new StringBuffer(); private String packageName; public JavaFile(final File file) throws IOException, InvalidSyntaxException { @@ -34,30 +39,30 @@ public class JavaFile { public void parse() throws IOException, InvalidSyntaxException { System.out.println("java file: " + file); - readFile(); + contents = getFileContentsAsString(file); - final Tokenizer tokenizer = new Tokenizer(contents.toString()); + final Tokenizer tokenizer = new Tokenizer(contents); // 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); - tokenizer.addTerminator(")", false); - tokenizer.addTerminator("[", false); - tokenizer.addTerminator("]", false); - tokenizer.addTerminator("<", false); - tokenizer.addTerminator(">", false); - tokenizer.addTerminator(",", false); - tokenizer.addTerminator("@", false); + tokenizer.addTerminator(" ", DROP); + tokenizer.addTerminator("\t", DROP); + tokenizer.addTerminator("\n", DROP); + + tokenizer.addTerminator(";", PRESERVE); + tokenizer.addTerminator("{", PRESERVE); + tokenizer.addTerminator("}", PRESERVE); + tokenizer.addTerminator("(", PRESERVE); + tokenizer.addTerminator(")", PRESERVE); + tokenizer.addTerminator("[", PRESERVE); + tokenizer.addTerminator("]", PRESERVE); + tokenizer.addTerminator("<", PRESERVE); + tokenizer.addTerminator(">", PRESERVE); + tokenizer.addTerminator(",", PRESERVE); + tokenizer.addTerminator("@", PRESERVE); // comments - tokenizer.addTerminator("//", "\n", true); - tokenizer.addTerminator("/*", "*/", true); + tokenizer.addTerminator("//", "\n", DROP); + tokenizer.addTerminator("/*", "*/", DROP); final Modifiers modifiers = new Modifiers(); @@ -129,7 +134,7 @@ public class JavaFile { imports.add(imp); - tokenizer.expectNextToken(";"); + tokenizer.expectAndConsumeNextToken(";"); } private void parseInterface(final Tokenizer tokenizer) @@ -148,29 +153,10 @@ public class JavaFile { packageName = match.token; - tokenizer.expectNextToken(";"); - } - - private void readFile() throws IOException { - InputStreamReader inputStream = new InputStreamReader(new FileInputStream(file), UTF_8); - - final BufferedReader bufferedReader = new BufferedReader(inputStream); - - while (true) { - final String line = bufferedReader.readLine(); - - if (line == null) - break; - - contents.append(line); - contents.append("\n"); - } - - bufferedReader.close(); - inputStream.close(); + tokenizer.expectAndConsumeNextToken(";"); } - public void skipUntilSemicolon(final Tokenizer tokenizer) { + public void skipUntilSemicolon(final Tokenizer tokenizer) throws InvalidSyntaxException { while (true) { final TokenizerMatch token = tokenizer.getNextToken();