TFM-4.3-Reloaded/src/main/java/me/StevenLawson/TotalFreedomMod/admin/Admin.java
2022-03-31 03:16:40 +01:00

153 lines
4.2 KiB
Java

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<String> consoleAliases;
private final List<String> 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<String>();
this.lastLogin = lastLogin;
this.loginMessage = loginMessage;
this.isTelnetAdmin = isTelnetAdmin;
this.isSeniorAdmin = isSeniorAdmin;
this.consoleAliases = new ArrayList<String>();
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<String> 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<String> getIps() {
return Collections.unmodifiableList(ips);
}
public void addIp(String ip) {
if (!ips.contains(ip)) {
ips.add(ip);
}
}
public void addIps(List<String> 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<String> getConsoleAliases() {
return Collections.unmodifiableList(consoleAliases);
}
public boolean isActivated() {
return isActivated;
}
public void setActivated(boolean isActivated) {
this.isActivated = isActivated;
}
}