Add CachedVaults

Only writes vaults to file on server shutdown or player quit, rather
than every inventory close event.

Also caches for read() events.
This commit is contained in:
Vaquxine
2015-05-25 20:09:09 -05:00
committed by drtshock
parent 89c57dc76d
commit 9cd5755d0a
5 changed files with 115 additions and 13 deletions
@@ -0,0 +1,48 @@
package com.drtshock.playervaults.vaultmanagement;
import java.io.IOException;
import java.util.HashMap;
import java.util.UUID;
import org.bukkit.inventory.Inventory;
@SuppressWarnings("serial")
public class CachedVaults extends HashMap<UUID, CachedVaultsMap> {
public void setCachedVault(UUID playerUUID, int id, Inventory inventory){
CachedVaultsMap vaultCacheMap = this.containsKey(playerUUID) ? this.get(playerUUID) : new CachedVaultsMap();
vaultCacheMap.setCachedVault(id, inventory);
this.put(playerUUID, vaultCacheMap);
}
public Inventory getCachedVault(UUID playerUUID, int id){
return this.containsKey(playerUUID) ? this.get(playerUUID).getCachedVault(id) : null;
}
public boolean hasVaultCached(UUID playerUUID, int id){
return this.containsKey(playerUUID) && this.get(playerUUID).getCachedVault(id) != null;
}
public void clearVaultCache(UUID playerUUID){
if(this.containsKey(playerUUID)){
this.get(playerUUID).clear();
}
}
public void deleteVaultCache(UUID playerUUID){
this.remove(playerUUID);
}
public void flushVaultCacheToFile(UUID playerUUID){
if(this.containsKey(playerUUID)){
for(java.util.Map.Entry<Integer, Inventory> data : this.get(playerUUID).entrySet()){
try {
UUIDVaultManager.getInstance().saveVault(data.getValue(), playerUUID, data.getKey());
} catch (IOException e) {
e.printStackTrace();
}
}
this.deleteVaultCache(playerUUID);
}
}
}