/* * Decompiled with CFR 0.152. */ package gearth.misc; import gearth.GEarth; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.net.URISyntaxException; import java.nio.file.Files; import java.util.List; import org.json.JSONArray; import org.json.JSONObject; public class Cacher { private static final String DEFAULT_CACHE_FILENAME = "cache.json"; private static String cacheDir; public static void setCacheDir(String s) { cacheDir = s; } public static String getCacheDir() { return cacheDir; } public static boolean cacheFileExists(String cache_filename) { File f = new File(Cacher.getCacheDir(), cache_filename); return f.exists() && !f.isDirectory(); } public static JSONObject getCacheContents(String cache_filename) { if (Cacher.cacheFileExists(cache_filename)) { try { File f = new File(Cacher.getCacheDir(), cache_filename); String contents = String.join((CharSequence)"\n", Files.readAllLines(f.toPath())); return new JSONObject(contents); } catch (IOException e) { e.printStackTrace(); } } return new JSONObject(); } private static void updateCache(JSONObject contents, String cache_filename) { Cacher.updateCache(contents.toString(), cache_filename); } public static void updateCache(String content, String cache_filename) { File parent_dir = new File(Cacher.getCacheDir()); parent_dir.mkdirs(); try (FileWriter file = new FileWriter(new File(Cacher.getCacheDir(), cache_filename));){ file.write(content); file.flush(); } catch (IOException e) { e.printStackTrace(); } } public static void put(String key, Object val, String cache_filename) { JSONObject object = Cacher.getCacheContents(cache_filename); if (object.has(key)) { object.remove(key); } object.put(key, val); Cacher.updateCache(object, cache_filename); } public static Object get(String key, String cache_filename) { JSONObject object = Cacher.getCacheContents(cache_filename); if (object.has(key)) { return object.get(key); } return null; } public static List getList(String key, String cache_filename) { JSONObject object = Cacher.getCacheContents(cache_filename); if (object.has(key)) { return ((JSONArray)object.get(key)).toList(); } return null; } public static void clear(String cache_filename) { Cacher.updateCache(new JSONObject(), cache_filename); } public static boolean cacheFileExists() { return Cacher.cacheFileExists(DEFAULT_CACHE_FILENAME); } public static JSONObject getCacheContents() { return Cacher.getCacheContents(DEFAULT_CACHE_FILENAME); } private static void updateCache(JSONObject contents) { Cacher.updateCache(contents, DEFAULT_CACHE_FILENAME); } public static void put(String key, Object val) { Cacher.put(key, val, DEFAULT_CACHE_FILENAME); } public static Object get(String key) { return Cacher.get(key, DEFAULT_CACHE_FILENAME); } public static List getList(String key) { return Cacher.getList(key, DEFAULT_CACHE_FILENAME); } public static void clear() { Cacher.clear(DEFAULT_CACHE_FILENAME); } static { File GEarthDir = null; try { GEarthDir = new File(GEarth.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getParentFile(); if (GEarthDir.getName().equals("Extensions")) { GEarthDir = GEarthDir.getParentFile(); } } catch (URISyntaxException uRISyntaxException) { // empty catch block } cacheDir = GEarthDir + File.separator + "Cache"; } }