package me.StevenLawson.TotalFreedomMod.admin; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.UUID; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; import me.StevenLawson.TotalFreedomMod.config.MainConfig; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.apache.commons.lang3.StringUtils; import org.bukkit.configuration.ConfigurationSection; public class Admin { private final UUID uuid; private final boolean isSeniorAdmin; private final boolean isTelnetAdmin; private final List consoleAliases; private final List ips; private String lastLoginName; private String loginMessage; private Date lastLogin; private boolean isActivated; public Admin(UUID uuid, String lastLoginName, Date lastLogin, String loginMessage, boolean isTelnetAdmin, boolean isSeniorAdmin, boolean isActivated) { this.uuid = uuid; this.lastLoginName = lastLoginName; this.ips = new ArrayList(); this.lastLogin = lastLogin; this.loginMessage = loginMessage; this.isTelnetAdmin = isTelnetAdmin; this.isSeniorAdmin = isSeniorAdmin; this.consoleAliases = new ArrayList(); this.isActivated = isActivated; } public Admin(UUID uuid, ConfigurationSection section) { this.uuid = uuid; this.lastLoginName = section.getString("last_login_name"); this.ips = section.getStringList("ips"); this.lastLogin = Utilities.stringToDate( section.getString("last_login", Utilities.dateToString(new Date(0L)))); this.loginMessage = section.getString("custom_login_message", ""); this.isSeniorAdmin = section.getBoolean("is_senior_admin", false); this.isTelnetAdmin = section.getBoolean("is_telnet_admin", false); this.consoleAliases = section.getStringList("console_aliases"); this.isActivated = section.getBoolean("is_activated", true); for (Iterator it = MainConfig.getList(ConfigurationEntry.NOADMIN_IPS).iterator(); it.hasNext(); ) { ips.remove((String) it.next()); } } @Override public String toString() { final StringBuilder output = new StringBuilder(); final ArrayList fuzziedIps = new ArrayList<>(); for (String ip : ips) { fuzziedIps.add(Utilities.getFuzzyIp(ip)); } output.append("UUID: ").append(uuid.toString()).append("\n"); output.append("- Last Login Name: ").append(lastLoginName).append("\n"); output.append("- IPs: ").append(StringUtils.join(fuzziedIps, ", ")).append("\n"); output.append("- Last Login: ").append(Utilities.dateToString(lastLogin)).append("\n"); output.append("- Custom Login Message: ").append(loginMessage).append("\n"); output.append("- Is Senior Admin: ").append(isSeniorAdmin).append("\n"); output.append("- Is Telnet Admin: ").append(isTelnetAdmin).append("\n"); output.append("- Console Aliases: ").append(StringUtils.join(consoleAliases, ", ")) .append("\n"); output.append("- Is Activated: ").append(isActivated); return output.toString(); } public UUID getUniqueId() { return uuid; } public String getLastLoginName() { return lastLoginName; } public void setLastLoginName(String lastLoginName) { this.lastLoginName = lastLoginName; } public List getIps() { return Collections.unmodifiableList(ips); } public void addIp(String ip) { if (!ips.contains(ip)) { ips.add(ip); } } public void addIps(List ips) { for (String ip : ips) { addIp(ip); } } public void removeIp(String ip) { ips.remove(ip); } public void clearIPs() { ips.clear(); } public Date getLastLogin() { return lastLogin; } public void setLastLogin(Date lastLogin) { this.lastLogin = lastLogin; } public String getCustomLoginMessage() { return loginMessage; } public void setCustomLoginMessage(String newLoginMessage) { this.loginMessage = newLoginMessage; } public boolean isSeniorAdmin() { return isSeniorAdmin; } public boolean isTelnetAdmin() { return isTelnetAdmin; } public List getConsoleAliases() { return Collections.unmodifiableList(consoleAliases); } public boolean isActivated() { return isActivated; } public void setActivated(boolean isActivated) { this.isActivated = isActivated; } }