Browse Source

Minor changes.

master
SimSonic 10 years ago
parent
commit
ffc8fea596
  1. 4
      src/main/java/ru/simsonic/rscPermissions/API/Settings.java
  2. 81
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitDatabaseFetcher.java
  3. 78
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java
  4. 72
      src/main/resources/PermissionsEx_example.yml

4
src/main/java/ru/simsonic/rscPermissions/API/Settings.java

@ -24,6 +24,6 @@ public interface Settings
public int getAutoReloadDelayTicks();
public boolean isUseMetrics();
public Map<String, Integer> getSlotLimits();
public TranslationProvider getTranslationProvider();
public ConnectionParams getConnectionParams();
public TranslationProvider getTranslationProvider();
public ConnectionParams getConnectionParams();
}

81
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<Player> 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.");
}
}

78
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<Player> 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 <filename.yml> */
if(sender.hasPermission("rscp.admin"))
{
if(args.length > 1)

72
src/main/resources/PermissionsEx_example.yml

@ -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
Loading…
Cancel
Save