package io.github.lucaseasedup.logit.command.hub; import static io.github.lucaseasedup.logit.message.MessageHelper.sendMsg; import static io.github.lucaseasedup.logit.message.MessageHelper.t; import io.github.lucaseasedup.logit.account.Account; import io.github.lucaseasedup.logit.command.CommandAccess; import io.github.lucaseasedup.logit.command.CommandHelpLine; import io.github.lucaseasedup.logit.storage.SelectorConstant; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; import org.apache.commons.lang.StringUtils; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; public final class StatsHubCommand extends HubCommand { public StatsHubCommand() { super("stats", new String[] {}, new CommandAccess.Builder() .permission("logit.stats") .playerOnly(false) .runningCoreRequired(true) .build(), new CommandHelpLine.Builder() .command("logit stats") .descriptionLabel("subCmdDesc.stats") .build()); } @Override public void execute(CommandSender sender, String[] args) { List<Account> accounts = getAccountManager().selectAccounts( Arrays.asList( keys().username(), keys().ip() ), new SelectorConstant(true) ); Set<String> uniqueIps = null; if (accounts != null) { uniqueIps = new HashSet<>(); for (Account account : accounts) { String ip = account.getIp(); if (!StringUtils.isBlank(ip)) { uniqueIps.add(ip); } } } int backupCount = getBackupManager().getBackups().length; if (sender instanceof Player) { sendMsg(sender, ""); } String accountsStat = (accounts != null) ? String.valueOf(accounts.size()) : "?"; String uniqueIpsStat = (uniqueIps != null) ? String.valueOf(uniqueIps.size()) : "?"; sendMsg(sender, t("stats.header")); sendMsg(sender, t("stats.accountCount") .replace("{0}", accountsStat)); sendMsg(sender, t("stats.uniqueIps") .replace("{0}", uniqueIpsStat)); sendMsg(sender, t("stats.backupCount") .replace("{0}", String.valueOf(backupCount))); if (getConfig("config.yml").getBoolean("stats.enabled")) { int logins = getConfig("stats.yml").getInt("logins"); int passwordChanges = getConfig("stats.yml").getInt("passwordChanges"); sendMsg(sender, t("stats.logins") .replace("{0}", String.valueOf(logins))); sendMsg(sender, t("stats.passwordChanges") .replace("{0}", String.valueOf(passwordChanges))); } if (sender instanceof Player) { sendMsg(sender, ""); } } }