diff --git a/src/main/java/de/epiceric/shopchest/sql/Database.java b/src/main/java/de/epiceric/shopchest/sql/Database.java index fa07404..918479c 100644 --- a/src/main/java/de/epiceric/shopchest/sql/Database.java +++ b/src/main/java/de/epiceric/shopchest/sql/Database.java @@ -21,6 +21,8 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; +import java.util.Collection; +import java.util.Collections; import java.util.HashSet; import java.util.Set; import java.util.UUID; @@ -227,10 +229,10 @@ public abstract class Database { /** * Get all shops from the database - * @param callback Callback that - if succeeded - returns an array of all shops (as {@code Shop[]}) + * @param callback Callback that - if succeeded - returns a read-only collection of all shops (as {@code Collection}) * @param showConsoleMessages Whether console messages (errors or warnings) should be shown */ - public void getShops(final boolean showConsoleMessages, final Callback callback) { + public void getShops(final boolean showConsoleMessages, final Callback> callback) { new BukkitRunnable() { @Override public void run() { @@ -276,7 +278,7 @@ public abstract class Database { shops.add(new Shop(id, plugin, vendor, product, location, buyPrice, sellPrice, shopType)); } - if (callback != null) callback.callSyncResult(shops.toArray(new Shop[shops.size()])); + if (callback != null) callback.callSyncResult(Collections.unmodifiableCollection(shops)); } catch (SQLException ex) { if (callback != null) callback.callSyncError(ex); plugin.getLogger().severe("Failed to access database"); diff --git a/src/main/java/de/epiceric/shopchest/utils/ShopUtils.java b/src/main/java/de/epiceric/shopchest/utils/ShopUtils.java index ac03584..99a6bc0 100644 --- a/src/main/java/de/epiceric/shopchest/utils/ShopUtils.java +++ b/src/main/java/de/epiceric/shopchest/utils/ShopUtils.java @@ -242,9 +242,9 @@ public class ShopUtils { plugin.debug("Removed shop (#" + shop.getID() + ")"); } - plugin.getShopDatabase().getShops(showConsoleMessages, new Callback(plugin) { + plugin.getShopDatabase().getShops(showConsoleMessages, new Callback>(plugin) { @Override - public void onResult(Shop[] result) { + public void onResult(Collection result) { for (Shop shop : result) { if (shop.create(showConsoleMessages)) { addShop(shop, false); @@ -255,7 +255,7 @@ public class ShopUtils { updateShops(player, true); } - if (callback != null) callback.callSyncResult(result.length); + if (callback != null) callback.callSyncResult(result.size()); } @Override