Attempt to fix baltop again and bump ver to 0.9.3

This commit is contained in:
AppleDash 2016-12-07 08:32:19 -05:00
parent 0edc3e5ffe
commit 55e58d0ac3
8 changed files with 60 additions and 29 deletions

View File

@ -6,10 +6,10 @@
<parent>
<groupId>org.appledash</groupId>
<artifactId>SaneEconomy</artifactId>
<version>0.9.2-SNAPSHOT</version>
<version>0.9.3-SNAPSHOT</version>
</parent>
<artifactId>SaneEconomyCore</artifactId>
<version>0.9.2-SNAPSHOT</version>
<version>0.9.3-SNAPSHOT</version>
<dependencies>
<dependency>

View File

@ -39,28 +39,30 @@ public class BalanceTopCommand extends SaneEconomyCommand {
throw new TooManyArgumentsException();
}
int offset = 0;
int nPerPage = 10;
int page = 1;
if (args.length == 1) {
try {
int page = Math.abs(Integer.parseInt(args[0]));
offset = 10 * (page - 1);
page = Math.abs(Integer.parseInt(args[0]));
} catch (NumberFormatException e) {
MessageUtils.sendMessage(sender, "%s is not a valid number.");
return;
}
}
Map<OfflinePlayer, Double> topBalances = saneEconomy.getEconomyManager().getTopPlayerBalances(10, offset);
int offset = (page - 1) * nPerPage;
Map<OfflinePlayer, Double> topBalances = saneEconomy.getEconomyManager().getTopPlayerBalances(nPerPage, offset);
if (topBalances.isEmpty()) {
MessageUtils.sendMessage(sender, "There aren't enough players to display that page.");
return;
}
AtomicInteger index = new AtomicInteger(1); /* I know it's stupid, but you can't do some_int++ from within the lambda. */
AtomicInteger index = new AtomicInteger(offset + 1); /* I know it's stupid, but you can't do some_int++ from within the lambda. */
MessageUtils.sendMessage(sender, "Top %d players (page %s):", topBalances.size(), (args.length == 1) ? args[0] : "1");
MessageUtils.sendMessage(sender, "Top %d players on page %d:", topBalances.size(), page);
topBalances.forEach((player, balance) -> MessageUtils.sendMessage(sender, "[%02d] %s - %s", index.getAndIncrement(), player.getName(), SaneEconomy.getInstance().getEconomyManager().getCurrency().formatAmount(balance)));
}
}

View File

@ -2,6 +2,7 @@ package org.appledash.saneeconomy.economy.backend;
import org.appledash.saneeconomy.economy.economable.Economable;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.UUID;
@ -38,7 +39,7 @@ public interface EconomyStorageBackend {
* @param amount Maximum number to get.
* @return Map of player UUIDs to amounts.
*/
Map<UUID, Double> getTopPlayerBalances(int amount, int offset);
LinkedHashMap<UUID, Double> getTopPlayerBalances(int amount, int offset);
/**
* Reload this backend's database from disk.

View File

@ -16,7 +16,7 @@ import java.util.UUID;
*/
public abstract class EconomyStorageBackendCaching implements EconomyStorageBackend {
protected HashMap<String, Double> balances = new HashMap<>();
private Map<UUID, Double> topPlayerBalances = new LinkedHashMap<>();
private LinkedHashMap<UUID, Double> topPlayerBalances = new LinkedHashMap<>();
@Override
public boolean accountExists(Economable economable) {
@ -33,8 +33,8 @@ public abstract class EconomyStorageBackendCaching implements EconomyStorageBack
}
@Override
public Map<UUID, Double> getTopPlayerBalances(int amount, int offset) {
return MapUtil.takeFromMap(topPlayerBalances, amount, offset);
public LinkedHashMap<UUID, Double> getTopPlayerBalances(int amount, int offset) {
return MapUtil.skipAndTake(topPlayerBalances, offset, amount);
}
@Override

View File

@ -8,40 +8,68 @@ import java.util.*;
*/
public class MapUtil {
/* Originally found on StackOverflow: http://stackoverflow.com/a/2581754/1849152 */
public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map) {
public static <K, V extends Comparable<? super V>> LinkedHashMap<K, V> sortByValue(Map<K, V> map) {
List<Map.Entry<K, V>> list =
new LinkedList<>(map.entrySet());
Collections.sort(list, (o1, o2) -> -((o1.getValue()).compareTo(o2.getValue())));
Map<K, V> result = new LinkedHashMap<>();
list.sort((o1, o2) -> -((o1.getValue()).compareTo(o2.getValue())));
LinkedHashMap<K, V> result = new LinkedHashMap<>();
for (Map.Entry<K, V> entry : list) {
result.put(entry.getKey(), entry.getValue());
}
return result;
}
public static <K, V> Map<K, V> takeFromMap(Map<K, V> map, int amount, int offset) {
Map<K, V> newMap = new LinkedHashMap<>();
/**
* "Skip" the given number of items in a LinkedHashMap and return a new LinkedHashMap with the remaining items.
* @param map Map
* @param nSkip Number of items to skip
* @return New LinkedHashMap, may be empty.
*/
public static <K, V> LinkedHashMap<K, V> skip(LinkedHashMap<K, V> map, int nSkip) {
LinkedHashMap<K, V> newMap = new LinkedHashMap<>();
if (offset > map.size()) {
if (map.size() <= nSkip) {
return newMap;
}
int i = 0;
for (Map.Entry<K, V> entry : map.entrySet()) {
if (i < offset) {
continue;
if (i >= nSkip) {
newMap.put(entry.getKey(), entry.getValue());
}
if (newMap.size() >= amount) {
break;
}
newMap.put(entry.getKey(), entry.getValue());
i++;
}
return newMap;
}
public static <K, V> LinkedHashMap<K, V> take(LinkedHashMap<K, V> map, int nTake) {
LinkedHashMap<K, V> newMap = new LinkedHashMap<>();
if (map.size() <= nTake) {
return map;
}
int i = 0;
for (Map.Entry<K, V> entry : map.entrySet()) {
if (i >= nTake) {
break;
}
newMap.put(entry.getKey(), entry.getValue());
i++;
}
return newMap;
}
public static <K, V> LinkedHashMap<K, V> skipAndTake(LinkedHashMap<K, V> map, int nSkip, int nTake) {
return take(skip(map, nSkip), nTake);
}
}

View File

@ -1,7 +1,7 @@
name: SaneEconomy
author: AppleDash
main: org.appledash.saneeconomy.SaneEconomy
version: 0.9.2
version: 0.9.3
loadbefore: [Vault]
commands:
balance:

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>SaneEconomy</artifactId>
<groupId>org.appledash</groupId>
<version>0.9.2-SNAPSHOT</version>
<version>0.9.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@ -16,7 +16,7 @@
<dependency>
<groupId>org.appledash</groupId>
<artifactId>SaneEconomyCore</artifactId>
<version>0.9.2-SNAPSHOT</version>
<version>0.9.3-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@ -6,7 +6,7 @@
<groupId>org.appledash</groupId>
<artifactId>SaneEconomy</artifactId>
<version>0.9.2-SNAPSHOT</version>
<version>0.9.3-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>