package net.amigocraft.GoldBank.economy;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.List;
import org.bukkit.OfflinePlayer;
import net.amigocraft.GoldBank.GoldBank;
import net.amigocraft.GoldBank.api.BankInv;
import net.amigocraft.GoldBank.util.MiscUtils;
import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.economy.EconomyResponse;
import net.milkbowl.vault.economy.EconomyResponse.ResponseType;
public class VaultConnector implements Economy {
private GoldBank plugin = GoldBank.plugin;
public VaultConnector(){}
@Override
public EconomyResponse bankBalance(String arg0){
return new EconomyResponse(0,0, ResponseType.NOT_IMPLEMENTED, "This feature is not implemented in GoldBank.");
}
@Override
public EconomyResponse bankDeposit(String arg0, double arg1){
return new EconomyResponse(0,0, ResponseType.NOT_IMPLEMENTED, "This feature is not implemented in GoldBank.");
}
@Override
public EconomyResponse bankHas(String arg0, double arg1){
return new EconomyResponse(0,0, ResponseType.NOT_IMPLEMENTED, "This feature is not implemented in GoldBank.");
}
@Override
public EconomyResponse bankWithdraw(String player, double amount){
return new EconomyResponse(0,0, ResponseType.NOT_IMPLEMENTED, "This feature is not implemented in GoldBank.");
}
@Override
public EconomyResponse createBank(String arg0, String arg1){
return new EconomyResponse(0, 0, ResponseType.NOT_IMPLEMENTED, "This feature is not implemented in GoldBank.");
}
@Override
public boolean createPlayerAccount(String arg0){
return false;
}
@Override
public String currencyNamePlural(){
return "gold";
}
@Override
public String currencyNameSingular(){
return "gold";
}
@Override
public EconomyResponse deleteBank(String arg0){
return new EconomyResponse(0,0, ResponseType.NOT_IMPLEMENTED, "This feature is not implemented in GoldBank.");
}
@Override
public EconomyResponse depositPlayer(String player, double amount){
boolean success = BankInv.addGoldToBankInv(player, (int)amount);
if (success)
return new EconomyResponse(0, 0, ResponseType.SUCCESS, "Deposited " + amount + " gold in " + player + "'s GoldBank account.");
else
return new EconomyResponse(0, 0, ResponseType.FAILURE, "Failed to deposit " + amount + " gold in " + player + "'s GoldBank account.");
}
@Override
public String format(double amount){
return amount + " gold";
}
@Override
public int fractionalDigits(){
return 0;
}
@Override
public double getBalance(String player){
return (double)BankInv.getGoldInBankInv(player);
}
@Override
public List<String> getBanks(){
return null;
}
@Override
public String getName(){
return "GoldBank";
}
@Override
public boolean has(String player, double amount){
int pAmount = BankInv.getGoldInBankInv(player);
return pAmount >= amount;
}
@Override
public boolean hasAccount(String player){
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
Class.forName("org.sqlite.JDBC");
String dbPath = "jdbc:sqlite:" + plugin.getDataFolder() + File.separator + "data.db";
conn = DriverManager.getConnection(dbPath);
st = conn.createStatement();
rs = st.executeQuery("SELECT COUNT(*) FROM banks WHERE uuid = '" + MiscUtils.getSafeUUID(player) + "'");
int i = 0;
while (rs.next()){
i += 1;
}
if (i > 0)
return true;
}
catch (Exception ex){
ex.printStackTrace();
}
return false;
}
@Override
public boolean hasBankSupport(){
return false;
}
@Override
public EconomyResponse isBankMember(String arg0, String arg1){
return new EconomyResponse(0,0, ResponseType.NOT_IMPLEMENTED, "This feature is not implemented in GoldBank.");
}
@Override
public EconomyResponse isBankOwner(String arg0, String arg1){
return new EconomyResponse(0,0, ResponseType.NOT_IMPLEMENTED, "This feature is not implemented in GoldBank.");
}
@Override
public boolean isEnabled(){
return plugin.getServer().getPluginManager().isPluginEnabled(plugin);
}
@Override
public EconomyResponse withdrawPlayer(String player, double amount){
boolean success = BankInv.removeGoldFromBankInv(player, (int)amount);
if (success)
return new EconomyResponse(0, 0, ResponseType.SUCCESS, "Withdrew " + amount + " gold from " + player + "'s GoldBank account");
else
return new EconomyResponse(0, 0, ResponseType.FAILURE, "Failed to withdraw " + amount + " gold from " + player + "'s GoldBank account");
}
@Override
public boolean createPlayerAccount(String player, String world){
return createPlayerAccount(player);
}
@Override
public EconomyResponse depositPlayer(String player, String world, double amount){
return depositPlayer(player, amount);
}
@Override
public double getBalance(String player, String world){
return getBalance(player);
}
@Override
public boolean has(String player, String world, double amount){
return has(player, amount);
}
@Override
public boolean hasAccount(String player, String world){
return hasAccount(player);
}
@Override
public EconomyResponse withdrawPlayer(String player, String world, double amount){
return withdrawPlayer(player, amount);
}
@Override
public EconomyResponse createBank(String bank, OfflinePlayer player){
return createBank(bank, player.getName());
}
@Override
public boolean createPlayerAccount(OfflinePlayer player){
return createPlayerAccount(player.getName());
}
@Override
public boolean createPlayerAccount(OfflinePlayer player, String world){
return createPlayerAccount(player.getName(), world);
}
@Override
public EconomyResponse depositPlayer(OfflinePlayer player, double amount){
return depositPlayer(player.getName(), amount);
}
@Override
public EconomyResponse depositPlayer(OfflinePlayer player, String world, double amount){
return depositPlayer(player.getName(), world, amount);
}
@Override
public double getBalance(OfflinePlayer player){
return getBalance(player.getName());
}
@Override
public double getBalance(OfflinePlayer player, String world){
return getBalance(player.getName(), world);
}
@Override
public boolean has(OfflinePlayer player, double amount){
return has(player.getName(), amount);
}
@Override
public boolean has(OfflinePlayer player, String world, double amount){
return has(player.getName(), world, amount);
}
@Override
public boolean hasAccount(OfflinePlayer player){
return hasAccount(player.getName());
}
@Override
public boolean hasAccount(OfflinePlayer player, String world){
return hasAccount(player.getName(), world);
}
@Override
public EconomyResponse isBankMember(String bank, OfflinePlayer player){
return isBankMember(bank, player.getName());
}
@Override
public EconomyResponse isBankOwner(String bank, OfflinePlayer player){
return isBankOwner(bank, player.getName());
}
@Override
public EconomyResponse withdrawPlayer(OfflinePlayer player, double amount){
return withdrawPlayer(player.getName(), amount);
}
@Override
public EconomyResponse withdrawPlayer(OfflinePlayer player, String world, double amount){
return withdrawPlayer(player.getName(), world, amount);
}
}