Add logging, prepare for import/export system

This commit is contained in:
Luck
2016-08-15 01:51:36 +02:00
Unverified
parent fbf062933f
commit e216c235ce
139 changed files with 4240 additions and 1439 deletions
@@ -27,11 +27,12 @@ import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import me.lucko.luckperms.LuckPermsPlugin;
import me.lucko.luckperms.constants.Patterns;
import me.lucko.luckperms.core.PermissionHolder;
import me.lucko.luckperms.exceptions.ObjectAlreadyHasException;
import me.lucko.luckperms.exceptions.ObjectLacksException;
import me.lucko.luckperms.groups.Group;
import me.lucko.luckperms.utils.Patterns;
import me.lucko.luckperms.utils.PermissionHolder;
import me.lucko.luckperms.utils.Identifiable;
import java.util.List;
import java.util.Map;
@@ -40,7 +41,7 @@ import java.util.stream.Collectors;
@ToString(of = {"uuid"})
@EqualsAndHashCode(of = {"uuid"}, callSuper = false)
public abstract class User extends PermissionHolder {
public abstract class User extends PermissionHolder implements Identifiable<UUID> {
/**
* The users Mojang UUID
@@ -319,4 +320,9 @@ public abstract class User extends PermissionHolder {
.map(s -> Patterns.DOT.split(s, 2)[1])
.collect(Collectors.toList());
}
@Override
public UUID getId() {
return uuid;
}
}
@@ -22,77 +22,38 @@
package me.lucko.luckperms.users;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import me.lucko.luckperms.LuckPermsPlugin;
import me.lucko.luckperms.exceptions.ObjectAlreadyHasException;
import me.lucko.luckperms.utils.AbstractManager;
import me.lucko.luckperms.utils.Identifiable;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
@RequiredArgsConstructor
public abstract class UserManager {
/**
* A {@link Map} containing all online/loaded users
*/
@Getter
private final Map<UUID, User> users = new ConcurrentHashMap<>();
/**
* Reference to main plugin instance
*/
public abstract class UserManager extends AbstractManager<UUID, User> {
private final LuckPermsPlugin plugin;
/**
* Get a user object by UUID
* @param uuid The uuid to search by
* @return a {@link User} object if the user is loaded, returns null if the user is not loaded
*/
public User getUser(UUID uuid) {
return users.get(uuid);
}
/**
* Get a user object by name
* @param name The name to search by
* @return a {@link User} object if the user is loaded, returns null if the user is not loaded
*/
@SuppressWarnings("OptionalGetWithoutIsPresent")
public User getUser(String name) {
public User get(String name) {
try {
return users.values().stream().filter(u -> u.getName().equalsIgnoreCase(name)).limit(1).findAny().get();
return objects.values().stream().filter(u -> u.getName().equalsIgnoreCase(name)).limit(1).findAny().get();
} catch (NoSuchElementException e) {
return null;
}
}
/**
* Add a user to the users map
* @param user the user to add
*/
public void setUser(User user) {
users.put(user.getUuid(), user);
}
/**
* Updates (or sets if the user wasn't already loaded) a user in the users map
* @param user The user to update or set
*/
public void updateOrSetUser(User user) {
if (!isLoaded(user.getUuid())) {
// The user isn't already loaded, so we can just add
users.put(user.getUuid(), user);
// They're probably not online, but in case they are...
user.refreshPermissions();
} else {
// Override the user's current loaded nodes, and force a refresh
users.get(user.getUuid()).setNodes(user.getNodes());
users.get(user.getUuid()).setPrimaryGroup(user.getPrimaryGroup());
users.get(user.getUuid()).refreshPermissions();
}
@Override
protected void copy(User from, User to) {
to.setNodes(from.getNodes());
to.setPrimaryGroup(from.getPrimaryGroup());
to.refreshPermissions();
}
/**
@@ -108,32 +69,10 @@ public abstract class UserManager {
}
/**
* Check to see if a user is loaded or not
* @param uuid the UUID of the user
* @return true if the user is loaded
*/
public boolean isLoaded(UUID uuid) {
return users.containsKey(uuid);
}
/**
* Removes and unloads any permission links of the user from the internal storage
* @param user The user to unload
*/
public abstract void unloadUser(User user);
/**
* Checks to see if the user is online, and if they are not, runs {@link #unloadUser(User)}
* Checks to see if the user is online, and if they are not, runs {@link #unload(Identifiable)}
* @param user The user to be cleaned up
*/
public abstract void cleanupUser(User user);
/**
* Makes a new {@link User} object
* @param uuid The UUID of the user
* @return a new {@link User} object
*/
public abstract User makeUser(UUID uuid);
public abstract void cleanup(User user);
/**
* Makes a new {@link User} object
@@ -141,7 +80,7 @@ public abstract class UserManager {
* @param username The username of the user
* @return a new {@link User} object
*/
public abstract User makeUser(UUID uuid, String username);
public abstract User make(UUID uuid, String username);
/**
* Reloads the data of all online users