@Override public void onDisable() { save(); version = 0; calculator = null; expMap.clear(); intervalMap.clear(); }
protected void load() { try (InputStreamReader reader = new InputStreamReader(new GZIPInputStream(new FileInputStream(cacheFile)), StandardCharsets.UTF_8)) { JSONParser parser = new JSONParser(); Object obj = parser.parse(reader); if (obj instanceof JSONObject) { JSONObject cacheObject = (JSONObject) obj; this.expMap = (JSONObject) cacheObject.get("expMap"); this.version = (long) cacheObject.get("version"); this.calculator = cacheObject.get("calculator").toString(); loadIntervals(); } } catch (Throwable e) { cacheFile.delete(); version = 0; calculator = null; expMap.clear(); intervalMap.clear(); } }
public void checkVersion(ExperienceCalculator calculator) { long version = calculator.getVersion(); String identifier = calculator.getIdentifier(); if (version != this.version || !identifier.equals(this.calculator)) { expMap.clear(); this.version = version; this.calculator = identifier; MyPetApi.getLogger().info("Current Exp-Cache is invalid, it will be recalculated."); save(); } }
/** * The first element is expected to be a map, or null. Anything else causes an error. * @param tuple the tuple to write. */ @Override @SuppressWarnings("unchecked") public void putNext(Tuple tuple) throws IOException { json.clear(); if (tuple != null && tuple.size() >= 1) { Map<String, Object> map = (Map<String, Object>) tuple.get(0); if (keysToKeep_ == null) { json.putAll(map); } else { for (Map.Entry<String, Object> entry : map.entrySet()) { if (keysToKeep_.contains(entry.getKey())) { json.put(entry.getKey(), entry.getValue()); } } } } try { writer.write(null, new Text(json.toString())); } catch (InterruptedException e) { // Under what circumstances does this happen? throw new IOException(e); } }