Search in sources :

Example 1 with Accounts

use of com.iCo6.system.Accounts in project Core by iConomy.

the class iConomy method onEnable.

public void onEnable() {
    final long startTime = System.nanoTime();
    final long endTime;
    try {
        // Localize locale to prevent issues.
        Locale.setDefault(Locale.US);
        // Server & Terminal Support
        Server = getServer();
        if (getServer().getServerName().equalsIgnoreCase("craftbukkit")) {
            TerminalSupport = ((CraftServer) getServer()).getReader().getTerminal().isANSISupported();
        }
        // Get general plugin information
        info = getDescription();
        // Plugin directory setup
        directory = getDataFolder();
        if (!directory.exists())
            directory.mkdir();
        // Extract Files
        Common.extract("Config.yml", "Template.yml");
        // Setup Configuration
        Constants.load(new File(directory, "Config.yml"));
        // Setup Template
        Template = new Template(directory.getPath(), "Template.yml");
        // Upgrade Template to 6.0.9b
        LinkedHashMap<String, String> nodes = new LinkedHashMap<String, String>();
        nodes.put("top.opening", "<green>-----[ <white>Wealthiest Accounts <green>]-----");
        nodes.put("top.item", "<gray>+i. <green>+name <gray>- <white>+amount");
        try {
            Template.update(nodes);
        } catch (IOException ex) {
            System.out.println(ex.getMessage());
        }
        // Check Drivers if needed
        Type type = Database.getType(Constants.Nodes.DatabaseType.toString());
        if (!(type.equals(Type.InventoryDB) || type.equals(Type.MiniDB))) {
            Drivers driver = null;
            switch(type) {
                case H2DB:
                    driver = Constants.Drivers.H2;
                    break;
                case MySQL:
                    driver = Constants.Drivers.MySQL;
                    break;
                case SQLite:
                    driver = Constants.Drivers.SQLite;
                    break;
                case Postgre:
                    driver = Constants.Drivers.Postgre;
                    break;
            }
            if (driver != null)
                if (!(new File("lib", driver.getFilename()).exists())) {
                    System.out.println("[iConomy] Downloading " + driver.getFilename() + "...");
                    wget.fetch(driver.getUrl(), driver.getFilename());
                    System.out.println("[iConomy] Finished Downloading.");
                }
        }
        // Setup Commands
        Commands.add("/money +name", new Money(this));
        Commands.setPermission("money", "iConomy.holdings");
        Commands.setPermission("money+", "iConomy.holdings.others");
        Commands.setHelp("money", new String[] { "", "Check your balance." });
        Commands.setHelp("money+", new String[] { " [name]", "Check others balance." });
        Commands.add("/money -h|?|help +command", new Help(this));
        Commands.setPermission("help", "iConomy.help");
        Commands.setHelp("help", new String[] { " (command)", "For Help & Information." });
        Commands.add("/money -t|top", new Top(this));
        Commands.setPermission("top", "iConomy.top");
        Commands.setHelp("top", new String[] { "", "View top economical accounts." });
        Commands.add("/money -p|pay +name +amount:empty", new Payment(this));
        Commands.setPermission("pay", "iConomy.payment");
        Commands.setHelp("pay", new String[] { " [name] [amount]", "Send money to others." });
        Commands.add("/money -c|create +name", new Create(this));
        Commands.setPermission("create", "iConomy.accounts.create");
        Commands.setHelp("create", new String[] { " [name]", "Create an account." });
        Commands.add("/money -r|remove +name", new Remove(this));
        Commands.setPermission("remove", "iConomy.accounts.remove");
        Commands.setHelp("remove", new String[] { " [name]", "Remove an account." });
        Commands.add("/money -g|give +name +amount:empty", new Give(this));
        Commands.setPermission("give", "iConomy.accounts.give");
        Commands.setHelp("give", new String[] { " [name] [amount]", "Give money." });
        Commands.add("/money -t|take +name +amount:empty", new Take(this));
        Commands.setPermission("take", "iConomy.accounts.take");
        Commands.setHelp("take", new String[] { " [name] [amount]", "Take money." });
        Commands.add("/money -s|set +name +amount:empty", new Set(this));
        Commands.setPermission("set", "iConomy.accounts.set");
        Commands.setHelp("set", new String[] { " [name] [amount]", "Set account balance." });
        Commands.add("/money -u|status +name +status:empty", new Status(this));
        Commands.setPermission("status", "iConomy.accounts.status");
        Commands.setPermission("status+", "iConomy.accounts.status.set");
        Commands.setHelp("status", new String[] { " [name] (status)", "Check/Set account status." });
        Commands.add("/money -x|purge", new Purge(this));
        Commands.setPermission("purge", "iConomy.accounts.purge");
        Commands.setHelp("purge", new String[] { "", "Purge all accounts with initial holdings." });
        Commands.add("/money -e|empty", new Empty(this));
        Commands.setPermission("empty", "iConomy.accounts.empty");
        Commands.setHelp("empty", new String[] { "", "Empty database of accounts." });
        // Setup Database.
        try {
            Database = new Database(Constants.Nodes.DatabaseType.toString(), Constants.Nodes.DatabaseUrl.toString(), Constants.Nodes.DatabaseUsername.toString(), Constants.Nodes.DatabasePassword.toString());
            // If it doesn't exist, Create one.
            if (Database.isSQL()) {
                if (!Database.tableExists(Constants.Nodes.DatabaseTable.toString())) {
                    String SQL = Common.resourceToString("SQL/Core/Create-Table-" + Database.getType().toString().toLowerCase() + ".sql");
                    SQL = String.format(SQL, Constants.Nodes.DatabaseTable.getValue());
                    try {
                        QueryRunner run = new QueryRunner();
                        Connection c = iConomy.Database.getConnection();
                        try {
                            run.update(c, SQL);
                        } catch (SQLException ex) {
                            System.out.println("[iConomy] Error creating database: " + ex);
                        } finally {
                            DbUtils.close(c);
                        }
                    } catch (SQLException ex) {
                        System.out.println("[iConomy] Database Error: " + ex);
                    }
                }
            } else {
                this.onConversion();
            }
        } catch (MissingDriver ex) {
            System.out.println(ex.getMessage());
        }
        getServer().getPluginManager().registerEvents(new players(), this);
    } finally {
        endTime = System.nanoTime();
    }
    // Setup Interest
    if (Constants.Nodes.Interest.getBoolean()) {
        Thrun.init(new Runnable() {

            public void run() {
                long time = Constants.Nodes.InterestTime.getLong() * 1000L;
                Interest = new Timer();
                Interest.scheduleAtFixedRate(new Interest(getDataFolder().getPath()), time, time);
            }
        });
    }
    if (Constants.Nodes.Purging.getBoolean()) {
        Thrun.init(new Runnable() {

            public void run() {
                Queried.purgeDatabase();
                System.out.println("[" + info.getName() + " - " + Constants.Nodes.CodeName.toString() + "] Purged accounts with default balance.");
            }
        });
    }
    final long duration = endTime - startTime;
    // Finish
    System.out.println("[" + info.getName() + " - " + Constants.Nodes.CodeName.toString() + "] Enabled (" + Common.readableProfile(duration) + ")");
}
Also used : ResultSet(java.sql.ResultSet) Drivers(com.iCo6.Constants.Drivers) SQLException(java.sql.SQLException) Template(com.iCo6.util.Template) LinkedHashMap(java.util.LinkedHashMap) Interest(com.iCo6.system.Interest) Database(com.iCo6.IO.Database) com.iCo6.listeners.players(com.iCo6.listeners.players) Connection(java.sql.Connection) IOException(java.io.IOException) QueryRunner(com.iCo6.util.org.apache.commons.dbutils.QueryRunner) Type(com.iCo6.IO.Database.Type) Timer(java.util.Timer) MissingDriver(com.iCo6.IO.exceptions.MissingDriver) File(java.io.File) PluginDescriptionFile(org.bukkit.plugin.PluginDescriptionFile)

Example 2 with Accounts

use of com.iCo6.system.Accounts in project Core by iConomy.

the class players method onPlayerJoin.

@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
    Accounts accounts = new Accounts();
    Player player = event.getPlayer();
    if (player != null)
        if (!accounts.exists(player.getName()))
            accounts.create(player.getName());
}
Also used : Player(org.bukkit.entity.Player) Accounts(com.iCo6.system.Accounts) EventHandler(org.bukkit.event.EventHandler)

Example 3 with Accounts

use of com.iCo6.system.Accounts in project Core by iConomy.

the class MoneyComparator method accountList.

static List<String> accountList() {
    List<String> accounts = new ArrayList<String>();
    if (useMiniDB() || useInventoryDB() || useOrbDB()) {
        if (useInventoryDB())
            accounts.addAll(inventory.getAllPlayers());
        if (useOrbDB())
            for (Player p : iConomy.Server.getOnlinePlayers()) accounts.add(p.getName());
        accounts.addAll(database.getIndices().keySet());
        return accounts;
    }
    try {
        QueryRunner run = new QueryRunner();
        Connection c = iConomy.Database.getConnection();
        try {
            String t = Constants.Nodes.DatabaseTable.toString();
            accounts = run.query(c, "SELECT username FROM " + t, returnList);
        } catch (SQLException ex) {
            System.out.println("[iConomy] Error issueing SQL query: " + ex);
        } finally {
            DbUtils.close(c);
        }
    } catch (SQLException ex) {
        System.out.println("[iConomy] Database Error: " + ex);
    }
    return accounts;
}
Also used : Player(org.bukkit.entity.Player) SQLException(java.sql.SQLException) ArrayList(java.util.ArrayList) Connection(java.sql.Connection) QueryRunner(com.iCo6.util.org.apache.commons.dbutils.QueryRunner)

Example 4 with Accounts

use of com.iCo6.system.Accounts in project Core by iConomy.

the class MoneyComparator method topAccounts.

static List<Account> topAccounts(int amount) {
    Accounts Accounts = new Accounts();
    List<Account> accounts = new ArrayList<Account>();
    List<Account> finals = new ArrayList<Account>();
    List<String> total = new ArrayList<String>();
    if (useMiniDB() || useInventoryDB() || useOrbDB()) {
        if (useInventoryDB())
            total.addAll(inventory.getAllPlayers());
        if (useOrbDB())
            for (Player p : iConomy.Server.getOnlinePlayers()) total.add(p.getName());
        total.addAll(database.getIndices().keySet());
    } else {
        try {
            QueryRunner run = new QueryRunner();
            Connection c = iConomy.Database.getConnection();
            try {
                String t = Constants.Nodes.DatabaseTable.toString();
                total = run.query(c, "SELECT username FROM " + t + " WHERE status <> 1 ORDER BY balance DESC LIMIT " + amount, returnList);
            } catch (SQLException ex) {
                System.out.println("[iConomy] Error issueing SQL query: " + ex);
            } finally {
                DbUtils.close(c);
            }
        } catch (SQLException ex) {
            System.out.println("[iConomy] Database Error: " + ex);
        }
    }
    for (Iterator<String> it = total.iterator(); it.hasNext(); ) {
        String player = it.next();
        if (useMiniDB() || useInventoryDB() || useOrbDB()) {
            accounts.add(Accounts.get(player));
        } else {
            finals.add(new Account(player));
        }
    }
    if (useMiniDB() || useInventoryDB() || useOrbDB()) {
        Collections.sort(accounts, new MoneyComparator());
        if (amount > accounts.size())
            amount = accounts.size();
        for (int i = 0; i < amount; i++) {
            if (accounts.get(i).getStatus() == 1) {
                i--;
                continue;
            }
            finals.add(accounts.get(i));
        }
    }
    return finals;
}
Also used : Player(org.bukkit.entity.Player) SQLException(java.sql.SQLException) ArrayList(java.util.ArrayList) Connection(java.sql.Connection) QueryRunner(com.iCo6.util.org.apache.commons.dbutils.QueryRunner)

Aggregations

QueryRunner (com.iCo6.util.org.apache.commons.dbutils.QueryRunner)3 Connection (java.sql.Connection)3 SQLException (java.sql.SQLException)3 Player (org.bukkit.entity.Player)3 ArrayList (java.util.ArrayList)2 Drivers (com.iCo6.Constants.Drivers)1 Database (com.iCo6.IO.Database)1 Type (com.iCo6.IO.Database.Type)1 MissingDriver (com.iCo6.IO.exceptions.MissingDriver)1 com.iCo6.listeners.players (com.iCo6.listeners.players)1 Accounts (com.iCo6.system.Accounts)1 Interest (com.iCo6.system.Interest)1 Template (com.iCo6.util.Template)1 File (java.io.File)1 IOException (java.io.IOException)1 ResultSet (java.sql.ResultSet)1 LinkedHashMap (java.util.LinkedHashMap)1 Timer (java.util.Timer)1 EventHandler (org.bukkit.event.EventHandler)1 PluginDescriptionFile (org.bukkit.plugin.PluginDescriptionFile)1