plan reload/disable/info commands

This commit is contained in:
Risto Lahtela 2020-05-16 14:17:03 +03:00
parent aec5a552dd
commit 326e07a022
19 changed files with 102 additions and 206 deletions

View File

@ -16,15 +16,12 @@
*/
package com.djrapitops.plan.commands;
import com.djrapitops.plan.commands.subcommands.*;
import com.djrapitops.plan.settings.Permissions;
import com.djrapitops.plan.settings.locale.Locale;
import com.djrapitops.plan.settings.locale.lang.DeepHelpLang;
import com.djrapitops.plugin.command.ColorScheme;
import com.djrapitops.plugin.command.CommandNode;
import com.djrapitops.plugin.command.CommandType;
import com.djrapitops.plugin.command.TreeCmdNode;
import dagger.Lazy;
import javax.inject.Inject;
import javax.inject.Singleton;
@ -39,40 +36,20 @@ import javax.inject.Singleton;
@Singleton
public class OldPlanCommand extends TreeCmdNode {
private final QInspectCommand qInspectCommand;
private final SearchCommand searchCommand;
private final Lazy<WebUserCommand> webUserCommand;
private final InfoCommand infoCommand;
private final ReloadCommand reloadCommand;
private final Lazy<ManageCommand> manageCommand;
private boolean commandsRegistered;
@Inject
public OldPlanCommand(
ColorScheme colorScheme,
Locale locale,
Locale locale
// Group 1
QInspectCommand qInspectCommand,
SearchCommand searchCommand,
// Group 2
Lazy<WebUserCommand> webUserCommand,
// Group 3
InfoCommand infoCommand,
ReloadCommand reloadCommand,
Lazy<ManageCommand> manageCommand
) {
super("plan", "", CommandType.CONSOLE, null);
commandsRegistered = false;
this.qInspectCommand = qInspectCommand;
this.searchCommand = searchCommand;
this.webUserCommand = webUserCommand;
this.infoCommand = infoCommand;
this.reloadCommand = reloadCommand;
this.manageCommand = manageCommand;
getHelpCommand().setPermission(Permissions.HELP.getPermission());
setDefaultCommand("inspect");
setColorScheme(colorScheme);
@ -83,20 +60,6 @@ public class OldPlanCommand extends TreeCmdNode {
if (commandsRegistered) {
return;
}
CommandNode[] analyticsGroup = {
qInspectCommand,
searchCommand
};
CommandNode[] webGroup = {
webUserCommand.get()
};
CommandNode[] manageGroup = {
infoCommand,
reloadCommand,
manageCommand.get()
};
setNodeGroups(analyticsGroup, webGroup, manageGroup);
commandsRegistered = true;
}
}

View File

@ -18,6 +18,7 @@ package com.djrapitops.plan.commands;
import com.djrapitops.plan.commands.subcommands.Confirmation;
import com.djrapitops.plan.commands.subcommands.LinkCommands;
import com.djrapitops.plan.commands.subcommands.PluginStatusCommands;
import com.djrapitops.plan.commands.subcommands.RegistrationCommands;
import com.djrapitops.plan.commands.use.Arguments;
import com.djrapitops.plan.commands.use.CMDSender;
@ -30,6 +31,7 @@ import com.djrapitops.plugin.command.ColorScheme;
import com.djrapitops.plugin.logging.L;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
import java.util.Collections;
import java.util.List;
@ -37,27 +39,33 @@ import java.util.List;
@Singleton
public class PlanCommand {
private final String commandName;
private final Locale locale;
private final ColorScheme colors;
private final Confirmation confirmation;
private final LinkCommands linkCommands;
private final RegistrationCommands registrationCommands;
private final PluginStatusCommands statusCommands;
private final ErrorLogger errorLogger;
@Inject
public PlanCommand(
@Named("mainCommandName") String commandName,
Locale locale,
ColorScheme colors,
Confirmation confirmation,
LinkCommands linkCommands,
RegistrationCommands registrationCommands,
PluginStatusCommands statusCommands,
ErrorLogger errorLogger
) {
this.commandName = commandName;
this.locale = locale;
this.colors = colors;
this.confirmation = confirmation;
this.linkCommands = linkCommands;
this.registrationCommands = registrationCommands;
this.statusCommands = statusCommands;
this.errorLogger = errorLogger;
}
@ -71,17 +79,23 @@ public class PlanCommand {
public CommandWithSubcommands build() {
return CommandWithSubcommands.builder()
.alias("plan")
.alias(commandName)
.colorScheme(colors)
.subcommand(serverCommand())
.subcommand(serversCommand())
.subcommand(playerCommand())
.subcommand(playersCommand())
.subcommand(networkCommand())
.subcommand(registerCommand())
.subcommand(unregisterCommand())
.subcommand(acceptCommand())
.subcommand(cancelCommand())
.subcommand(infoCommand())
.subcommand(reloadCommand())
.subcommand(disableCommand())
.exceptionHandler(this::handleException)
.build();
}
@ -167,7 +181,7 @@ public class PlanCommand {
.optionalArgument("username", "Username of another user. If not specified linked user is used.")
.description("Unregister user of Plan website")
.inDepthDescription("Use without arguments to unregister linked user, or with username argument to unregister another user.")
.onCommand(((sender, arguments) -> registrationCommands.onUnregister("plan", sender, arguments)))
.onCommand(((sender, arguments) -> registrationCommands.onUnregister(commandName, sender, arguments)))
.build();
}
@ -184,4 +198,34 @@ public class PlanCommand {
.onCommand(confirmation::onCancelCommand)
.build();
}
private Subcommand infoCommand() {
return Subcommand.builder()
.aliases("info")
.requirePermission("plan.info")
.description("Information about the plugin")
.inDepthDescription("Display the current status of the plugin.")
.onCommand(statusCommands::onInfo)
.build();
}
private Subcommand reloadCommand() {
return Subcommand.builder()
.aliases("reload")
.requirePermission("plan.reload")
.description("Reload the plugin")
.inDepthDescription("Disable and enable the plugin to reload any changes in config.")
.onCommand(statusCommands::onReload)
.build();
}
private Subcommand disableCommand() {
return Subcommand.builder()
.aliases("disable")
.requirePermission("plan.disable")
.description("Disable the plugin")
.inDepthDescription("Disable the plugin until next reload/restart.")
.onCommand(statusCommands::onDisable)
.build();
}
}

View File

@ -16,8 +16,6 @@
*/
package com.djrapitops.plan.commands;
import com.djrapitops.plan.commands.subcommands.DisableCommand;
import com.djrapitops.plan.commands.subcommands.ReloadCommand;
import com.djrapitops.plan.commands.subcommands.WebUserCommand;
import com.djrapitops.plan.commands.subcommands.manage.ManageRawDataCommand;
import com.djrapitops.plan.commands.subcommands.manage.ManageUninstalledCommand;
@ -46,8 +44,6 @@ public class PlanProxyCommand extends TreeCmdNode {
private final Lazy<WebUserCommand> webUserCommand;
private final ManageRawDataCommand rawDataCommand;
private final ReloadCommand reloadCommand;
private final DisableCommand disableCommand;
private final ManageUninstalledCommand uninstalledCommand;
private boolean commandsRegistered;
@ -62,9 +58,7 @@ public class PlanProxyCommand extends TreeCmdNode {
Lazy<WebUserCommand> webUserCommand,
// Group 3
ManageRawDataCommand rawDataCommand,
ManageUninstalledCommand uninstalledCommand,
ReloadCommand reloadCommand,
DisableCommand disableCommand
ManageUninstalledCommand uninstalledCommand
) {
super(mainCommandName, Permissions.MANAGE.getPermission(), CommandType.CONSOLE, null);
this.uninstalledCommand = uninstalledCommand;
@ -73,8 +67,6 @@ public class PlanProxyCommand extends TreeCmdNode {
this.webUserCommand = webUserCommand;
this.rawDataCommand = rawDataCommand;
this.reloadCommand = reloadCommand;
this.disableCommand = disableCommand;
getHelpCommand().setPermission(Permissions.MANAGE.getPermission());
setColorScheme(colorScheme);
@ -99,8 +91,8 @@ public class PlanProxyCommand extends TreeCmdNode {
CommandNode[] manageGroup = {
rawDataCommand,
uninstalledCommand,
reloadCommand,
disableCommand
//reloadCommand,
//disableCommand
};
setNodeGroups(analyticsGroup, webGroup, manageGroup);
commandsRegistered = true;

View File

@ -1,51 +0,0 @@
/*
* This file is part of Player Analytics (Plan).
*
* Plan is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License v3 as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Plan is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Plan. If not, see <https://www.gnu.org/licenses/>.
*/
package com.djrapitops.plan.commands.subcommands;
import com.djrapitops.plan.PlanPlugin;
import com.djrapitops.plan.settings.locale.Locale;
import com.djrapitops.plan.settings.locale.lang.CmdHelpLang;
import com.djrapitops.plan.settings.locale.lang.CommandLang;
import com.djrapitops.plan.settings.locale.lang.DeepHelpLang;
import com.djrapitops.plugin.command.CommandNode;
import com.djrapitops.plugin.command.CommandType;
import com.djrapitops.plugin.command.Sender;
import javax.inject.Inject;
public class DisableCommand extends CommandNode {
private final Locale locale;
private final PlanPlugin plugin;
@Inject
public DisableCommand(PlanPlugin plugin, Locale locale) {
super("disable", "plan.reload", CommandType.ALL);
this.plugin = plugin;
this.locale = locale;
setShortHelp(locale.getString(CmdHelpLang.DISABLE));
setInDepthHelp(locale.getArray(DeepHelpLang.DISABLE));
}
@Override
public void onCommand(Sender sender, String commandLabel, String[] args) {
plugin.onDisable();
sender.sendMessage(locale.getString(CommandLang.DISABLE_DISABLED));
}
}

View File

@ -17,52 +17,66 @@
package com.djrapitops.plan.commands.subcommands;
import com.djrapitops.plan.PlanPlugin;
import com.djrapitops.plan.settings.Permissions;
import com.djrapitops.plan.commands.use.Arguments;
import com.djrapitops.plan.commands.use.CMDSender;
import com.djrapitops.plan.settings.locale.Locale;
import com.djrapitops.plan.settings.locale.lang.CmdHelpLang;
import com.djrapitops.plan.settings.locale.lang.CommandLang;
import com.djrapitops.plan.settings.locale.lang.GenericLang;
import com.djrapitops.plan.storage.database.DBSystem;
import com.djrapitops.plan.storage.database.Database;
import com.djrapitops.plan.storage.database.queries.objects.ServerQueries;
import com.djrapitops.plan.utilities.logging.ErrorContext;
import com.djrapitops.plan.utilities.logging.ErrorLogger;
import com.djrapitops.plan.version.VersionChecker;
import com.djrapitops.plugin.command.CommandNode;
import com.djrapitops.plugin.command.CommandType;
import com.djrapitops.plugin.command.Sender;
import com.djrapitops.plugin.logging.L;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* This SubCommand is used to view the version and the database type in use.
*
* @author Rsl1122
*/
public class InfoCommand extends CommandNode {
@Singleton
public class PluginStatusCommands {
private final PlanPlugin plugin;
private final Locale locale;
private final DBSystem dbSystem;
private final VersionChecker versionChecker;
private final ErrorLogger errorLogger;
@Inject
public InfoCommand(
public PluginStatusCommands(
PlanPlugin plugin,
Locale locale,
DBSystem dbSystem,
VersionChecker versionChecker
VersionChecker versionChecker,
ErrorLogger errorLogger
) {
super("info", Permissions.INFO.getPermission(), CommandType.CONSOLE);
this.plugin = plugin;
this.locale = locale;
this.dbSystem = dbSystem;
this.versionChecker = versionChecker;
setShortHelp(locale.get(CmdHelpLang.INFO).toString());
this.errorLogger = errorLogger;
}
@Override
public void onCommand(Sender sender, String commandLabel, String[] args) {
public void onReload(CMDSender sender, Arguments arguments) {
new Thread(() -> {
try {
plugin.reloadPlugin(true);
sender.send(locale.getString(CommandLang.RELOAD_COMPLETE));
} catch (Exception e) {
errorLogger.log(L.CRITICAL, e, ErrorContext.builder().related(sender, "reload", Thread.currentThread().getName()).build());
sender.send(locale.getString(CommandLang.RELOAD_FAILED));
} finally {
Thread.currentThread().interrupt();
}
}, "Plan Reload Thread").start();
}
public void onDisable(CMDSender sender, Arguments arguments) {
plugin.onDisable();
sender.send(locale.getString(CommandLang.DISABLE_DISABLED));
}
public void onInfo(CMDSender sender, Arguments arguments) {
String yes = locale.getString(GenericLang.YES);
String no = locale.getString(GenericLang.NO);
@ -82,7 +96,6 @@ public class InfoCommand extends CommandNode {
"",
">"
};
sender.sendMessage(messages);
sender.send(messages);
}
}

View File

@ -1,71 +0,0 @@
/*
* This file is part of Player Analytics (Plan).
*
* Plan is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License v3 as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Plan is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Plan. If not, see <https://www.gnu.org/licenses/>.
*/
package com.djrapitops.plan.commands.subcommands;
import com.djrapitops.plan.PlanPlugin;
import com.djrapitops.plan.settings.Permissions;
import com.djrapitops.plan.settings.locale.Locale;
import com.djrapitops.plan.settings.locale.lang.CmdHelpLang;
import com.djrapitops.plan.settings.locale.lang.CommandLang;
import com.djrapitops.plan.settings.locale.lang.DeepHelpLang;
import com.djrapitops.plan.utilities.logging.ErrorLogger;
import com.djrapitops.plugin.command.CommandNode;
import com.djrapitops.plugin.command.CommandType;
import com.djrapitops.plugin.command.Sender;
import com.djrapitops.plugin.logging.L;
import javax.inject.Inject;
/**
* This SubCommand is used to reload the plugin.
*
* @author Rsl1122
*/
public class ReloadCommand extends CommandNode {
private final PlanPlugin plugin;
private final Locale locale;
private final ErrorLogger errorLogger;
@Inject
public ReloadCommand(PlanPlugin plugin, Locale locale, ErrorLogger errorLogger) {
super("reload", Permissions.RELOAD.getPermission(), CommandType.CONSOLE);
this.plugin = plugin;
this.locale = locale;
this.errorLogger = errorLogger;
setShortHelp(locale.getString(CmdHelpLang.RELOAD));
setInDepthHelp(locale.getArray(DeepHelpLang.RELOAD));
}
@Override
public void onCommand(Sender sender, String commandLabel, String[] args) {
new Thread(() -> {
try {
plugin.reloadPlugin(true);
sender.sendMessage(locale.getString(CommandLang.RELOAD_COMPLETE));
} catch (Exception e) {
errorLogger.log(L.CRITICAL, this.getClass(), e);
sender.sendMessage(locale.getString(CommandLang.RELOAD_FAILED));
} finally {
Thread thread = Thread.currentThread();
thread.interrupt();
}
}, "Plan Reload Thread").start();
}
}

View File

@ -48,6 +48,12 @@ public interface CMDSender {
void send(String message);
default void send(String... messages) {
for (String message : messages) {
send(message);
}
}
ChatFormatter getFormatter();
}

View File

@ -57,7 +57,7 @@ public enum CommandLang implements Lang {
INFO_VERSION("Cmd Info - Version", " §2Version: §f${0}"),
INFO_UPDATE("Cmd Info - Update", " §2Update Available: §f${0}"),
INFO_DATABASE("Cmd Info - Database", " §2Active Database: §f${0}"),
INFO_DATABASE("Cmd Info - Database", " §2Current Database: §f${0}"),
INFO_PROXY_CONNECTION("Cmd Info - Bungee Connection", " §2Connected to Proxy: §f${0}"),
QINSPECT_ACTIVITY_INDEX("Cmd Qinspect - Activity Index", " §2Activity Index: §f${0} | ${1}"),

View File

@ -22,7 +22,7 @@ Cmd Header - Search || §f»§2 玩家统计 - 搜
Cmd Header - Servers || > §2服务器
Cmd Header - Web Users || > §2${0} 个网页用户
Cmd Info - Bungee Connection || §2已连接至Bungee§f${0}
Cmd Info - Database || §2可用数据库§f${0}
Cmd Info - Database || §2当前数据库§f${0}
Cmd Info - Reload Complete || §a成功重载插件
Cmd Info - Reload Failed || §c重载插件时发生错误建议重新启动服务器。
Cmd Info - Update || §2更新可用§f${0}

View File

@ -19,7 +19,7 @@ Cmd Header - Search || > §2${0} Ergebnisse für §f
Cmd Header - Servers || > §2Server
Cmd Header - Web Users || > §2${0} Accounts
Cmd Info - Bungee Connection || §2Verbunden mit Bungee: §f${0}
Cmd Info - Database || §2Genutzte Datenbank: §f${0}
Cmd Info - Database || §2Aktuelle Datenbank: §f${0}
Cmd Info - Reload Complete || §aReload erfolgreich.
Cmd Info - Reload Failed || §cBeim Reload ist etwas schief gelaufen. Es wird empfohlen, den Server neuzustarten.
Cmd Info - Update || §2Update verfügbar: §f${0}

View File

@ -19,7 +19,7 @@ Cmd Header - Search || > §2${0} Results for §f${1}
Cmd Header - Servers || > §2Servers
Cmd Header - Web Users || > §2${0} Web Users
Cmd Info - Bungee Connection || §2Connected to Proxy: §f${0}
Cmd Info - Database || §2Active Database: §f${0}
Cmd Info - Database || §2Current Database: §f${0}
Cmd Info - Reload Complete || §aReload Complete
Cmd Info - Reload Failed || §cSomething went wrong during reload of the plugin, a restart is recommended.
Cmd Info - Update || §2Update Available: §f${0}

View File

@ -19,7 +19,7 @@ Cmd Header - Search || > §2${0} Resultados para §f
Cmd Header - Servers || > §2Servidores
Cmd Header - Web Users || > §2${0} Usuarios web
Cmd Info - Bungee Connection || §2Conectado al Proxy: §f${0}
Cmd Info - Database || §2Base de datos activas: §f${0}
Cmd Info - Database || §2Base de datos actual: §f${0}
Cmd Info - Reload Complete || §aRecarga completada
Cmd Info - Reload Failed || §cUn error ocurrió intentando recargar el plugin. Se recomienda su reseteo.
Cmd Info - Update || §2Actualización disponible: §f${0}

View File

@ -19,7 +19,7 @@ Cmd Header - Search || > §2${0} Tulosta haulle §f$
Cmd Header - Servers || > §2Palvelimet
Cmd Header - Web Users || > §2${0} Web Käyttäjät
Cmd Info - Bungee Connection || §2Yhdistetty Proxyyn: §f${0}
Cmd Info - Database || §2Aktiivinen Tietokanta: §f${0}
Cmd Info - Database || §2Nykyinen Tietokanta: §f${0}
Cmd Info - Reload Complete || §aUudelleenlataus onnistui!
Cmd Info - Reload Failed || §cUudelleenlatauksessa esiintyi ongelmia. Käynnistystä uudelleen suositellaan.
Cmd Info - Update || §2Päivitys saatavilla: §f${0}

View File

@ -19,7 +19,7 @@ Cmd Header - Search || > §2${0} Résultats pour §f
Cmd Header - Servers || > §2Serveurs
Cmd Header - Web Users || > §2${0} Utilisateurs Web
Cmd Info - Bungee Connection || §2Connecté à Bungee : §f${0}
Cmd Info - Database || §2Base de données active : §f${0}
Cmd Info - Database || §2Base de données actuelle : §f${0}
Cmd Info - Reload Complete || §aRechargement terminé.
Cmd Info - Reload Failed || §cUne erreur s'est produite lors du rechargement du plugin, un redémarrage total est recommandé.
Cmd Info - Update || §2Mise à jour disponible : §f${0}

View File

@ -19,7 +19,7 @@ Cmd Header - Search || > §2${0} Risultati per §f${
Cmd Header - Servers || > §2Servers
Cmd Header - Web Users || > §2${0} Utenti Web
Cmd Info - Bungee Connection || §2Connesso al Proxy: §f${0}
Cmd Info - Database || §2Database in uso: §f${0}
Cmd Info - Database || §2Database corrente: §f${0}
Cmd Info - Reload Complete || §aRicaricamento completato
Cmd Info - Reload Failed || §cErrore durante il reload del plugin, un riavvio è raccomandato.
Cmd Info - Update || §2Aggiornamento Disponibile: §f${0}

View File

@ -19,7 +19,7 @@ Cmd Header - Search || > §2${0} §f${1}§2 の結
Cmd Header - Servers || > §2サーバー
Cmd Header - Web Users || > §2${0} ウェブユーザー
Cmd Info - Bungee Connection || §2BungeeCordに接続済み: §f${0}
Cmd Info - Database || §2動作中のデータベース: §f${0}
Cmd Info - Database || §2現在のデータベース: §f${0}
Cmd Info - Reload Complete || §aリロードが完了しました
Cmd Info - Reload Failed || §cプラグインのリロード中に何らかの問題が発生しました、Bukkit/SpigotサーバーかBungeeCordの再起動をお勧めします
Cmd Info - Update || §2利用可能なアップデート: §f${0}

View File

@ -19,7 +19,7 @@ Cmd Header - Search || > §2${0} Resultados para §f
Cmd Header - Servers || > §2Servidores
Cmd Header - Web Users || > §2${0} Usuários da Web
Cmd Info - Bungee Connection || §2Conectados ao Bungee: §f${0}
Cmd Info - Database || §2Banco de dados ativo: §f${0}
Cmd Info - Database || §2Banco de dados atual: §f${0}
Cmd Info - Reload Complete || §aReload Realizado
Cmd Info - Reload Failed || §cAlguma coisa ocorreu ao recarregar o plugin, um restart é recomendável.
Cmd Info - Update || §2Atualização Disponível: §f${0}

View File

@ -22,7 +22,7 @@ Cmd Header - Search || > §2${0} Результат
Cmd Header - Servers || > §2Серверы
Cmd Header - Web Users || > §2${0} Веб-пользователи
Cmd Info - Bungee Connection || §2Подключен к прокси: §f${0}
Cmd Info - Database || §2Активная база данных: §f${0}
Cmd Info - Database || §2Текущая база данных: §f${0}
Cmd Info - Reload Complete || §aПерезагрузка завершена
Cmd Info - Reload Failed || §cЧто-то пошло не так во время перезагрузки плагина, рекомендуется перезагрузка.
Cmd Info - Update || §2Доступно обновление: §f${0}

View File

@ -19,7 +19,7 @@ Cmd Header - Search || > §2${0} Results for §f${1}
Cmd Header - Servers || > §2Sunucular
Cmd Header - Web Users || > §2${0} Web kullanıcıları
Cmd Info - Bungee Connection || §2Bungee ye bağlan: §f${0}
Cmd Info - Database || §2Aktif Veritabanı: §f${0}
Cmd Info - Database || §2Mevcut veritabanı: §f${0}
Cmd Info - Reload Complete || §aYeniden başlatma tamamlandı
Cmd Info - Reload Failed || §cPlugini yeniden başlatırken bir şeyler ters gitti,yeniden başlatmanız tavsiye edilir.
Cmd Info - Update || §2Güncelleme mevcut: §f${0}