X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=util-testing%2Fclub%2Fwpia%2Fgigi%2Flocalisation%2FTranslationCollector.java;fp=util-testing%2Fclub%2Fwpia%2Fgigi%2Flocalisation%2FTranslationCollector.java;h=239c32fb7ce9a5a42330882b11ed288f677a091b;hp=44df294e771d526ddbc89a80d91f09595e877ae8;hb=b2028692f1f0a3fa3d78f0dc8b81d7fdc14f6865;hpb=8543d1c7ae576fdbf13c6926be26cf323f3f75ea diff --git a/util-testing/club/wpia/gigi/localisation/TranslationCollector.java b/util-testing/club/wpia/gigi/localisation/TranslationCollector.java index 44df294e..239c32fb 100644 --- a/util-testing/club/wpia/gigi/localisation/TranslationCollector.java +++ b/util-testing/club/wpia/gigi/localisation/TranslationCollector.java @@ -13,11 +13,11 @@ import java.util.Collection; import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.Properties; import java.util.TreeSet; -import club.wpia.gigi.output.template.Template; - import org.eclipse.jdt.core.compiler.CategorizedProblem; +import org.eclipse.jdt.internal.compiler.ASTVisitor; import org.eclipse.jdt.internal.compiler.CompilationResult; import org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration; import org.eclipse.jdt.internal.compiler.ast.TypeDeclaration; @@ -36,6 +36,9 @@ import org.eclipse.jdt.internal.compiler.lookup.PackageBinding; import org.eclipse.jdt.internal.compiler.parser.Parser; import org.eclipse.jdt.internal.compiler.problem.ProblemReporter; +import club.wpia.gigi.database.DatabaseConnection; +import club.wpia.gigi.output.template.Template; + public class TranslationCollector { static class TranslationEntry implements Comparable { @@ -82,6 +85,8 @@ public class TranslationCollector { private boolean hadErrors = false; + private int statements = 0; + public TranslationCollector(File base, File conf) { this.base = base; taint = new LinkedList<>(); @@ -90,15 +95,37 @@ public class TranslationCollector { } } + interface ASTVisitorFactory { + + public ASTVisitor createVisitor(CompilationUnitDeclaration parsedUnit); + } + public void run(File out) throws IOException { scanTemplates(); - scanCode(taint); + scanCode(new ASTVisitorFactory() { + + @Override + public ASTVisitor createVisitor(CompilationUnitDeclaration parsedUnit) { + return new TranslationCollectingVisitor(parsedUnit, taint.toArray(new TaintSource[taint.size()]), TranslationCollector.this); + } + }); System.err.println("Total Translatable Strings: " + translations.size()); TreeSet trs = new TreeSet<>(translations.values()); writePOFile(out, trs); } + public void runSQLValidation() throws IOException { + scanCode(new ASTVisitorFactory() { + + @Override + public ASTVisitor createVisitor(CompilationUnitDeclaration parsedUnit) { + return new SQLTestingVisitor(parsedUnit, TranslationCollector.this); + } + }); + System.out.println("Validated: " + statements + " SQL statements."); + } + public void add(String text, String line) { if (text.contains("\r") || text.contains("\n")) { throw new Error("Malformed translation in " + line); @@ -111,7 +138,7 @@ public class TranslationCollector { i.add(line); } - private void scanCode(LinkedList taint) throws Error { + private void scanCode(ASTVisitorFactory visitor) throws Error { PrintWriter out = new PrintWriter(System.err); Main m = new Main(out, out, false, null, null); File[] fs = recurse(new File(new File(new File(base, "src"), "club"), "wpia"), new LinkedList(), ".java").toArray(new File[0]); @@ -197,11 +224,10 @@ public class TranslationCollector { System.err.println("No types"); } else { - TranslationCollectingVisitor v = new TranslationCollectingVisitor(parsedUnit, taint.toArray(new TaintSource[taint.size()]), this); + ASTVisitor v = visitor.createVisitor(parsedUnit); for (TypeDeclaration td : parsedUnit.types) { td.traverse(v, td.scope); } - hadErrors |= v.hadErrors(); } parsedUnits[i] = parsedUnit; } @@ -226,8 +252,15 @@ public class TranslationCollector { private LinkedList taint; public static void main(String[] args) throws IOException { + Properties pp = new Properties(); + pp.load(new InputStreamReader(new FileInputStream("config/test.properties"), "UTF-8")); + DatabaseConnection.init(pp); TranslationCollector tc = new TranslationCollector(new File(args[1]), new File(args[0])); - tc.run(new File(args[2])); + if (args[2].equals("SQLValidation")) { + tc.runSQLValidation(); + } else { + tc.run(new File(args[2])); + } if (tc.hadErrors) { System.exit(1); } else { @@ -262,4 +295,12 @@ public class TranslationCollector { } return toAdd; } + + public void hadError() { + hadErrors = true; + } + + public void countStatement() { + statements++; + } }