Package net.canarymod.backbone

Source Code of net.canarymod.backbone.BackboneKits

package net.canarymod.backbone;

import java.util.ArrayList;
import java.util.Arrays;

import net.canarymod.Canary;
import net.canarymod.database.DataAccess;
import net.canarymod.database.Database;
import net.canarymod.database.exceptions.DatabaseReadException;
import net.canarymod.database.exceptions.DatabaseWriteException;
import net.canarymod.kit.Kit;

/**
* Backbone to the kits System. This contains NO logic, it is only the data
* source access!
*
* @author Chris (damagefilter)
*/
public class BackboneKits extends Backbone {

    public BackboneKits() {
        super(Backbone.System.KITS);
        try {
            Database.get().updateSchema(new KitDataAccess());
        }
        catch (DatabaseWriteException e) {
            Canary.logStacktrace("Failed to update database schema", e);
        }
    }

    private boolean kitExists(Kit kit) {
        KitDataAccess data = new KitDataAccess();

        try {
            Database.get().load(data, new String[]{ "name" }, new Object[]{ kit.getName() });
        }
        catch (DatabaseReadException e) {
            Canary.logStacktrace(e.getMessage(), e);
        }
        return data.hasData();
    }

    /**
     * Add a new Kit to the list of Kits.
     *
     * @param kit
     *         Adds the kit instance to the list of kits.
     */
    public void addKit(Kit kit) {
        if (kitExists(kit)) {
            updateKit(kit);
            return;
        }
        KitDataAccess data = new KitDataAccess();

        data.groups = kit.getGroups() != null ? new ArrayList<String>(Arrays.asList(kit.getGroups())) : new ArrayList<String>();
        data.items = kit.getItemsAsStringList();
        data.name = kit.getName();
        data.owners = kit.getOwner() != null ? new ArrayList<String>(Arrays.asList(kit.getOwner())) : new ArrayList<String>();
        data.useDelay = kit.getDelay();
        data.id = 0;

        try {
            Database.get().insert(data);
        }
        catch (DatabaseWriteException e) {
            Canary.logStacktrace(e.getMessage(), e);
        }
    }

    /**
     * Remove a Kit from the data source
     *
     * @param kit
     *         Removes the kit instance from the list of kits.
     */
    public void removeKit(Kit kit) {
        try {
            Database.get().remove("kit", new String[]{ "name" }, new Object[]{ kit.getName() });
        }
        catch (DatabaseWriteException e) {
            Canary.logStacktrace(e.getMessage(), e);
        }
    }

    /**
     * Get a Kit with the given name
     *
     * @param name
     *         Name of the kit to get.
     *
     * @return a Kit object if that Kit was found, null otherwise
     */
    public Kit getKit(String name) {
        KitDataAccess data = new KitDataAccess();

        try {
            Database.get().load(data, new String[]{ "name" }, new Object[]{ name });
            if (!data.hasData()) {
                return null;
            }
            Kit kit = new Kit();

            kit.setContentFromStrings(data.items);
            kit.setDelay(data.useDelay);
            kit.setGroups(data.groups.toArray(new String[data.groups.size()]));
            kit.setName(data.name);
            kit.setOwner(data.owners.toArray(new String[data.owners.size()]));
            kit.setId(data.id);
            return kit;
        }
        catch (DatabaseReadException e) {
            Canary.logStacktrace(e.getMessage(), e);
        }
        return null;
    }

    /**
     * Update a Kit
     *
     * @param kit
     *         Update this kit instance to the database.
     */
    public void updateKit(Kit kit) {
        KitDataAccess data = new KitDataAccess();

        data.groups = kit.getGroups() != null ? new ArrayList<String>(Arrays.asList(kit.getGroups())) : new ArrayList<String>();
        data.items = kit.getItemsAsStringList();
        data.name = kit.getName();
        data.owners = kit.getOwner() != null ? new ArrayList<String>(Arrays.asList(kit.getOwner())) : new ArrayList<String>();
        data.useDelay = kit.getDelay();
        try {
            Database.get().update(data, new String[]{ "name" }, new Object[]{ kit.getName() });
        }
        catch (DatabaseWriteException e) {
            Canary.logStacktrace(e.getMessage(), e);
        }
    }

    /**
     * Load and return all kits
     *
     * @return An ArrayList of all kits.
     */
    public ArrayList<Kit> loadKits() {
        ArrayList<DataAccess> dataList = new ArrayList<DataAccess>();
        ArrayList<Kit> kits = new ArrayList<Kit>();

        try {
            Database.get().loadAll(new KitDataAccess(), dataList, new String[]{ }, new Object[]{ });
            for (DataAccess da : dataList) {
                KitDataAccess data = (KitDataAccess) da;
                Kit kit = new Kit();

                kit.setContentFromStrings(data.items);
                kit.setDelay(data.useDelay);
                kit.setGroups(data.groups.toArray(new String[data.groups.size()]));
                kit.setName(data.name);
                kit.setOwner(data.owners.toArray(new String[data.owners.size()]));
                kit.setId(data.id);
                kits.add(kit);
            }
            return kits;
        }
        catch (DatabaseReadException e) {
            Canary.logStacktrace(e.getMessage(), e);
        }
        return null;
    }
}
TOP

Related Classes of net.canarymod.backbone.BackboneKits

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.