From ffc8fea5969b91e34f4d47237dec87651dc8e87f Mon Sep 17 00:00:00 2001 From: SimSonic Date: Wed, 1 Apr 2015 19:40:59 +0600 Subject: [PATCH] Minor changes. --- .../simsonic/rscPermissions/API/Settings.java | 4 +- .../Bukkit/BukkitDatabaseFetcher.java | 81 +++++++++++++++++++ .../Bukkit/Commands/BukkitCommands.java | 78 ++---------------- src/main/resources/PermissionsEx_example.yml | 72 ----------------- 4 files changed, 88 insertions(+), 147 deletions(-) create mode 100644 src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitDatabaseFetcher.java delete mode 100644 src/main/resources/PermissionsEx_example.yml diff --git a/src/main/java/ru/simsonic/rscPermissions/API/Settings.java b/src/main/java/ru/simsonic/rscPermissions/API/Settings.java index a6cb016..2d1346e 100644 --- a/src/main/java/ru/simsonic/rscPermissions/API/Settings.java +++ b/src/main/java/ru/simsonic/rscPermissions/API/Settings.java @@ -24,6 +24,6 @@ public interface Settings public int getAutoReloadDelayTicks(); public boolean isUseMetrics(); public Map getSlotLimits(); - public TranslationProvider getTranslationProvider(); - public ConnectionParams getConnectionParams(); + public TranslationProvider getTranslationProvider(); + public ConnectionParams getConnectionParams(); } diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitDatabaseFetcher.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitDatabaseFetcher.java new file mode 100644 index 0000000..b5aa864 --- /dev/null +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitDatabaseFetcher.java @@ -0,0 +1,81 @@ +package ru.simsonic.rscPermissions.Bukkit; +import java.util.Set; +import java.util.logging.Level; +import org.bukkit.entity.Player; +import ru.simsonic.rscPermissions.API.Settings; +import ru.simsonic.rscPermissions.Backends.DatabaseContents; +import ru.simsonic.rscPermissions.BukkitPluginMain; +import ru.simsonic.rscUtilityLibrary.RestartableThread; +import ru.simsonic.rscUtilityLibrary.TextProcessing.GenericChatCodes; + +public class BukkitDatabaseFetcher extends RestartableThread +{ + private final BukkitPluginMain rscp; + public BukkitDatabaseFetcher(BukkitPluginMain plugin) + { + this.rscp = plugin; + } + @Override + public void run() + { + final long queryStartTime = System.currentTimeMillis(); + Thread.currentThread().setName("rscp:DatabaseFetchingThread"); + Thread.currentThread().setPriority(Thread.MIN_PRIORITY); + if(rscp.connection.isConnected() == false) + if(rscp.connection.connect() == false) + { + BukkitPluginMain.consoleLog.warning("[rscp] Cannot connect to database! Using local cache only."); + return; + } + final DatabaseContents contents = rscp.connection.retrieveContents(); + rscp.connection.disconnect(); + if(contents != null) + { + contents.normalize(); + rscp.localStorage.cleanup(); + rscp.localStorage.saveContents(contents); + contents.filterServerId(rscp.getServer().getServerId()); + rscp.internalCache.fill(contents); + final Runnable syncTask = new Runnable() + { + @Override + public synchronized void run() + { + BukkitPluginMain.consoleLog.log(Level.INFO, "[rscp] Fetched {0} entities, {1} permissions and {2} inheritances", + new Integer[] + { + contents.entities.length, + contents.permissions.length, + contents.inheritance.length + }); + rscp.permissionManager.recalculateOnlinePlayers(); + notify(); + } + }; + try + { + synchronized(syncTask) + { + rscp.getServer().getScheduler().runTask(rscp, syncTask); + syncTask.wait(); + } + } catch(InterruptedException ex) { + } + final long queryTime = System.currentTimeMillis() - queryStartTime; + final Set debuggers = rscp.permissionManager.getDebuggers(); + if(!debuggers.isEmpty()) + rscp.getServer().getScheduler().runTask(rscp, new Runnable() + { + @Override + public void run() + { + for(Player debugger : debuggers) + debugger.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix + + "Database has been fetched in " + queryTime + " milliseconds.")); + } + }); + } + else + BukkitPluginMain.consoleLog.warning("[rscp] Cannot load data from database."); + } +} diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java index 612c91a..3e0cd7a 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java +++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java @@ -1,12 +1,11 @@ package ru.simsonic.rscPermissions.Bukkit.Commands; +import ru.simsonic.rscPermissions.Bukkit.BukkitDatabaseFetcher; import java.util.ArrayList; import java.util.Collections; -import java.util.Set; import java.util.logging.Level; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import ru.simsonic.rscPermissions.API.Settings; -import ru.simsonic.rscPermissions.Backends.DatabaseContents; import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscPermissions.Engine.ResolutionResult; import ru.simsonic.rscUtilityLibrary.Bukkit.Commands.CommandAnswerException; @@ -21,6 +20,7 @@ public class BukkitCommands private final CommandFetch cmdFetch; private final CommandDebug cmdDebug; private final CommandReload cmdReload; + public final BukkitDatabaseFetcher threadFetchDatabaseContents; public BukkitCommands(final BukkitPluginMain plugin) { this.rscp = plugin; @@ -29,73 +29,8 @@ public class BukkitCommands cmdFetch = new CommandFetch(rscp); cmdDebug = new CommandDebug(rscp); cmdReload = new CommandReload(rscp); + threadFetchDatabaseContents = new BukkitDatabaseFetcher(rscp); } - public final RestartableThread threadFetchDatabaseContents = new RestartableThread() - { - @Override - public void run() - { - final long queryStartTime = System.currentTimeMillis(); - Thread.currentThread().setName("rscp:DatabaseFetchingThread"); - Thread.currentThread().setPriority(Thread.MIN_PRIORITY); - if(rscp.connection.isConnected() == false) - if(rscp.connection.connect() == false) - { - BukkitPluginMain.consoleLog.warning("[rscp] Cannot connect to database! Using local cache only."); - return; - } - final DatabaseContents contents = rscp.connection.retrieveContents(); - rscp.connection.disconnect(); - if(contents != null) - { - contents.normalize(); - rscp.localStorage.cleanup(); - rscp.localStorage.saveContents(contents); - contents.filterServerId(rscp.getServer().getServerId()); - rscp.internalCache.fill(contents); - final Runnable syncTask = new Runnable() - { - @Override - public synchronized void run() - { - BukkitPluginMain.consoleLog.log(Level.INFO, - "[rscp] Fetched {0} entities, {1} permissions and {2} inheritances", - new Integer[] - { - contents.entities.length, - contents.permissions.length, - contents.inheritance.length, - }); - rscp.permissionManager.recalculateOnlinePlayers(); - notify(); - } - }; - try - { - synchronized(syncTask) - { - rscp.getServer().getScheduler().runTask(rscp, syncTask); - syncTask.wait(); - } - } catch(InterruptedException ex) { - } - final long queryTime = System.currentTimeMillis() - queryStartTime; - final Set debuggers = rscp.permissionManager.getDebuggers(); - if(!debuggers.isEmpty()) - rscp.getServer().getScheduler().runTask(rscp, new Runnable() - { - @Override - public void run() - { - for(Player debugger : debuggers) - debugger.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix - + "Database has been fetched in " + queryTime + " milliseconds.")); - } - }); - } else - BukkitPluginMain.consoleLog.warning("[rscp] Cannot load data from database."); - } - }; public Thread threadMigrateFromPExSQL(final CommandSender sender) { final Thread result = new Thread() @@ -185,13 +120,11 @@ public class BukkitCommands { case "user": onCommandHubUser(sender, args); - return; + break; case "lock": - /* rscp lock [mMode] */ cmdLock.execute(sender, args); return; case "unlock": - /* rscp unlock */ cmdUnlock.execute(sender); return; case "examplerows": @@ -201,9 +134,8 @@ public class BukkitCommands threadInsertExampleRows(sender); throw new CommandAnswerException("Example rows have been added into database."); } - return; + break; case "import": - /* rscp import pex */ if(sender.hasPermission("rscp.admin")) { if(args.length > 1) diff --git a/src/main/resources/PermissionsEx_example.yml b/src/main/resources/PermissionsEx_example.yml deleted file mode 100644 index cbd06dc..0000000 --- a/src/main/resources/PermissionsEx_example.yml +++ /dev/null @@ -1,72 +0,0 @@ -# Users Section -users: - # Player Name - t3hk0d3: - # Player Group(s) Section - group: - # Player Group Name - - default - # Player Specific Permissions Section - permissions: - # Permissions node - - permissions.* - # World Specific Permission Section - worlds: - # World designator - world: - # World Specific Permission Group - permissions: - # World Specific Permission - - test.* - # World Specific Group Section - group: - # World Specific Group - - testers - # World Specific Prefix - prefix: '&5[YARR]&f' - -# Group Section -groups: - # Group Name - default: - # Default Group Setting - default: true - # Group Permissions Section - permissions: - # Negated Permission Node - - -modifyworld.blocks.interact.23 - # Permission Node - - modifyworld.* - admins: - # Group Inheritance Section - inheritance: - # Groups To Inherit From - - default - permissions: - - example.permission - - -punish.noobs - # Group Options Section - options: - # Extra Data - test.test: '100500' - # Rank Designator - rank: '1' - worlds: - nether: - permissions: - - nocheat.fly - prefix: '&7[ADMIN FROM HELL]' - testers: - inheritance: - - admins - options: - test.test: '9000' - -# World Specific Section -worlds: - # World Name - nether: - # World Inheritance Section - inheritance: - # World To Inherit From - - world \ No newline at end of file