package com.nijikokun.register.payment.forChestShop; import org.bukkit.plugin.Plugin; /** * Interface to be implemented by a payment method. * * @author Nijikokun (@nijikokun) * @copyright Copyright (C) 2011 * @license AOL license */ public interface Method { /** * Encodes the Plugin into an Object disguised as the Plugin. * If you want the original Plugin Class you must cast it to the correct * Plugin, to do so you have to verify the name and or version then cast. * *
     *  if(method.getName().equalsIgnoreCase("iConomy"))
     *   iConomy plugin = ((iConomy)method.getPlugin());
* * @return Object * @see #getName() * @see #getVersion() */ public Object getPlugin(); /** * Returns the actual name of this method. * * @return String Plugin name. */ public String getName(); /** * Returns the actual version of this method. * * @return String Plugin version. */ public String getVersion(); /** * Returns the amount of decimal places that get stored * NOTE: it will return -1 if there is no rounding * * @return int for each decimal place */ public int fractionalDigits(); /** * Formats amounts into this payment methods style of currency display. * * @param amount Double * @return String - Formatted Currency Display. */ public String format(double amount); /** * Allows the verification of bank API existence in this payment method. * * @return boolean */ public boolean hasBanks(); /** * Determines the existence of a bank via name. * * @param bank Bank name * @return boolean * @see #hasBanks */ public boolean hasBank(String bank); /** * Determines the existence of an account via name. * * @param name Account name * @return boolean */ public boolean hasAccount(String name); /** * Check to see if an account name is tied to a bank. * * @param bank Bank name * @param name Account name * @return boolean */ public boolean hasBankAccount(String bank, String name); /** * Forces an account creation * * @param name Account name * @return boolean */ public boolean createAccount(String name); /** * Forces an account creation * * @param name Account name * @param balance Initial account balance * @return boolean */ public boolean createAccount(String name, double balance); /** * Returns a MethodAccount class for an account name. * * @param name Account name * @return MethodAccount or Null */ public MethodAccount getAccount(String name); /** * Returns a MethodBankAccount class for an account name. * * @param bank Bank name * @param name Account name * @return MethodBankAccount or Null */ public MethodBankAccount getBankAccount(String bank, String name); /** * Checks to verify the compatibility between this Method and a plugin. * Internal usage only, for the most part. * * @param plugin Plugin * @return boolean */ public boolean isCompatible(Plugin plugin); /** * Set Plugin data. * * @param plugin Plugin */ public void setPlugin(Plugin plugin); /** * Contains Calculator and Balance functions for Accounts. */ public interface MethodAccount { public double balance(); public boolean set(double amount); public boolean add(double amount); public boolean subtract(double amount); public boolean multiply(double amount); public boolean divide(double amount); public boolean hasEnough(double amount); public boolean hasOver(double amount); public boolean hasUnder(double amount); public boolean isNegative(); public boolean remove(); @Override public String toString(); } /** * Contains Calculator and Balance functions for Bank Accounts. */ public interface MethodBankAccount { public double balance(); public String getBankName(); public int getBankId(); public boolean set(double amount); public boolean add(double amount); public boolean subtract(double amount); public boolean multiply(double amount); public boolean divide(double amount); public boolean hasEnough(double amount); public boolean hasOver(double amount); public boolean hasUnder(double amount); public boolean isNegative(); public boolean remove(); @Override public String toString(); } }