From d229ca0266bb54fb137157719d0aabcd0a959746 Mon Sep 17 00:00:00 2001 From: SamB440 Date: Thu, 19 Dec 2019 17:41:34 +0000 Subject: [PATCH] Add yaml storage --- build.gradle | 2 +- ...{languagy-1.2.5.jar => languagy-1.2.6.jar} | Bin 1018128 -> 1022573 bytes .../managers/data/sql/SqlStorage.java | 4 +- .../managers/data/yml/YamlStorage.java | 61 +++++++++++++++++- 4 files changed, 62 insertions(+), 5 deletions(-) rename libraries/{languagy-1.2.5.jar => languagy-1.2.6.jar} (92%) diff --git a/build.gradle b/build.gradle index 01b660e..fc7ad35 100644 --- a/build.gradle +++ b/build.gradle @@ -39,7 +39,7 @@ dependencies { implementation 'mysql:mysql-connector-java:5.1.33' implementation 'org.apache.commons:commons-lang3:3.6' compileOnly 'com.sk89q.worldguard:worldguard-bukkit:7.0.2-SNAPSHOT' - compileOnly name: 'languagy-1.2.5' + compileOnly name: 'languagy-1.2.6' } shadowJar { diff --git a/libraries/languagy-1.2.5.jar b/libraries/languagy-1.2.6.jar similarity index 92% rename from libraries/languagy-1.2.5.jar rename to libraries/languagy-1.2.6.jar index be7b498b954251e61276c967552035afd9a873bb..1506a69c1e2f09e5e094a06e45e02d7b8b929751 100644 GIT binary patch delta 33666 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 A=>Px# delta 31187 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 iW?`C%9_E { + DB.getResultsAsync("SELECT region FROM Discoveries WHERE uuid = ?", getDatabaseUuid(uuid).toString()).whenComplete((results, error) -> { List regions = new ArrayList<>(); for (DbRow row : results) { regions.add(new WorldDiscovery(Date.valueOf(row.getString("time")), row.getString("region"))); @@ -75,7 +75,7 @@ public class SqlStorage implements StorageManager { for (Discovery region : account.getDiscoveredRegions()) { if (!current.contains(region)) { try { - DB.executeInsert("INSERT INTO Discoveries (uuid, region, time) VALUES (?, ?, ?)", uuid, region.getRegion(), region.getDate().toString()); + DB.executeInsert("INSERT INTO Discoveries (uuid, region, time) VALUES (?, ?, ?)", getDatabaseUuid(uuid).toString(), region.getRegion(), region.getDate().toString()); } catch (SQLException e) { e.printStackTrace(); } diff --git a/src/main/java/net/islandearth/rpgregions/managers/data/yml/YamlStorage.java b/src/main/java/net/islandearth/rpgregions/managers/data/yml/YamlStorage.java index f1ed8b2..c939741 100644 --- a/src/main/java/net/islandearth/rpgregions/managers/data/yml/YamlStorage.java +++ b/src/main/java/net/islandearth/rpgregions/managers/data/yml/YamlStorage.java @@ -1,26 +1,83 @@ package net.islandearth.rpgregions.managers.data.yml; +import com.google.common.collect.ImmutableMap; +import net.islandearth.rpgregions.RPGRegions; import net.islandearth.rpgregions.managers.data.StorageManager; import net.islandearth.rpgregions.managers.data.account.RPGRegionsAccount; +import net.islandearth.rpgregions.managers.data.region.Discovery; +import net.islandearth.rpgregions.managers.data.region.WorldDiscovery; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.plugin.java.JavaPlugin; +import java.io.File; +import java.io.IOException; +import java.sql.Date; +import java.util.ArrayList; +import java.util.List; import java.util.UUID; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; public class YamlStorage implements StorageManager { + private ConcurrentMap cachedAccounts = new ConcurrentHashMap<>(); + @Override public CompletableFuture getAccount(UUID uuid) { - return null; + CompletableFuture future = new CompletableFuture<>(); + if (cachedAccounts.containsKey(uuid)) { + future.complete(cachedAccounts.get(uuid)); + } else { + File file = new File(JavaPlugin.getPlugin(RPGRegions.class).getDataFolder() + "/accounts/" + uuid.toString() + ".yml"); + FileConfiguration config = YamlConfiguration.loadConfiguration(file); + List regions = new ArrayList<>(); + for (String results : config.getStringList("Discoveries")) { + String[] data = results.split(";"); + Date time = Date.valueOf(data[0]); + String region = data[1]; + regions.add(new WorldDiscovery(time, region)); + } + + RPGRegionsAccount account = new RPGRegionsAccount(uuid, regions); + cachedAccounts.put(uuid, account); + future.complete(account); + } + return future; } @Override public ConcurrentMap getCachedAccounts() { - return null; + return (ConcurrentMap) ImmutableMap.copyOf(cachedAccounts); } @Override public void removeCachedAccount(UUID uuid) { + RPGRegionsAccount account = cachedAccounts.get(uuid); + File file = new File(JavaPlugin.getPlugin(RPGRegions.class).getDataFolder() + "/accounts/" + uuid.toString() + ".yml"); + FileConfiguration config = YamlConfiguration.loadConfiguration(file); + List current = new ArrayList<>(); + for (String results : config.getStringList("Discoveries")) { + String[] data = results.split(";"); + Date time = Date.valueOf(data[0]); + String region = data[1]; + current.add(new WorldDiscovery(time, region)); + } + List newData = config.getStringList("Discoveries"); + for (Discovery region : account.getDiscoveredRegions()) { + if (!current.contains(region)) { + newData.add(region.getDate().toString() + ";" + region.getRegion()); + } + } + + config.set("Discoveries", newData); + try { + config.save(file); + } catch (IOException e) { + e.printStackTrace(); + } + cachedAccounts.remove(uuid); } }