From 7279a44b0e86e5c0a3ab9b19a815c4861e183d73 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Mon, 26 Mar 2018 09:01:26 +0200 Subject: [PATCH] Updated cache --- .gitignore | 7 ++-- math-rules-cache.zip | Bin 0 -> 45819 bytes src/main/java/org/warp/picalculator/Main.java | 3 ++ .../java/org/warp/picalculator/Utils.java | 1 + .../picalculator/math/rules/RulesManager.java | 38 +++++++----------- 5 files changed, 23 insertions(+), 26 deletions(-) create mode 100644 math-rules-cache.zip diff --git a/.gitignore b/.gitignore index 072fa68c..4d5d0f69 100644 --- a/.gitignore +++ b/.gitignore @@ -4,19 +4,20 @@ .mtj.tmp/ # Package Files # -*.jar +!/target/*.jar *.war +*.jar *.ear *Thumbs.db font_easter.png font_easter.rft font_fu32.rft -math-rules-cache.zip /target/ +!/target/*.jar /backups/ /Resources_and_Videos/ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* -/bin/ +/bin/ \ No newline at end of file diff --git a/math-rules-cache.zip b/math-rules-cache.zip new file mode 100644 index 0000000000000000000000000000000000000000..8fb6b49d61cfbaeb628a90f0c66f2c1ff5046587 GIT binary patch literal 45819 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 } try { + boolean compiledSomething = false; final Path rulesPath = Utils.getResource("/rules.csv"); if (!Files.exists(rulesPath)) { throw new FileNotFoundException("rules.csv not found!"); @@ -78,15 +62,17 @@ public class RulesManager { boolean useCache = false; Path tDir = Paths.get(System.getProperty("java.io.tmpdir"), "WarpPi-Calculator").resolve("rules-rt"); - Path cacheFilePath = Paths.get(Utils.getJarDirectory().toString()).resolve("math-rules-cache.zip").toAbsolutePath(); +// try { +// final Path defaultResource = Utils.getResource("/math-rules-cache.zip"); +// } + Path cacheFilePath = Utils.getResource("/math-rules-cache.zip");//Paths.get(Utils.getJarDirectory().toString()).resolve("math-rules-cache.zip").toAbsolutePath(); if (cacheFilePath.toFile().exists()) { try { if (tDir.toFile().exists()) { tDir.toFile().delete(); } Utils.unzip(cacheFilePath.toString(), tDir.getParent().toString(), ""); - useCache = !StaticVars.debugOn; - cacheFilePath.toFile().delete(); + useCache = !Utils.debugCache; } catch (Exception ex) { ex.printStackTrace(); } @@ -120,6 +106,7 @@ public class RulesManager { Utils.out.println(Utils.OUTPUTLEVEL_DEBUG_MIN, "RulesManager", ruleName, "This rule is not cached. Compiling"); try { r = compileJavaRule(scriptFile, tDir); + compiledSomething = true; } catch (InstantiationException | IllegalAccessException | ClassNotFoundException | IOException e) { e.printStackTrace(); } @@ -132,8 +119,10 @@ public class RulesManager { } } Utils.out.println(Utils.OUTPUTLEVEL_NODEBUG, "RulesManager", "Loaded all the rules successfully"); - Utils.zip(tDir.toString(), cacheFilePath.toString(), ""); - Utils.out.println(Utils.OUTPUTLEVEL_NODEBUG, "RulesManager", "Cached the compiled rules"); + if (compiledSomething) { + Utils.zip(tDir.toString(), cacheFilePath.toString(), ""); + Utils.out.println(Utils.OUTPUTLEVEL_NODEBUG, "RulesManager", "Cached the compiled rules"); + } } catch (URISyntaxException | IOException e) { e.printStackTrace(); System.exit(1); @@ -157,9 +146,12 @@ public class RulesManager { if (!tDirPath.toFile().exists()) { Files.createDirectories(tDirPath); } + if (tFileJava.toFile().exists()) { + tFileJava.toFile().delete(); + } Files.write(tFileJava, javaCode.getBytes("UTF-8"), StandardOpenOption.WRITE, StandardOpenOption.CREATE); boolean compiled = org.eclipse.jdt.internal.compiler.batch.Main.compile(new String[] {"-nowarn", "-1.8", tFileJava.toString()}, new PrintWriter(System.out), new PrintWriter(System.err), null); - if (StaticVars.debugOn) { + if (Utils.debugCache) { tFileJava.toFile().deleteOnExit(); } else { tFileJava.toFile().delete();