Improves API and JavaDocs for getMembers (#628)

* Improves API and JavaDocs for getMembers

https://github.com/BentoBoxWorld/BentoBox/issues/627

* Fixed indentation in Island
This commit is contained in:
tastybento 2019-04-10 06:40:54 -07:00 committed by Florian CUNY
parent aeb0e7d4fa
commit f5ad5aa2c9
5 changed files with 50 additions and 26 deletions

View File

@ -246,9 +246,9 @@ public class Island implements DataObject {
/**
* Returns the members of this island.
* It contains any player which has one of the following rank on this island: {@link RanksManager#COOP_RANK COOP},
* It contains all players that have any rank on this island, including {@link RanksManager#BANNED},
* {@link RanksManager#TRUSTED_RANK TRUSTED}, {@link RanksManager#MEMBER_RANK MEMBER}, {@link RanksManager#SUB_OWNER_RANK SUB_OWNER},
* {@link RanksManager#OWNER_RANK OWNER}.
* {@link RanksManager#OWNER_RANK OWNER}, etc.
*
* @return the members - key is the UUID, value is the RanksManager enum, e.g. {@link RanksManager#MEMBER_RANK}.
* @see #getMemberSet()
@ -265,13 +265,19 @@ public class Island implements DataObject {
* @see #getMembers()
*/
public ImmutableSet<UUID> getMemberSet(){
Builder<UUID> result = new ImmutableSet.Builder<>();
return (getMemberSet(RanksManager.MEMBER_RANK));
}
for (Entry<UUID, Integer> member: members.entrySet()) {
if (member.getValue() >= RanksManager.MEMBER_RANK) {
result.add(member.getKey());
}
}
/**
* Returns an immutable set containing the UUIDs of players with rank above that requested rank inclusive
* @param minimumRank - minimum rank (inclusive) of members
* @return immutable set of UUIDs
* @see #getMembers()
* @since 1.5.0
*/
public @NonNull ImmutableSet<UUID> getMemberSet(@NonNull int minimumRank) {
Builder<UUID> result = new ImmutableSet.Builder<>();
members.entrySet().stream().filter(e -> e.getValue() >= minimumRank).map(Map.Entry::getKey).forEach(result::add);
return result.build();
}
@ -554,9 +560,9 @@ public class Island implements DataObject {
BentoBox plugin = BentoBox.getInstance();
Map<Flag, Integer> result = new HashMap<>();
plugin.getFlagsManager().getFlags().stream().filter(f -> f.getType().equals(Flag.Type.PROTECTION))
.forEach(f -> result.put(f, plugin.getIWM().getDefaultIslandFlags(world).getOrDefault(f, f.getDefaultRank())));
.forEach(f -> result.put(f, plugin.getIWM().getDefaultIslandFlags(world).getOrDefault(f, f.getDefaultRank())));
plugin.getFlagsManager().getFlags().stream().filter(f -> f.getType().equals(Flag.Type.SETTING))
.forEach(f -> result.put(f, plugin.getIWM().getDefaultIslandSettings(world).getOrDefault(f, f.getDefaultRank())));
.forEach(f -> result.put(f, plugin.getIWM().getDefaultIslandSettings(world).getOrDefault(f, f.getDefaultRank())));
this.setFlags(result);
}
@ -744,14 +750,14 @@ public class Island implements DataObject {
// Fixes #getLastPlayed() returning 0 when it is the owner's first connection.
long lastPlayed = (Bukkit.getServer().getOfflinePlayer(owner).getLastPlayed() != 0) ?
Bukkit.getServer().getOfflinePlayer(owner).getLastPlayed() : Bukkit.getServer().getOfflinePlayer(owner).getFirstPlayed();
user.sendMessage("commands.admin.info.last-login","[date]", new Date(lastPlayed).toString());
user.sendMessage("commands.admin.info.last-login","[date]", new Date(lastPlayed).toString());
user.sendMessage("commands.admin.info.deaths", "[number]", String.valueOf(plugin.getPlayers().getDeaths(world, owner)));
String resets = String.valueOf(plugin.getPlayers().getResets(world, owner));
String total = plugin.getIWM().getResetLimit(world) < 0 ? "Unlimited" : String.valueOf(plugin.getIWM().getResetLimit(world));
user.sendMessage("commands.admin.info.resets-left", "[number]", resets, "[total]", total);
// Show team members
showMembers(user);
user.sendMessage("commands.admin.info.deaths", "[number]", String.valueOf(plugin.getPlayers().getDeaths(world, owner)));
String resets = String.valueOf(plugin.getPlayers().getResets(world, owner));
String total = plugin.getIWM().getResetLimit(world) < 0 ? "Unlimited" : String.valueOf(plugin.getIWM().getResetLimit(world));
user.sendMessage("commands.admin.info.resets-left", "[number]", resets, "[total]", total);
// Show team members
showMembers(user);
}
Vector location = center.toVector();
user.sendMessage("commands.admin.info.island-location", "[xyz]", Util.xyz(location));

View File

@ -391,7 +391,22 @@ public class IslandsManager {
}
/**
* Returns a set of island member UUID's for the island of playerUUID
* Returns a set of island member UUID's for the island of playerUUID of rank <tt>minimumRank</tt>
* and above.
* This includes the owner of the island. If there is no island, this set will be empty.
*
* @param world - world to check
* @param playerUUID - the player's UUID
* @param minimumRank - the minimum rank to be included in the set.
* @return Set of team UUIDs
*/
public Set<UUID> getMembers(World world, UUID playerUUID, int minimumRank) {
return islandCache.getMembers(world, playerUUID, minimumRank);
}
/**
* Returns a set of island member UUID's for the island of playerUUID.
* Only includes players of rank {@link RanksManager.MEMBER_RANK} and above.
* This includes the owner of the island. If there is no island, this set will be empty.
*
* @param world - world to check
@ -399,7 +414,7 @@ public class IslandsManager {
* @return Set of team UUIDs
*/
public Set<UUID> getMembers(World world, UUID playerUUID) {
return islandCache.getMembers(world, playerUUID);
return islandCache.getMembers(world, playerUUID, RanksManager.MEMBER_RANK);
}
/**

View File

@ -161,14 +161,15 @@ public class IslandCache {
/**
* @param world world to check
* @param uuid uuid of player to check
* @param minimumRank minimum rank requested
* @return set of UUID's of island members. If there is no island, this set will be empty
*/
@NonNull
public Set<UUID> getMembers(@NonNull World world, @NonNull UUID uuid) {
public Set<UUID> getMembers(@NonNull World world, @NonNull UUID uuid, @NonNull int minimumRank) {
islandsByUUID.putIfAbsent(Util.getWorld(world), new HashMap<>());
Island island = islandsByUUID.get(Util.getWorld(world)).get(uuid);
if (island != null) {
return island.getMemberSet();
return island.getMemberSet(minimumRank);
}
return new HashSet<>(0);
}

View File

@ -623,7 +623,7 @@ public class IslandsManagerTest {
members.add(UUID.randomUUID());
members.add(UUID.randomUUID());
members.add(UUID.randomUUID());
when(islandCache.getMembers(Mockito.any(), Mockito.any())).thenReturn(members);
when(islandCache.getMembers(Mockito.any(), Mockito.any(), Mockito.anyInt())).thenReturn(members);
IslandsManager im = new IslandsManager(plugin);
im.setIslandCache(islandCache);
assertEquals(members, im.getMembers(world, UUID.randomUUID()));

View File

@ -29,6 +29,7 @@ import world.bentobox.bentobox.BentoBox;
import world.bentobox.bentobox.database.objects.Island;
import world.bentobox.bentobox.managers.IslandWorldManager;
import world.bentobox.bentobox.managers.IslandsManager;
import world.bentobox.bentobox.managers.RanksManager;
import world.bentobox.bentobox.util.Util;
@RunWith(PowerMockRunner.class)
@ -76,6 +77,7 @@ public class IslandCacheTest {
members.add(UUID.randomUUID());
members.add(UUID.randomUUID());
members.add(UUID.randomUUID());
when(island.getMemberSet(Mockito.anyInt())).thenReturn(members.build());
when(island.getMemberSet()).thenReturn(members.build());
when(island.getMinX()).thenReturn(-200);
when(island.getMinZ()).thenReturn(-200);
@ -209,10 +211,10 @@ public class IslandCacheTest {
IslandCache ic = new IslandCache();
ic.addIsland(island);
assertTrue(ic.getMembers(world, null).isEmpty());
assertTrue(ic.getMembers(world, UUID.randomUUID()).isEmpty());
assertFalse(ic.getMembers(world, island.getOwner()).isEmpty());
assertEquals(3, ic.getMembers(world, island.getOwner()).size());
assertTrue(ic.getMembers(world, null, RanksManager.MEMBER_RANK).isEmpty());
assertTrue(ic.getMembers(world, UUID.randomUUID(), RanksManager.MEMBER_RANK).isEmpty());
assertFalse(ic.getMembers(world, island.getOwner(), RanksManager.MEMBER_RANK).isEmpty());
assertEquals(3, ic.getMembers(world, island.getOwner(), RanksManager.MEMBER_RANK).size());
}
@Test