From edaf312a93976a534ddca5013bfd62a8a035cccc Mon Sep 17 00:00:00 2001 From: Alex Stewart Date: Tue, 29 Sep 2020 03:02:09 -0400 Subject: [PATCH] =More package sorting --- .../{general => beans}/CommandBeansShow.java | 2 +- .../{general => beans}/CommandBetBeans.java | 2 +- .../{general => beans}/CommandBetHistory.java | 48 ++-- .../{general => beans}/CommandGiveBeans.java | 2 +- .../{general => beans}/CommandTradeBeans.java | 2 +- .../{general => dev}/CommandDBFlush.java | 70 ++--- .../{general => dev}/CommandDBStats.java | 86 +++--- .../{general => dev}/CommandDoWork.java | 64 ++--- .../{general => dev}/CommandHelpBuilder.java | 270 +++++++++--------- .../{general => dev}/CommandInvite.java | 2 +- .../{general => dev}/CommandShutdown.java | 118 ++++---- .../{general => dev}/CommandStats.java | 178 ++++++------ .../{general => dev}/CommandTweet.java | 2 +- .../CommandDefaultDance.java | 142 ++++----- .../{general => network}/CommandColiru.java | 2 +- .../{general => network}/CommandDerpi.java | 2 +- .../{general => network}/CommandE6.java | 2 +- .../{general => network}/CommandGetSauce.java | 2 +- .../{general => network}/CommandJDoodle.java | 2 +- .../{general => network}/CommandWolfram.java | 2 +- src/core/CommandManager.java | 20 ++ 21 files changed, 520 insertions(+), 500 deletions(-) rename src/commands/{general => beans}/CommandBeansShow.java (96%) rename src/commands/{general => beans}/CommandBetBeans.java (94%) rename src/commands/{general => beans}/CommandBetHistory.java (93%) rename src/commands/{general => beans}/CommandGiveBeans.java (94%) rename src/commands/{general => beans}/CommandTradeBeans.java (98%) rename src/commands/{general => dev}/CommandDBFlush.java (94%) rename src/commands/{general => dev}/CommandDBStats.java (95%) rename src/commands/{general => dev}/CommandDoWork.java (94%) rename src/commands/{general => dev}/CommandHelpBuilder.java (96%) rename src/commands/{general => dev}/CommandInvite.java (92%) rename src/commands/{general => dev}/CommandShutdown.java (94%) rename src/commands/{general => dev}/CommandStats.java (95%) rename src/commands/{general => dev}/CommandTweet.java (92%) rename src/commands/{general => images}/CommandDefaultDance.java (94%) rename src/commands/{general => network}/CommandColiru.java (92%) rename src/commands/{general => network}/CommandDerpi.java (94%) rename src/commands/{general => network}/CommandE6.java (93%) rename src/commands/{general => network}/CommandGetSauce.java (93%) rename src/commands/{general => network}/CommandJDoodle.java (92%) rename src/commands/{general => network}/CommandWolfram.java (93%) diff --git a/src/commands/general/CommandBeansShow.java b/src/commands/beans/CommandBeansShow.java similarity index 96% rename from src/commands/general/CommandBeansShow.java rename to src/commands/beans/CommandBeansShow.java index 7cbd40b..41efaf9 100644 --- a/src/commands/general/CommandBeansShow.java +++ b/src/commands/beans/CommandBeansShow.java @@ -1,4 +1,4 @@ -package commands.general; +package commands.beans; import java.awt.Font; import java.awt.FontMetrics; diff --git a/src/commands/general/CommandBetBeans.java b/src/commands/beans/CommandBetBeans.java similarity index 94% rename from src/commands/general/CommandBetBeans.java rename to src/commands/beans/CommandBetBeans.java index daafec0..76a6559 100644 --- a/src/commands/general/CommandBetBeans.java +++ b/src/commands/beans/CommandBetBeans.java @@ -1,4 +1,4 @@ -package commands.general; +package commands.beans; import java.util.Random; diff --git a/src/commands/general/CommandBetHistory.java b/src/commands/beans/CommandBetHistory.java similarity index 93% rename from src/commands/general/CommandBetHistory.java rename to src/commands/beans/CommandBetHistory.java index 0e7a872..825eb20 100644 --- a/src/commands/general/CommandBetHistory.java +++ b/src/commands/beans/CommandBetHistory.java @@ -1,25 +1,25 @@ -package commands.general; - -import core.Command; -import core.LocStrings; -import dataStructures.KittyChannel; -import dataStructures.KittyGuild; -import dataStructures.KittyRating; -import dataStructures.KittyRole; -import dataStructures.KittyUser; -import dataStructures.Response; -import dataStructures.UserInput; - -public class CommandBetHistory extends Command -{ - public CommandBetHistory(KittyRole level, KittyRating rating) { super(level, rating); } - - @Override - public String getHelpText() { return LocStrings.stub("BetHistoryInfo"); } - - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - res.send(String.format(LocStrings.stub("BetHistoryOutput"), guild.beans.get())); - } +package commands.beans; + +import core.Command; +import core.LocStrings; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; +import dataStructures.Response; +import dataStructures.UserInput; + +public class CommandBetHistory extends Command +{ + public CommandBetHistory(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public String getHelpText() { return LocStrings.stub("BetHistoryInfo"); } + + @Override + public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) + { + res.send(String.format(LocStrings.stub("BetHistoryOutput"), guild.beans.get())); + } } \ No newline at end of file diff --git a/src/commands/general/CommandGiveBeans.java b/src/commands/beans/CommandGiveBeans.java similarity index 94% rename from src/commands/general/CommandGiveBeans.java rename to src/commands/beans/CommandGiveBeans.java index d17d005..5fe11ee 100644 --- a/src/commands/general/CommandGiveBeans.java +++ b/src/commands/beans/CommandGiveBeans.java @@ -1,4 +1,4 @@ -package commands.general; +package commands.beans; import core.Command; import core.LocStrings; diff --git a/src/commands/general/CommandTradeBeans.java b/src/commands/beans/CommandTradeBeans.java similarity index 98% rename from src/commands/general/CommandTradeBeans.java rename to src/commands/beans/CommandTradeBeans.java index 75cc21a..85bce3b 100644 --- a/src/commands/general/CommandTradeBeans.java +++ b/src/commands/beans/CommandTradeBeans.java @@ -1,4 +1,4 @@ -package commands.general; +package commands.beans; import core.Command; import core.LocStrings; diff --git a/src/commands/general/CommandDBFlush.java b/src/commands/dev/CommandDBFlush.java similarity index 94% rename from src/commands/general/CommandDBFlush.java rename to src/commands/dev/CommandDBFlush.java index 9af292d..bc17d27 100644 --- a/src/commands/general/CommandDBFlush.java +++ b/src/commands/dev/CommandDBFlush.java @@ -1,35 +1,35 @@ -package commands.general; - -import core.Command; -import core.Constants; -import core.DatabaseManager; -import core.LocStrings; -import dataStructures.KittyChannel; -import dataStructures.KittyEmbed; -import dataStructures.KittyGuild; -import dataStructures.KittyRating; -import dataStructures.KittyRole; -import dataStructures.KittyUser; -import dataStructures.Response; -import dataStructures.UserInput; - -public class CommandDBFlush extends Command -{ - public CommandDBFlush(KittyRole level, KittyRating rating) { super(level, rating); } - - @Override - public String getHelpText() { return LocStrings.stub("DBFlushInfo"); } - - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - int numUpdated = DatabaseManager.instance.upkeep(); - - KittyEmbed embed = new KittyEmbed(); - embed.title = "Database queue flushed"; - embed.descriptionText = "**Dirty:** " + numUpdated; - embed.color = Constants.ColorDefault; - - res.send(embed); - } -} +package commands.dev; + +import core.Command; +import core.Constants; +import core.DatabaseManager; +import core.LocStrings; +import dataStructures.KittyChannel; +import dataStructures.KittyEmbed; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; +import dataStructures.Response; +import dataStructures.UserInput; + +public class CommandDBFlush extends Command +{ + public CommandDBFlush(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public String getHelpText() { return LocStrings.stub("DBFlushInfo"); } + + @Override + public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) + { + int numUpdated = DatabaseManager.instance.upkeep(); + + KittyEmbed embed = new KittyEmbed(); + embed.title = "Database queue flushed"; + embed.descriptionText = "**Dirty:** " + numUpdated; + embed.color = Constants.ColorDefault; + + res.send(embed); + } +} diff --git a/src/commands/general/CommandDBStats.java b/src/commands/dev/CommandDBStats.java similarity index 95% rename from src/commands/general/CommandDBStats.java rename to src/commands/dev/CommandDBStats.java index 0ba3c51..fe5ece7 100644 --- a/src/commands/general/CommandDBStats.java +++ b/src/commands/dev/CommandDBStats.java @@ -1,43 +1,43 @@ -package commands.general; - -import java.text.DateFormat; -import java.text.SimpleDateFormat; - -import core.Command; -import core.Constants; -import core.DatabaseManager; -import core.LocStrings; -import dataStructures.KittyChannel; -import dataStructures.KittyEmbed; -import dataStructures.KittyGuild; -import dataStructures.KittyRating; -import dataStructures.KittyRole; -import dataStructures.KittyUser; -import dataStructures.Response; -import dataStructures.UserInput; - -public class CommandDBStats extends Command -{ - DateFormat dateFormat; - public CommandDBStats(KittyRole level, KittyRating rating) - { - super(level, rating); - dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); - } - - @Override - public String getHelpText() { return LocStrings.stub("DBStatsInfo"); } - - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - KittyEmbed embed = new KittyEmbed(); - embed.title = "Database Info"; - embed.descriptionText = "**Tracked Items:** " + DatabaseManager.instance.getTrackedObjectsSize(); - embed.descriptionText += "\n"; - embed.descriptionText += "**Last Upkeep:** " + dateFormat.format(DatabaseManager.instance.getLastUpkeep()) + " UTC-7"; - embed.color = Constants.ColorDefault; - - res.send(embed); - } -} +package commands.dev; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; + +import core.Command; +import core.Constants; +import core.DatabaseManager; +import core.LocStrings; +import dataStructures.KittyChannel; +import dataStructures.KittyEmbed; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; +import dataStructures.Response; +import dataStructures.UserInput; + +public class CommandDBStats extends Command +{ + DateFormat dateFormat; + public CommandDBStats(KittyRole level, KittyRating rating) + { + super(level, rating); + dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + } + + @Override + public String getHelpText() { return LocStrings.stub("DBStatsInfo"); } + + @Override + public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) + { + KittyEmbed embed = new KittyEmbed(); + embed.title = "Database Info"; + embed.descriptionText = "**Tracked Items:** " + DatabaseManager.instance.getTrackedObjectsSize(); + embed.descriptionText += "\n"; + embed.descriptionText += "**Last Upkeep:** " + dateFormat.format(DatabaseManager.instance.getLastUpkeep()) + " UTC-7"; + embed.color = Constants.ColorDefault; + + res.send(embed); + } +} diff --git a/src/commands/general/CommandDoWork.java b/src/commands/dev/CommandDoWork.java similarity index 94% rename from src/commands/general/CommandDoWork.java rename to src/commands/dev/CommandDoWork.java index 734ff3f..fbff7d3 100644 --- a/src/commands/general/CommandDoWork.java +++ b/src/commands/dev/CommandDoWork.java @@ -1,33 +1,33 @@ -package commands.general; - -import core.*; -import dataStructures.KittyChannel; -import dataStructures.KittyGuild; -import dataStructures.KittyRating; -import dataStructures.KittyRole; -import dataStructures.KittyUser; -import dataStructures.Response; -import dataStructures.UserInput; - -public class CommandDoWork extends Command -{ - // Required constructor - public CommandDoWork(KittyRole level, KittyRating rating) { super(level, rating); } - - @Override - public String getHelpText() { return LocStrings.stub("DoWorkInfo"); } - - // Called when the command is run! - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - @SuppressWarnings("unused") - long thispieceofshit = 0; - for(int i = 0; i < 200000000 + Math.random() * 30; i ++) - { - thispieceofshit += Math.log((double)i); - } - - res.send(LocStrings.stub("DoWorkFinished")); - } +package commands.dev; + +import core.*; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; +import dataStructures.Response; +import dataStructures.UserInput; + +public class CommandDoWork extends Command +{ + // Required constructor + public CommandDoWork(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public String getHelpText() { return LocStrings.stub("DoWorkInfo"); } + + // Called when the command is run! + @Override + public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) + { + @SuppressWarnings("unused") + long thispieceofshit = 0; + for(int i = 0; i < 200000000 + Math.random() * 30; i ++) + { + thispieceofshit += Math.log((double)i); + } + + res.send(LocStrings.stub("DoWorkFinished")); + } } \ No newline at end of file diff --git a/src/commands/general/CommandHelpBuilder.java b/src/commands/dev/CommandHelpBuilder.java similarity index 96% rename from src/commands/general/CommandHelpBuilder.java rename to src/commands/dev/CommandHelpBuilder.java index 4f8e0c7..3109c9c 100644 --- a/src/commands/general/CommandHelpBuilder.java +++ b/src/commands/dev/CommandHelpBuilder.java @@ -1,136 +1,136 @@ -package commands.general; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.HashMap; - -import core.Command; -import core.LocStrings; -import core.Stats; -import dataStructures.KittyChannel; -import dataStructures.KittyGuild; -import dataStructures.KittyRating; -import dataStructures.KittyRole; -import dataStructures.KittyUser; -import dataStructures.Response; -import dataStructures.UserInput; -import utils.GlobalLog; -import utils.ImageUtils; - -public class CommandHelpBuilder extends Command { - - public CommandHelpBuilder(KittyRole role, KittyRating rating) { - super(role, rating); - } - - @Override - public String getHelpText() { return LocStrings.stub("HelpBuilderInfo"); } - - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - // Holds command groups - HashMap> commandsByRole = new HashMap>(); - - // Populate w/ empty array lists - for(int i = 0; i < KittyRole.values().length; ++i) - commandsByRole.put(KittyRole.values()[i], new ArrayList()); - - // Sort commands out - ArrayList commands = Stats.instance.getAllCommands(); - for(int i = 0; i < commands.size(); ++i) - { - Command current = commands.get(i); - commandsByRole.get(current.requiredRole()).add(current); - } - - // Format outstring and send it back for now - String out = ""; - out += populateSection(KittyRole.Admin, commandsByRole, true) + "\n"; - out += populateSection(KittyRole.Mod, commandsByRole, true) + "\n"; - out += populateSection(KittyRole.General, commandsByRole, false) + "\n"; - - // Write out file - String filename = "buildhelp_out.txt"; - - try { - PrintWriter writer = new PrintWriter(filename); - writer.println(out); - writer.flush(); - writer.close(); - } - catch (FileNotFoundException e) - { - GlobalLog.error(e.toString()); - return; - } - - File file = new File(filename); - res.sendFile(file, "txt"); - ImageUtils.blockingFileDelete(file); - } - - // Generates the section for a specific role, optionally adding spacing after for another section - private String populateSection(KittyRole role, HashMap> commandsByRole, boolean delimitSection) - { - // Formatting variables - final String headerStart = "

"; - final String headerEnd = "

\n"; - final String sectionStart = "

\n"; - final String sectionEnd = "

"; - final String indent = " "; - final String leadStart = ""; - final String leadEnd = ""; - final String leadFollow = ": "; - final String lineDelimiter = "
\n"; - final String sectionDelimiter = "\n\n"; - - String accumulated = ""; - ArrayList commands = commandsByRole.get(role); - ArrayList commandsSoFar = new ArrayList(); - if(commands.size() > 0) - { - String roleStr = role.toString(); - roleStr = roleStr.substring(0, 1).toUpperCase() + roleStr.toLowerCase().substring(1); - - // Section header - accumulated += headerStart + roleStr + " commands" + headerEnd; - accumulated += sectionStart; - - // Section content - for(int i = 0; i < commands.size(); ++i) - { - accumulated += indent; - Command command = commands.get(i); - - // Skip multiples - if(commandsSoFar.contains(command)) - continue; - else - commandsSoFar.add(command); - - // Write out all the keys and the help text - ArrayList keys = command.registeredNames(); - for(int j = 0; j < keys.size(); ++j) - { - if(j != 0) - accumulated += ", "; - - accumulated += leadStart + keys.get(j) + leadEnd; - } - - accumulated += leadFollow + commands.get(i).getHelpText() + lineDelimiter;; - } - - accumulated += sectionEnd; - - // Add spaces after if needed - if(delimitSection) - accumulated += sectionDelimiter; - } - - return accumulated; - } +package commands.dev; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.HashMap; + +import core.Command; +import core.LocStrings; +import core.Stats; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; +import dataStructures.Response; +import dataStructures.UserInput; +import utils.GlobalLog; +import utils.ImageUtils; + +public class CommandHelpBuilder extends Command { + + public CommandHelpBuilder(KittyRole role, KittyRating rating) { + super(role, rating); + } + + @Override + public String getHelpText() { return LocStrings.stub("HelpBuilderInfo"); } + + @Override + public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) + { + // Holds command groups + HashMap> commandsByRole = new HashMap>(); + + // Populate w/ empty array lists + for(int i = 0; i < KittyRole.values().length; ++i) + commandsByRole.put(KittyRole.values()[i], new ArrayList()); + + // Sort commands out + ArrayList commands = Stats.instance.getAllCommands(); + for(int i = 0; i < commands.size(); ++i) + { + Command current = commands.get(i); + commandsByRole.get(current.requiredRole()).add(current); + } + + // Format outstring and send it back for now + String out = ""; + out += populateSection(KittyRole.Admin, commandsByRole, true) + "\n"; + out += populateSection(KittyRole.Mod, commandsByRole, true) + "\n"; + out += populateSection(KittyRole.General, commandsByRole, false) + "\n"; + + // Write out file + String filename = "buildhelp_out.txt"; + + try { + PrintWriter writer = new PrintWriter(filename); + writer.println(out); + writer.flush(); + writer.close(); + } + catch (FileNotFoundException e) + { + GlobalLog.error(e.toString()); + return; + } + + File file = new File(filename); + res.sendFile(file, "txt"); + ImageUtils.blockingFileDelete(file); + } + + // Generates the section for a specific role, optionally adding spacing after for another section + private String populateSection(KittyRole role, HashMap> commandsByRole, boolean delimitSection) + { + // Formatting variables + final String headerStart = "

"; + final String headerEnd = "

\n"; + final String sectionStart = "

\n"; + final String sectionEnd = "

"; + final String indent = " "; + final String leadStart = ""; + final String leadEnd = ""; + final String leadFollow = ": "; + final String lineDelimiter = "
\n"; + final String sectionDelimiter = "\n\n"; + + String accumulated = ""; + ArrayList commands = commandsByRole.get(role); + ArrayList commandsSoFar = new ArrayList(); + if(commands.size() > 0) + { + String roleStr = role.toString(); + roleStr = roleStr.substring(0, 1).toUpperCase() + roleStr.toLowerCase().substring(1); + + // Section header + accumulated += headerStart + roleStr + " commands" + headerEnd; + accumulated += sectionStart; + + // Section content + for(int i = 0; i < commands.size(); ++i) + { + accumulated += indent; + Command command = commands.get(i); + + // Skip multiples + if(commandsSoFar.contains(command)) + continue; + else + commandsSoFar.add(command); + + // Write out all the keys and the help text + ArrayList keys = command.registeredNames(); + for(int j = 0; j < keys.size(); ++j) + { + if(j != 0) + accumulated += ", "; + + accumulated += leadStart + keys.get(j) + leadEnd; + } + + accumulated += leadFollow + commands.get(i).getHelpText() + lineDelimiter;; + } + + accumulated += sectionEnd; + + // Add spaces after if needed + if(delimitSection) + accumulated += sectionDelimiter; + } + + return accumulated; + } } \ No newline at end of file diff --git a/src/commands/general/CommandInvite.java b/src/commands/dev/CommandInvite.java similarity index 92% rename from src/commands/general/CommandInvite.java rename to src/commands/dev/CommandInvite.java index a94587b..3a9de37 100644 --- a/src/commands/general/CommandInvite.java +++ b/src/commands/dev/CommandInvite.java @@ -1,4 +1,4 @@ -package commands.general; +package commands.dev; import core.Command; import core.LocStrings; diff --git a/src/commands/general/CommandShutdown.java b/src/commands/dev/CommandShutdown.java similarity index 94% rename from src/commands/general/CommandShutdown.java rename to src/commands/dev/CommandShutdown.java index beb901d..f6373cf 100644 --- a/src/commands/general/CommandShutdown.java +++ b/src/commands/dev/CommandShutdown.java @@ -1,60 +1,60 @@ -package commands.general; - -import core.Command; -import core.DatabaseManager; -import core.LocStrings; -import core.Stats; -import dataStructures.KittyChannel; -import dataStructures.KittyGuild; -import dataStructures.KittyRating; -import dataStructures.KittyRole; -import dataStructures.KittyUser; -import dataStructures.Response; -import dataStructures.UserInput; -import utils.GlobalLog; -import utils.LogFilter; - -// NOTE(wisp): This is a sort of special command. -public class CommandShutdown extends Command -{ - public CommandShutdown(KittyRole level, KittyRating rating) { super(level, rating); } - - @Override - public String getHelpText() { return LocStrings.stub("ShutdownInfo"); } - - // Called when the command is run! - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - // Flag the shutdown immediately. - Stats.instance.indicateShutdown(); - - boolean isSafe = false; - switch(input.args.toLowerCase().trim()) - { - case "s": - case "safe": - case "-s": - case "-safe": - case "snafe": - isSafe = true; - break; - } - - if(isSafe) - { - // Force upkeep, this works so long as upkeep is on the main thread. - res.sendImmediate(LocStrings.stub("ShutdownSafe")); - DatabaseManager.instance.upkeep(); - GlobalLog.warn(LogFilter.Command, LocStrings.lookup("ShutdownSafe")); - - System.exit(0); - } - else - { - res.sendImmediate(LocStrings.stub("ShutdownUnsafe"));// "``"); - GlobalLog.warn(LogFilter.Command, LocStrings.lookup("ShutdownSafe")); - System.exit(0); - } - } +package commands.dev; + +import core.Command; +import core.DatabaseManager; +import core.LocStrings; +import core.Stats; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; +import dataStructures.Response; +import dataStructures.UserInput; +import utils.GlobalLog; +import utils.LogFilter; + +// NOTE(wisp): This is a sort of special command. +public class CommandShutdown extends Command +{ + public CommandShutdown(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public String getHelpText() { return LocStrings.stub("ShutdownInfo"); } + + // Called when the command is run! + @Override + public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) + { + // Flag the shutdown immediately. + Stats.instance.indicateShutdown(); + + boolean isSafe = false; + switch(input.args.toLowerCase().trim()) + { + case "s": + case "safe": + case "-s": + case "-safe": + case "snafe": + isSafe = true; + break; + } + + if(isSafe) + { + // Force upkeep, this works so long as upkeep is on the main thread. + res.sendImmediate(LocStrings.stub("ShutdownSafe")); + DatabaseManager.instance.upkeep(); + GlobalLog.warn(LogFilter.Command, LocStrings.lookup("ShutdownSafe")); + + System.exit(0); + } + else + { + res.sendImmediate(LocStrings.stub("ShutdownUnsafe"));// "``"); + GlobalLog.warn(LogFilter.Command, LocStrings.lookup("ShutdownSafe")); + System.exit(0); + } + } } \ No newline at end of file diff --git a/src/commands/general/CommandStats.java b/src/commands/dev/CommandStats.java similarity index 95% rename from src/commands/general/CommandStats.java rename to src/commands/dev/CommandStats.java index b6aa642..cdb1556 100644 --- a/src/commands/general/CommandStats.java +++ b/src/commands/dev/CommandStats.java @@ -1,89 +1,89 @@ -package commands.general; - -import core.Command; -import core.LocStrings; -import core.CommandManager.ThreadData; -import core.Constants; -import dataStructures.KittyChannel; -import dataStructures.KittyEmbed; -import dataStructures.KittyGuild; -import dataStructures.KittyRating; -import dataStructures.KittyRole; -import dataStructures.KittyUser; -import dataStructures.Response; -import dataStructures.UserInput; -import core.Stats; - -public class CommandStats extends Command -{ - public CommandStats(KittyRole level, KittyRating rating) { super(level, rating); } - - @Override - public String getHelpText() { return LocStrings.stub("StatsInfo"); } - - // Called when the command is run! - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - // Variables - Stats stats = Stats.instance; - String out = ""; - long seen = stats.getMessagesSeen(); - long processed = stats.getCommandsProcessed(); - - // General - out += "General"; - out += "```\n"; - out += " Messages observed: " + seen + "\n"; - out += "Commands processed: " + processed + "\n"; - out += " Command invoke %: " + ((int)((processed / (float)seen) * 1000)) / 10.0f + "%\n"; - out += " Bot uptime: " + stats.getFormattedUptime() + "\n"; - out += "```\n"; - - // Health - out += "Health"; - out += "```\n"; - out += " SMT cores: " + stats.getCPUAvailable() + "\n"; - - // If CPU load works on this OS, list it. -1.0 is the error state - double CPULoad = stats.getSystemCPULoad(); - out += CPULoad > -0.9 - ? " CPU Load: " + (CPULoad * 100) + "%\n" : ""; - - ThreadData data = stats.getThreadData(); - Integer terminated = data.states.get(Thread.State.TERMINATED); - Integer runnable = data.states.get(Thread.State.RUNNABLE); - Integer blocked = data.states.get(Thread.State.BLOCKED); - Integer timed_waiting = data.states.get(Thread.State.TIMED_WAITING); - Integer waiting = data.states.get(Thread.State.WAITING); - - out += " Threads:" - + " run-" + (runnable == null ? 0 : runnable) - + " block-" + (blocked == null ? 0 : blocked) - + " sleep-" + (timed_waiting == null ? 0 : timed_waiting) - + " wait-" + (waiting == null ? 0 : waiting) - + " term-" + (terminated == null ? 0 : terminated) - + "\n"; - - out += "```\n"; - - - // Cache - Integer guildCount = stats.getGuildCount(); - Integer userCount = stats.getUserCount(); - - out += "Cache"; - out += "```\n" - + "Cached Guilds: " + guildCount + "\n" - + " Cached Users: " + userCount; - - out += "\n```"; - - KittyEmbed embed = new KittyEmbed(); - embed.title = "Bot Stats"; - embed.descriptionText = out; - embed.color = Constants.ColorDefault; - - res.send(embed); - } -} +package commands.dev; + +import core.Command; +import core.LocStrings; +import core.CommandManager.ThreadData; +import core.Constants; +import dataStructures.KittyChannel; +import dataStructures.KittyEmbed; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; +import dataStructures.Response; +import dataStructures.UserInput; +import core.Stats; + +public class CommandStats extends Command +{ + public CommandStats(KittyRole level, KittyRating rating) { super(level, rating); } + + @Override + public String getHelpText() { return LocStrings.stub("StatsInfo"); } + + // Called when the command is run! + @Override + public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) + { + // Variables + Stats stats = Stats.instance; + String out = ""; + long seen = stats.getMessagesSeen(); + long processed = stats.getCommandsProcessed(); + + // General + out += "General"; + out += "```\n"; + out += " Messages observed: " + seen + "\n"; + out += "Commands processed: " + processed + "\n"; + out += " Command invoke %: " + ((int)((processed / (float)seen) * 1000)) / 10.0f + "%\n"; + out += " Bot uptime: " + stats.getFormattedUptime() + "\n"; + out += "```\n"; + + // Health + out += "Health"; + out += "```\n"; + out += " SMT cores: " + stats.getCPUAvailable() + "\n"; + + // If CPU load works on this OS, list it. -1.0 is the error state + double CPULoad = stats.getSystemCPULoad(); + out += CPULoad > -0.9 + ? " CPU Load: " + (CPULoad * 100) + "%\n" : ""; + + ThreadData data = stats.getThreadData(); + Integer terminated = data.states.get(Thread.State.TERMINATED); + Integer runnable = data.states.get(Thread.State.RUNNABLE); + Integer blocked = data.states.get(Thread.State.BLOCKED); + Integer timed_waiting = data.states.get(Thread.State.TIMED_WAITING); + Integer waiting = data.states.get(Thread.State.WAITING); + + out += " Threads:" + + " run-" + (runnable == null ? 0 : runnable) + + " block-" + (blocked == null ? 0 : blocked) + + " sleep-" + (timed_waiting == null ? 0 : timed_waiting) + + " wait-" + (waiting == null ? 0 : waiting) + + " term-" + (terminated == null ? 0 : terminated) + + "\n"; + + out += "```\n"; + + + // Cache + Integer guildCount = stats.getGuildCount(); + Integer userCount = stats.getUserCount(); + + out += "Cache"; + out += "```\n" + + "Cached Guilds: " + guildCount + "\n" + + " Cached Users: " + userCount; + + out += "\n```"; + + KittyEmbed embed = new KittyEmbed(); + embed.title = "Bot Stats"; + embed.descriptionText = out; + embed.color = Constants.ColorDefault; + + res.send(embed); + } +} diff --git a/src/commands/general/CommandTweet.java b/src/commands/dev/CommandTweet.java similarity index 92% rename from src/commands/general/CommandTweet.java rename to src/commands/dev/CommandTweet.java index 6a16e9b..b565a27 100644 --- a/src/commands/general/CommandTweet.java +++ b/src/commands/dev/CommandTweet.java @@ -1,4 +1,4 @@ -package commands.general; +package commands.dev; import core.Command; import core.LocStrings; diff --git a/src/commands/general/CommandDefaultDance.java b/src/commands/images/CommandDefaultDance.java similarity index 94% rename from src/commands/general/CommandDefaultDance.java rename to src/commands/images/CommandDefaultDance.java index 312fc64..c2014c0 100644 --- a/src/commands/general/CommandDefaultDance.java +++ b/src/commands/images/CommandDefaultDance.java @@ -1,71 +1,71 @@ -package commands.general; - -import java.io.File; -import java.io.IOException; -import javax.imageio.ImageIO; -import core.Command; -import core.LocStrings; -import dataStructures.KittyChannel; -import dataStructures.KittyGuild; -import dataStructures.KittyRating; -import dataStructures.KittyRole; -import dataStructures.KittyUser; -import dataStructures.Response; -import dataStructures.UserInput; -import utils.ImageOverlayBuilder; -import utils.ImageUtils; - -public class CommandDefaultDance extends Command -{ - // Required constructor - public CommandDefaultDance(KittyRole level, KittyRating rating) { super(level, rating); } - - private static Long num = 0l; - - @Override - public String getHelpText() { return LocStrings.stub("DefaultDanceInfo"); } - - // Called when the command is run! - @Override - public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) - { - String name = null; - File dancerFile = null; - File danceeFile = null; - - synchronized(num) - { - name = "defaultDance_" + num + ".gif"; - ++num; - } - - try - { - KittyUser person = null; - - if(input.mentions == null) - person = user; - else - person = input.mentions[0]; - - String yeeteeFilename = ImageUtils.downloadFromURL(person.avatarID, ".png"); - if(yeeteeFilename == null) - return; - - danceeFile = new File(yeeteeFilename); - ImageOverlayBuilder builder = new ImageOverlayBuilder("assets/dance/default/", "defaultDance ", 118, 18); - builder.overlay(ImageIO.read(danceeFile), name); - } - catch (IOException e) - { - e.printStackTrace(); - } - - dancerFile = new File (name); - res.sendFile(dancerFile, "gif"); - - // Thread cleanup... - ImageUtils.blockingFileDelete(dancerFile); - ImageUtils.blockingFileDelete(danceeFile); - } -} +package commands.images; + +import java.io.File; +import java.io.IOException; +import javax.imageio.ImageIO; +import core.Command; +import core.LocStrings; +import dataStructures.KittyChannel; +import dataStructures.KittyGuild; +import dataStructures.KittyRating; +import dataStructures.KittyRole; +import dataStructures.KittyUser; +import dataStructures.Response; +import dataStructures.UserInput; +import utils.ImageOverlayBuilder; +import utils.ImageUtils; + +public class CommandDefaultDance extends Command +{ + // Required constructor + public CommandDefaultDance(KittyRole level, KittyRating rating) { super(level, rating); } + + private static Long num = 0l; + + @Override + public String getHelpText() { return LocStrings.stub("DefaultDanceInfo"); } + + // Called when the command is run! + @Override + public void onRun(KittyGuild guild, KittyChannel channel, KittyUser user, UserInput input, Response res) + { + String name = null; + File dancerFile = null; + File danceeFile = null; + + synchronized(num) + { + name = "defaultDance_" + num + ".gif"; + ++num; + } + + try + { + KittyUser person = null; + + if(input.mentions == null) + person = user; + else + person = input.mentions[0]; + + String yeeteeFilename = ImageUtils.downloadFromURL(person.avatarID, ".png"); + if(yeeteeFilename == null) + return; + + danceeFile = new File(yeeteeFilename); + ImageOverlayBuilder builder = new ImageOverlayBuilder("assets/dance/default/", "defaultDance ", 118, 18); + builder.overlay(ImageIO.read(danceeFile), name); + } + catch (IOException e) + { + e.printStackTrace(); + } + + dancerFile = new File (name); + res.sendFile(dancerFile, "gif"); + + // Thread cleanup... + ImageUtils.blockingFileDelete(dancerFile); + ImageUtils.blockingFileDelete(danceeFile); + } +} diff --git a/src/commands/general/CommandColiru.java b/src/commands/network/CommandColiru.java similarity index 92% rename from src/commands/general/CommandColiru.java rename to src/commands/network/CommandColiru.java index e2a2ad1..e2c7858 100644 --- a/src/commands/general/CommandColiru.java +++ b/src/commands/network/CommandColiru.java @@ -1,4 +1,4 @@ -package commands.general; +package commands.network; import core.Command; import core.LocStrings; diff --git a/src/commands/general/CommandDerpi.java b/src/commands/network/CommandDerpi.java similarity index 94% rename from src/commands/general/CommandDerpi.java rename to src/commands/network/CommandDerpi.java index c082ccf..f0aa357 100644 --- a/src/commands/general/CommandDerpi.java +++ b/src/commands/network/CommandDerpi.java @@ -1,4 +1,4 @@ -package commands.general; +package commands.network; import core.Command; import core.LocStrings; diff --git a/src/commands/general/CommandE6.java b/src/commands/network/CommandE6.java similarity index 93% rename from src/commands/general/CommandE6.java rename to src/commands/network/CommandE6.java index 7338d0d..7018f49 100644 --- a/src/commands/general/CommandE6.java +++ b/src/commands/network/CommandE6.java @@ -1,4 +1,4 @@ -package commands.general; +package commands.network; import core.Command; import core.LocStrings; diff --git a/src/commands/general/CommandGetSauce.java b/src/commands/network/CommandGetSauce.java similarity index 93% rename from src/commands/general/CommandGetSauce.java rename to src/commands/network/CommandGetSauce.java index cb26a2c..e52e7ba 100644 --- a/src/commands/general/CommandGetSauce.java +++ b/src/commands/network/CommandGetSauce.java @@ -1,4 +1,4 @@ -package commands.general; +package commands.network; import core.Command; import core.LocStrings; diff --git a/src/commands/general/CommandJDoodle.java b/src/commands/network/CommandJDoodle.java similarity index 92% rename from src/commands/general/CommandJDoodle.java rename to src/commands/network/CommandJDoodle.java index 7d44a23..ee0ef1f 100644 --- a/src/commands/general/CommandJDoodle.java +++ b/src/commands/network/CommandJDoodle.java @@ -1,4 +1,4 @@ -package commands.general; +package commands.network; import core.Command; import core.LocStrings; diff --git a/src/commands/general/CommandWolfram.java b/src/commands/network/CommandWolfram.java similarity index 93% rename from src/commands/general/CommandWolfram.java rename to src/commands/network/CommandWolfram.java index e6a63a5..f37f34a 100644 --- a/src/commands/general/CommandWolfram.java +++ b/src/commands/network/CommandWolfram.java @@ -1,4 +1,4 @@ -package commands.general; +package commands.network; import java.io.File; import java.io.IOException; diff --git a/src/core/CommandManager.java b/src/core/CommandManager.java index abbd145..8bde730 100644 --- a/src/core/CommandManager.java +++ b/src/core/CommandManager.java @@ -4,17 +4,37 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Map.Entry; +import commands.beans.CommandBeansShow; +import commands.beans.CommandBetBeans; +import commands.beans.CommandBetHistory; +import commands.beans.CommandGiveBeans; +import commands.beans.CommandTradeBeans; import commands.characters.CommandCharacterMain; +import commands.dev.CommandDBFlush; +import commands.dev.CommandDBStats; +import commands.dev.CommandDoWork; +import commands.dev.CommandHelpBuilder; +import commands.dev.CommandInvite; +import commands.dev.CommandShutdown; +import commands.dev.CommandStats; +import commands.dev.CommandTweet; import commands.general.*; import commands.guildrole.CommandGuildRoleMain; import commands.images.CommandBlurry; import commands.images.CommandCatch; +import commands.images.CommandDefaultDance; import commands.images.CommandPerish; import commands.images.CommandStark; import commands.images.CommandTeey; import commands.images.CommandYeet; import commands.mod.CommandModMain; import commands.music.CommandMusicMain; +import commands.network.CommandColiru; +import commands.network.CommandDerpi; +import commands.network.CommandE6; +import commands.network.CommandGetSauce; +import commands.network.CommandJDoodle; +import commands.network.CommandWolfram; import commands.poll.CommandPollMain; import commands.raffle.CommandRaffleMain; import dataStructures.*;