ConvertDatabaseCommand.java 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package com.gmail.nossr50.commands.database;
  2. import org.bukkit.command.Command;
  3. import org.bukkit.command.CommandExecutor;
  4. import org.bukkit.command.CommandSender;
  5. import org.bukkit.entity.Player;
  6. import com.gmail.nossr50.mcMMO;
  7. import com.gmail.nossr50.database.DatabaseManager;
  8. import com.gmail.nossr50.database.DatabaseManagerFactory;
  9. import com.gmail.nossr50.datatypes.database.DatabaseType;
  10. import com.gmail.nossr50.datatypes.player.PlayerProfile;
  11. import com.gmail.nossr50.locale.LocaleLoader;
  12. import com.gmail.nossr50.runnables.database.DatabaseConversionTask;
  13. import com.gmail.nossr50.util.player.UserManager;
  14. public class ConvertDatabaseCommand implements CommandExecutor {
  15. @Override
  16. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  17. switch (args.length) {
  18. case 2:
  19. DatabaseType previousType = DatabaseType.getDatabaseType(args[1]);
  20. DatabaseType newType = mcMMO.getDatabaseManager().getDatabaseType();
  21. if (previousType == newType || (newType == DatabaseType.CUSTOM && DatabaseManagerFactory.getCustomDatabaseManagerClass().getSimpleName().equalsIgnoreCase(args[1]))) {
  22. sender.sendMessage(LocaleLoader.getString("Commands.mcconvert.Database.Same", newType.toString()));
  23. return true;
  24. }
  25. DatabaseManager oldDatabase = DatabaseManagerFactory.createDatabaseManager(previousType);
  26. if (previousType == DatabaseType.CUSTOM) {
  27. Class<?> clazz;
  28. try {
  29. clazz = Class.forName(args[1]);
  30. if (!DatabaseManager.class.isAssignableFrom(clazz)) {
  31. sender.sendMessage(LocaleLoader.getString("Commands.mcconvert.Database.InvalidType", args[1]));
  32. return true;
  33. }
  34. oldDatabase = DatabaseManagerFactory.createCustomDatabaseManager((Class<? extends DatabaseManager>) clazz);
  35. }
  36. catch (Throwable e) {
  37. e.printStackTrace();
  38. sender.sendMessage(LocaleLoader.getString("Commands.mcconvert.Database.InvalidType", args[1]));
  39. return true;
  40. }
  41. }
  42. sender.sendMessage(LocaleLoader.getString("Commands.mcconvert.Database.Start", previousType.toString(), newType.toString()));
  43. UserManager.saveAll();
  44. UserManager.clearAll();
  45. for (Player player : mcMMO.p.getServer().getOnlinePlayers()) {
  46. PlayerProfile profile = oldDatabase.loadPlayerProfile(player.getUniqueId(), false);
  47. if (profile.isLoaded()) {
  48. mcMMO.getDatabaseManager().saveUser(profile);
  49. }
  50. UserManager.addUser(player);
  51. }
  52. new DatabaseConversionTask(oldDatabase, sender, previousType.toString(), newType.toString()).runTaskAsynchronously(mcMMO.p);
  53. return true;
  54. default:
  55. return false;
  56. }
  57. }
  58. }