TotalFreedomMod/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java

185 lines
5.1 KiB
Java
Raw Normal View History

package me.totalfreedom.totalfreedommod.admin;
2020-06-30 07:25:38 +00:00
import java.sql.ResultSet;
import java.sql.SQLException;
2020-08-08 05:51:09 +00:00
import java.util.ArrayList;
import java.util.Date;
2020-05-29 10:14:21 +00:00
import java.util.HashMap;
import java.util.List;
2020-05-29 10:14:21 +00:00
import java.util.Map;
import lombok.Getter;
import lombok.Setter;
2017-08-01 19:59:24 +00:00
import me.totalfreedom.totalfreedommod.LogViewer.LogsRegistrationMode;
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
import me.totalfreedom.totalfreedommod.rank.Rank;
2020-06-30 07:25:38 +00:00
import me.totalfreedom.totalfreedommod.util.FLog;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.entity.Player;
2020-05-29 10:14:21 +00:00
public class Admin
{
@Getter
@Setter
private String name;
@Getter
private boolean active = true;
@Getter
@Setter
private Rank rank = Rank.SUPER_ADMIN;
@Getter
2020-08-08 05:51:09 +00:00
private final List<String> ips = new ArrayList<>();
@Getter
@Setter
private Date lastLogin = new Date();
@Getter
@Setter
private String loginMessage = null;
2017-12-29 18:12:47 +00:00
@Getter
@Setter
2018-04-19 14:29:19 +00:00
private Boolean commandSpy = false;
@Getter
@Setter
2018-05-22 23:01:24 +00:00
private Boolean potionSpy = false;
@Getter
@Setter
2018-06-01 22:39:52 +00:00
private String acFormat = null;
@Getter
@Setter
2018-07-24 06:54:19 +00:00
private Boolean oldTags = false;
2018-06-28 18:06:13 +00:00
@Getter
@Setter
2020-08-08 05:51:09 +00:00
private String ampUsername = null;
public Admin(Player player)
{
this.name = player.getName();
2020-07-01 01:51:06 +00:00
this.ips.add(FUtil.getIp(player));
}
2020-06-30 07:25:38 +00:00
public Admin(ResultSet resultSet)
{
2020-06-30 07:25:38 +00:00
try
{
this.name = resultSet.getString("username");
this.active = resultSet.getBoolean("active");
this.rank = Rank.findRank(resultSet.getString("rank"));
this.ips.clear();
this.ips.addAll(FUtil.stringToList(resultSet.getString("ips")));
this.lastLogin = new Date(resultSet.getLong("last_login"));
this.loginMessage = resultSet.getString("login_message");
this.commandSpy = resultSet.getBoolean("command_spy");
this.potionSpy = resultSet.getBoolean("potion_spy");
this.acFormat = resultSet.getString("ac_format");
this.oldTags = resultSet.getBoolean("old_tags");
2020-08-08 05:51:09 +00:00
this.ampUsername = resultSet.getString("amp_username");
2020-06-30 07:25:38 +00:00
}
catch (SQLException e)
{
FLog.severe("Failed to load admin: " + e.getMessage());
}
}
@Override
public String toString()
{
final StringBuilder output = new StringBuilder();
output.append("Admin: ").append(name).append("\n")
.append("- IPs: ").append(StringUtils.join(ips, ", ")).append("\n")
.append("- Last Login: ").append(FUtil.dateToString(lastLogin)).append("\n")
.append("- Custom Login Message: ").append(loginMessage).append("\n")
.append("- Rank: ").append(rank.getName()).append("\n")
2017-12-29 18:12:47 +00:00
.append("- Is Active: ").append(active).append("\n")
.append("- Potion Spy: ").append(potionSpy).append("\n")
.append("- Admin Chat Format: ").append(acFormat).append("\n")
.append("- Old Tags: ").append(oldTags).append("\n")
2020-08-08 05:51:09 +00:00
.append("- AMP Username: ").append(ampUsername).append("\n");
return output.toString();
}
2020-05-29 10:14:21 +00:00
public Map<String, Object> toSQLStorable()
{
Map<String, Object> map = new HashMap<String, Object>()
{{
put("username", name);
put("active", active);
put("rank", rank.toString());
put("ips", FUtil.listToString(ips));
put("last_login", lastLogin.getTime());
put("login_message", loginMessage);
put("command_spy", commandSpy);
put("potion_spy", potionSpy);
put("ac_format", acFormat);
put("old_tags", oldTags);
2020-08-08 05:51:09 +00:00
put("amp_username", ampUsername);
2020-05-29 10:14:21 +00:00
}};
return map;
}
public boolean hasLoginMessage()
{
return loginMessage != null && !loginMessage.isEmpty();
}
// Util IP methods
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)
{
if (ips.contains(ip))
{
ips.remove(ip);
}
}
public void clearIPs()
{
ips.clear();
}
2017-08-01 19:59:24 +00:00
public void setActive(boolean active)
{
this.active = active;
final TotalFreedomMod plugin = TotalFreedomMod.plugin();
if (!active)
{
if (getRank().isAtLeast(Rank.TELNET_ADMIN))
{
if (plugin.btb != null)
{
plugin.btb.killTelnetSessions(getName());
}
}
plugin.lv.updateLogsRegistration(null, getName(), LogsRegistrationMode.DELETE);
}
}
public boolean isValid()
{
2020-05-29 10:14:21 +00:00
return name != null
&& rank != null
&& !ips.isEmpty()
&& lastLogin != null;
}
}