Browse Source

Added methods for inserting objects into database.

master
Stanislav Usenkov 9 years ago
parent
commit
2d6141c264
  1. 6
      src/main/java/ru/simsonic/rscPermissions/API/Destination.java
  2. 4
      src/main/java/ru/simsonic/rscPermissions/API/RowInheritance.java
  3. 14
      src/main/java/ru/simsonic/rscPermissions/API/Settings.java
  4. 6
      src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java
  5. 4
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitDatabaseFetcher.java
  6. 2
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
  7. 9
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java
  8. 124
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandGroup.java
  9. 6
      src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java
  10. 99
      src/main/java/ru/simsonic/rscPermissions/Engine/Backends/BackendDatabase.java
  11. 61
      src/main/java/ru/simsonic/rscPermissions/Engine/CommandUtilities.java
  12. 18
      src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java
  13. 2
      src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionResult.java

6
src/main/java/ru/simsonic/rscPermissions/API/Destination.java

@ -31,7 +31,7 @@ public class Destination
if(this.world == null || this.world.isEmpty() || "*".equals(this.world)) if(this.world == null || this.world.isEmpty() || "*".equals(this.world))
return true; return true;
final String instantiated = (instantiator != null && !instantiator.isEmpty()) final String instantiated = (instantiator != null && !instantiator.isEmpty())
? this.world.replace(Settings.instantiator, instantiator) ? this.world.replace(Settings.INSTANTIATOR, instantiator)
: this.world; : this.world;
return wildcardTest(world, instantiated); return wildcardTest(world, instantiated);
} }
@ -40,7 +40,7 @@ public class Destination
if(this.region == null || "".equals(this.region) || "*".equals(this.region)) if(this.region == null || "".equals(this.region) || "*".equals(this.region))
return true; return true;
final String instantiated = (instantiator != null && !"".equals(instantiator)) final String instantiated = (instantiator != null && !"".equals(instantiator))
? this.region.replace(Settings.instantiator, instantiator) ? this.region.replace(Settings.INSTANTIATOR, instantiator)
: this.region; : this.region;
for(String regionId : regions) for(String regionId : regions)
if(wildcardTest(regionId, instantiated)) if(wildcardTest(regionId, instantiated))
@ -52,7 +52,7 @@ public class Destination
if(this.region == null || "".equals(this.region) || "*".equals(this.region)) if(this.region == null || "".equals(this.region) || "*".equals(this.region))
return true; return true;
final String instantiated = (instantiator != null && !"".equals(instantiator)) final String instantiated = (instantiator != null && !"".equals(instantiator))
? this.region.replace(Settings.instantiator, instantiator) ? this.region.replace(Settings.INSTANTIATOR, instantiator)
: this.region; : this.region;
for(String regionId : regions) for(String regionId : regions)
if(wildcardTest(regionId, instantiated)) if(wildcardTest(regionId, instantiated))

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

@ -23,10 +23,10 @@ public class RowInheritance implements Cloneable, Comparable<RowInheritance>
{ {
if(parent != null) if(parent != null)
{ {
final String[] splitted = parent.split(Settings.separatorRegExp); final String[] splitted = parent.split(Settings.SEPARATOR_REGEXP);
if(splitted.length > 1) if(splitted.length > 1)
{ {
parent = GenericChatCodes.glue(Arrays.copyOf(splitted, splitted.length - 1), Settings.separator); parent = GenericChatCodes.glue(Arrays.copyOf(splitted, splitted.length - 1), Settings.SEPARATOR);
instance = splitted[splitted.length - 1]; instance = splitted[splitted.length - 1];
return; return;
} }

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

@ -5,13 +5,13 @@ import ru.simsonic.rscCommonsLibrary.ConnectionMySQL.ConnectionParams;
public interface Settings public interface Settings
{ {
public static final String updaterURL = "http://simsonic.github.io/rscPermissions/latest.json"; public static final String UPDATER_URL = "http://simsonic.github.io/rscPermissions/latest.json";
public static final String chatPrefix = "{GOLD}[rscp] {_LS}"; public static final String CHAT_PREFIX = "{GOLD}[rscp] {_LS}";
public static final String separator = "."; public static final String SEPARATOR = ".";
public static final String separatorRegExp = "\\."; public static final String SEPARATOR_REGEXP = "\\.";
public static final String instantiator = "?"; public static final String INSTANTIATOR = "?";
public static final String textInheriter = "%"; public static final String TEXT_INHERITER = "%";
public static final char groupLevelTab = '┏'; public static final char GROUP_LEVEL_TAB = '┏';
public void onLoad(); public void onLoad();
public void onEnable(); public void onEnable();
public String getDefaultGroup(); public String getDefaultGroup();

6
src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java

@ -86,7 +86,7 @@ public class BridgeForBukkitAPI
{ {
if(rscp.permissionManager.isConsoleDebugging()) if(rscp.permissionManager.isConsoleDebugging())
{ {
final StringBuilder sb = new StringBuilder(Settings.chatPrefix).append("[DEBUG] {_LS}").append(info); final StringBuilder sb = new StringBuilder(Settings.CHAT_PREFIX).append("[DEBUG] {_LS}").append(info);
rscp.getServer().getConsoleSender().sendMessage(GenericChatCodes.processStringStatic(sb.toString())); rscp.getServer().getConsoleSender().sendMessage(GenericChatCodes.processStringStatic(sb.toString()));
} }
} }
@ -94,7 +94,7 @@ public class BridgeForBukkitAPI
{ {
if(rscp.permissionManager.isConsoleDebugging()) if(rscp.permissionManager.isConsoleDebugging())
{ {
final StringBuilder sb = new StringBuilder(Settings.chatPrefix); final StringBuilder sb = new StringBuilder(Settings.CHAT_PREFIX);
sb.append("[DEBUG] An API method was invoked from the path:").append(System.lineSeparator()); sb.append("[DEBUG] An API method was invoked from the path:").append(System.lineSeparator());
for(StackTraceElement ste : Thread.currentThread().getStackTrace()) for(StackTraceElement ste : Thread.currentThread().getStackTrace())
{ {
@ -102,7 +102,7 @@ public class BridgeForBukkitAPI
if(!className.equals(BridgeForBukkitAPI.class.getName()) if(!className.equals(BridgeForBukkitAPI.class.getName())
&& !className.equals(Thread.class.getName()) && !className.equals(Thread.class.getName())
) )
sb.append(Settings.chatPrefix).append("[DEBUG] ") sb.append(Settings.CHAT_PREFIX).append("[DEBUG] ")
.append(className.startsWith(BukkitPluginMain.class.getPackage().getName()) ? "{_LG}" : "{_LS}") .append(className.startsWith(BukkitPluginMain.class.getPackage().getName()) ? "{_LG}" : "{_LS}")
.append(ste.toString()) .append(ste.toString())
.append(System.lineSeparator()); .append(System.lineSeparator());

4
src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitDatabaseFetcher.java

@ -39,7 +39,7 @@ public class BukkitDatabaseFetcher extends RestartableThread
public synchronized void run() public synchronized void run()
{ {
rscp.getServer().getConsoleSender().sendMessage(GenericChatCodes.processStringStatic( rscp.getServer().getConsoleSender().sendMessage(GenericChatCodes.processStringStatic(
(Settings.chatPrefix + Phrases.FETCHED_REMOTE_DB.toString()) (Settings.CHAT_PREFIX + Phrases.FETCHED_REMOTE_DB.toString())
.replace("{:E}", String.valueOf(contents.entities.length)) .replace("{:E}", String.valueOf(contents.entities.length))
.replace("{:P}", String.valueOf(contents.permissions.length)) .replace("{:P}", String.valueOf(contents.permissions.length))
.replace("{:I}", String.valueOf(contents.inheritance.length)))); .replace("{:I}", String.valueOf(contents.inheritance.length))));
@ -65,7 +65,7 @@ public class BukkitDatabaseFetcher extends RestartableThread
public void run() public void run()
{ {
for(CommandSender debugger : debuggers) for(CommandSender debugger : debuggers)
debugger.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix debugger.sendMessage(GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX
+ "Database has been fetched in " + queryTime + " milliseconds.")); + "Database has been fetched in " + queryTime + " milliseconds."));
} }
}); });

2
src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java

@ -121,7 +121,7 @@ public class BukkitPermissionManager extends RestartableThread
player.setOp((asterisk != null) ? asterisk : false); player.setOp((asterisk != null) ? asterisk : false);
// Show debugging information // Show debugging information
if(isDebugging(player)) if(isDebugging(player))
player.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix player.sendMessage(GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX
+ "[DEBUG] Inheritances list: {_LG}" + Arrays.toString(result.getDeorderedGroups()) + "[DEBUG] Inheritances list: {_LG}" + Arrays.toString(result.getDeorderedGroups())
+ "{_LS}; you have total {_LG}" + attachment.getPermissions().size() + "{_LS}; you have total {_LG}" + attachment.getPermissions().size()
+ "{_LS} permissions.")); + "{_LS} permissions."));

9
src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java

@ -16,6 +16,7 @@ public class BukkitCommands
{ {
private final BukkitPluginMain rscp; private final BukkitPluginMain rscp;
private final CommandUser cmdUser; private final CommandUser cmdUser;
private final CommandGroup cmdGroup;
private final CommandLock cmdLock; private final CommandLock cmdLock;
private final CommandFetch cmdFetch; private final CommandFetch cmdFetch;
private final CommandDebug cmdDebug; private final CommandDebug cmdDebug;
@ -26,6 +27,7 @@ public class BukkitCommands
{ {
this.rscp = plugin; this.rscp = plugin;
cmdUser = new CommandUser(rscp); cmdUser = new CommandUser(rscp);
cmdGroup = new CommandGroup(rscp);
cmdLock = new CommandLock(rscp); cmdLock = new CommandLock(rscp);
cmdFetch = new CommandFetch(rscp); cmdFetch = new CommandFetch(rscp);
cmdDebug = new CommandDebug(rscp); cmdDebug = new CommandDebug(rscp);
@ -50,9 +52,9 @@ public class BukkitCommands
@Override @Override
public void run() public void run()
{ {
sender.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix sender.sendMessage(GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX
+ "Migration from PermissionsEx (MySQL backend) done!")); + "Migration from PermissionsEx (MySQL backend) done!"));
sender.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix sender.sendMessage(GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX
+ "Check the latest database row for new data.")); + "Check the latest database row for new data."));
} }
}); });
@ -123,6 +125,9 @@ public class BukkitCommands
case "user": case "user":
cmdUser.onUserCommandHub(sender, args); cmdUser.onUserCommandHub(sender, args);
return; return;
case "group":
cmdGroup.onGroupCommandHub(sender, args);
return;
case "lock": case "lock":
cmdLock.executeLock(sender, args); cmdLock.executeLock(sender, args);
return; return;

124
src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandGroup.java

@ -0,0 +1,124 @@
package ru.simsonic.rscPermissions.Bukkit.Commands;
import java.util.ArrayList;
import org.bukkit.command.CommandSender;
import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException;
import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.Engine.Backends.DatabaseTransaction;
import ru.simsonic.rscPermissions.Engine.ResolutionResult;
public class CommandGroup
{
private final BukkitPluginMain rscp;
CommandGroup(BukkitPluginMain plugin)
{
this.rscp = plugin;
}
public void onGroupCommandHub(CommandSender sender, String[] args) throws CommandAnswerException
{
/*
/rscp - command
group - 0
<entity> - 1
*/
if(sender.hasPermission("rscp.admin"))
{
/*
if(args.length < 3)
return;
final Player player = BukkitUtilities.findOnlinePlayer(args[1]);
if(player != null)
args[1] = player.getName();
final ResolutionResult result = (player != null)
? rscp.permissionManager.getResult(player)
: rscp.permissionManager.getResult(args[1]);
switch(args[2].toLowerCase())
{
case "prefix":
case "p":
viewPrefix(result, args[1]);
break;
case "suffix":
case "s":
viewSuffix(result, args[1]);
break;
case "listpermissions":
case "lp":
listPermissions(result, args[1]);
break;
case "listgroups":
case "lg":
listGroups(result, args[1]);
break;
case "addgroup":
case "ag":
// TO DO HERE
addGroup(result, args[1], null, null, null);
break;
case "removegroup":
case "rg":
// TO DO HERE
removeGroup(result, args[1], null);
break;
default:
break;
}
*/
} else
throw new CommandAnswerException("Not enough permissions.");
}
/*
private void viewPrefix(ResolutionResult result, String user) throws CommandAnswerException
{
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>();
answer.add("Calculated prefix for user {_YL}" + user + "{_LS} is:");
answer.add("{_R}\"" + result.prefix + "{_R}\"");
throw new CommandAnswerException(answer);
}
private void viewSuffix(ResolutionResult result, String user) throws CommandAnswerException
{
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>();
answer.add("Calculated suffix for user {_YL}" + user + "{_LS} is:");
answer.add("{_R}\"" + result.suffix + "{_R}\"");
throw new CommandAnswerException(answer);
}
private void listPermissions(ResolutionResult result, String user) throws CommandAnswerException
{
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>();
answer.add("Permission list for user {_YL}" + user + "{_LS}:");
final ArrayList<String> sorted_keys = new ArrayList<>(result.permissions.keySet());
Collections.sort(sorted_keys);
for(String perm : sorted_keys)
answer.add((result.permissions.get(perm) ? "{_LG}" : "{_LR}") + perm);
throw new CommandAnswerException(answer);
}
private void listGroups(ResolutionResult result, String user) throws CommandAnswerException
{
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>();
answer.add("Group list for user {_YL}" + user + "{_LS}:");
for(String group : result.getOrderedGroups())
answer.add("{_LG}" + group);
throw new CommandAnswerException(answer);
}
*/
private void addGroup(ResolutionResult result, String group, String parent, String destination, Integer seconds) throws CommandAnswerException
{
final ArrayList<String> answer = new ArrayList<>();
final DatabaseTransaction databaseTransaction = new DatabaseTransaction(rscp);
databaseTransaction.apply();
throw new CommandAnswerException(answer);
}
private void removeGroup(ResolutionResult result, String group, String parent) throws CommandAnswerException
{
final ArrayList<String> answer = new ArrayList<>();
throw new CommandAnswerException(answer);
}
}

6
src/main/java/ru/simsonic/rscPermissions/BukkitPluginMain.java

@ -31,7 +31,7 @@ public final class BukkitPluginMain extends JavaPlugin
{ {
public static final Logger consoleLog = Bukkit.getLogger(); public static final Logger consoleLog = Bukkit.getLogger();
public final Settings settings = new BukkitPluginConfiguration(this); public final Settings settings = new BukkitPluginConfiguration(this);
public final BukkitUpdater updating = new BukkitUpdater(this, Settings.updaterURL, Settings.chatPrefix); public final BukkitUpdater updating = new BukkitUpdater(this, Settings.UPDATER_URL, Settings.CHAT_PREFIX);
public final BackendJson localStorage = new BackendJson(getDataFolder()); public final BackendJson localStorage = new BackendJson(getDataFolder());
public final BackendDatabase connection = new BackendDatabase(consoleLog); public final BackendDatabase connection = new BackendDatabase(consoleLog);
public final InternalCache internalCache = new InternalCache(); public final InternalCache internalCache = new InternalCache();
@ -67,7 +67,7 @@ public final class BukkitPluginMain extends JavaPlugin
contents.filterServerId(getServer().getServerId()).filterLifetime(); contents.filterServerId(getServer().getServerId()).filterLifetime();
internalCache.fill(contents); internalCache.fill(contents);
getServer().getConsoleSender().sendMessage(GenericChatCodes.processStringStatic( getServer().getConsoleSender().sendMessage(GenericChatCodes.processStringStatic(
(Settings.chatPrefix + Phrases.FETCHED_LOCAL_CACHE.toString()) (Settings.CHAT_PREFIX + Phrases.FETCHED_LOCAL_CACHE.toString())
.replace("{:E}", String.valueOf(contents.entities.length)) .replace("{:E}", String.valueOf(contents.entities.length))
.replace("{:P}", String.valueOf(contents.permissions.length)) .replace("{:P}", String.valueOf(contents.permissions.length))
.replace("{:I}", String.valueOf(contents.inheritance.length)))); .replace("{:I}", String.valueOf(contents.inheritance.length))));
@ -153,7 +153,7 @@ public final class BukkitPluginMain extends JavaPlugin
} }
} catch(CommandAnswerException ex) { } catch(CommandAnswerException ex) {
for(String answer : ex.getMessageArray()) for(String answer : ex.getMessageArray())
sender.sendMessage(GenericChatCodes.processStringStatic(Settings.chatPrefix + answer)); sender.sendMessage(GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX + answer));
} }
return true; return true;
} }

99
src/main/java/ru/simsonic/rscPermissions/Engine/Backends/BackendDatabase.java

@ -3,6 +3,8 @@ package ru.simsonic.rscPermissions.Engine.Backends;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import ru.simsonic.rscCommonsLibrary.ConnectionMySQL; import ru.simsonic.rscCommonsLibrary.ConnectionMySQL;
@ -163,4 +165,101 @@ public class BackendDatabase extends ConnectionMySQL
setupQueryTemplate("{ID}", Long.toString(id)); setupQueryTemplate("{ID}", Long.toString(id));
executeUpdateT("DELETE FROM `{DATABASE}`.`{PREFIX}inheritance` WHERE `id` = '{ID}';"); executeUpdateT("DELETE FROM `{DATABASE}`.`{PREFIX}inheritance` WHERE `id` = '{ID}';");
} }
public synchronized void insertEntity(
Long id,
String entity, EntityType type,
String prefix, String suffix, Integer lifetime)
{
setupQueryTemplate("{TABLE}", "entities");
final Map<String, String> fields = new HashMap<>();
// Required fields
fields.put("entity", quoteValue(entity));
fields.put("entity_type", type.equals(EntityType.PLAYER) ? "b'1'" : "b'0'");
// Optional fields
if(id != null)
fields.put("id", Long.toString(id));
if(prefix != null)
fields.put("prefix", quoteValue(prefix));
if(suffix != null)
fields.put("suffix", quoteValue(suffix));
if(lifetime != null)
fields.put("lifetime", lifetimeToValue(lifetime));
insertRow(fields);
}
public synchronized void insertPermissions(
Long id,
String entity, EntityType type,
String permission, boolean value,
String destination, Integer expirience, Integer lifetime)
{
setupQueryTemplate("{TABLE}", "permissions");
final Map<String, String> fields = new HashMap<>();
// Required fields
fields.put("entity", quoteValue(entity));
fields.put("entity_type", type.equals(EntityType.PLAYER) ? "b'1'" : "b'0'");
fields.put("permission", quoteValue(permission));
fields.put("value", value ? "b'1'" : "b'0'");
// Optional fields
if(id != null)
fields.put("id", Long.toString(id));
if(destination != null)
fields.put("destination", quoteValue(destination));
if(expirience != null)
fields.put("expirience", Integer.toString(expirience));
if(lifetime != null)
fields.put("lifetime", lifetimeToValue(lifetime));
insertRow(fields);
}
public synchronized void insertInheritance(
Long id,
String entity, String parent, EntityType type, Integer priority,
String destination, Integer expirience, Integer lifetime)
{
setupQueryTemplate("{TABLE}", "inheritance");
final Map<String, String> fields = new HashMap<>();
// Required fields
fields.put("entity", quoteValue(entity));
fields.put("parent", quoteValue(parent));
fields.put("inheritance_type", type.equals(EntityType.PLAYER) ? "b'1'" : "b'0'");
// Optional fields
if(id != null)
fields.put("id", Long.toString(id));
if(priority != null)
fields.put("inheritance_priority", Integer.toString(priority));
if(destination != null)
fields.put("destination", quoteValue(destination));
if(expirience != null)
fields.put("expirience", Integer.toString(expirience));
if(lifetime != null)
fields.put("lifetime", lifetimeToValue(lifetime));
insertRow(fields);
}
private String quoteValue(String value)
{
return new StringBuilder("'").append(value).append("'").toString();
}
private String lifetimeToValue(int lifetime)
{
if(lifetime < 0)
return "NULL";
return new StringBuilder("NOW() + INTERVAL ").append(lifetime).append(" SECOND").toString();
}
private void insertRow(Map<String, String> fields)
{
if(fields.isEmpty())
return;
final StringBuilder sbf = new StringBuilder();
final StringBuilder sbv = new StringBuilder();
final String sep = ", ";
for(Map.Entry<String, String> entry : fields.entrySet())
{
sbf.append("`").append(entry.getKey()).append("`").append(sep);
sbv.append(entry.getValue()).append(sep);
}
sbf.setLength(sbf.length() - sep.length());
sbv.setLength(sbv.length() - sep.length());
setupQueryTemplate("{FIELDS}", sbf.toString());
setupQueryTemplate("{VALUES}", sbv.toString());
executeUpdateT("INSERT INTO `{DATABASE}`.`{PREFIX}{TABLE}` ({FIELDS}) VALUES ({VALUES});");
}
} }

61
src/main/java/ru/simsonic/rscPermissions/Engine/CommandUtilities.java

@ -1,7 +1,68 @@
package ru.simsonic.rscPermissions.Engine; package ru.simsonic.rscPermissions.Engine;
import ru.simsonic.rscCommonsLibrary.TimeIntervalParser;
import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException;
import ru.simsonic.rscPermissions.API.Destination;
public class CommandUtilities public class CommandUtilities
{ {
public static class CommandParams
{
public Integer expirience;
public Destination destination;
public Integer lifetime;
}
public static CommandParams parseCommandParams(String[] args) throws CommandAnswerException
{
// /rscp <target> <action> <object> [params]
final CommandParams result = new CommandParams();
for(int index = 0; index < args.length && args[index] != null; index += 1)
{
final boolean isLastArg = (index != args.length - 1);
if(args[index] == null)
break;
switch(args[index].toLowerCase())
{
case "":
break;
case "e":
case "exp":
case "expirience":
if(isLastArg)
throw new CommandAnswerException("RequiresOneMoreArg");
try
{
result.expirience = Integer.parseInt(args[index + 1]);
} catch(NumberFormatException ex) {
throw new CommandAnswerException("NumberFormatException: " + args[index + 1]);
} catch(NullPointerException ex) {
throw new CommandAnswerException("NullPointerException: args #" + (index + 1));
}
index += 1;
break;
case "d":
case "dest":
case "destination":
if(isLastArg)
throw new CommandAnswerException("RequiresOneMoreArg");
if(args[index + 1] == null || "".equals(args[index + 1]))
throw new CommandAnswerException("NotEnoughArguments: args #" + (index + 1));
result.destination = Destination.parseDestination(args[index + 1]);
break;
case "l":
case "lifetime":
if(isLastArg)
throw new CommandAnswerException("RequiresOneMoreArg");
result.lifetime = TimeIntervalParser.parseTimeInterval(args[index + 1]);
if(result.lifetime < 0)
result.lifetime = Integer.MAX_VALUE;
break;
default:
throw new CommandAnswerException("UnknownCommandParam: " + args[index]);
}
}
return result;
}
public static boolean argumentToBoolean(String arg, Boolean prevForToggle) throws IllegalArgumentException public static boolean argumentToBoolean(String arg, Boolean prevForToggle) throws IllegalArgumentException
{ {
if(arg == null || "".equals(arg)) if(arg == null || "".equals(arg))

18
src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java

@ -243,7 +243,7 @@ public class InternalCache
} }
params.depth -= 1; params.depth -= 1;
params.groupList.add(depthPrefix(params.depth) + currentParent.entity params.groupList.add(depthPrefix(params.depth) + currentParent.entity
+ ("".equals(instantiator) ? "" : Settings.separator + instantiator)); + ("".equals(instantiator) ? "" : Settings.SEPARATOR + instantiator));
// Prefixes and suffixes // Prefixes and suffixes
params.parentEntity = currentParent; params.parentEntity = currentParent;
params.instantiator = instantiator; params.instantiator = instantiator;
@ -259,7 +259,7 @@ public class InternalCache
if(depth > 0) if(depth > 0)
{ {
final char[] levelParent = new char[depth]; final char[] levelParent = new char[depth];
levelParent[depth - 1] = Settings.groupLevelTab; levelParent[depth - 1] = Settings.GROUP_LEVEL_TAB;
return new String(levelParent).replace('\0', ' '); return new String(levelParent).replace('\0', ' ');
} }
return ""; return "";
@ -271,9 +271,9 @@ public class InternalCache
result.prefix = params.parentEntity.prefix; result.prefix = params.parentEntity.prefix;
result.suffix = params.parentEntity.suffix; result.suffix = params.parentEntity.suffix;
if(result.prefix == null || "".equals(result.prefix)) if(result.prefix == null || "".equals(result.prefix))
result.prefix = (gipp ? Settings.textInheriter : ""); result.prefix = (gipp ? Settings.TEXT_INHERITER : "");
if(result.suffix == null || "".equals(result.suffix)) if(result.suffix == null || "".equals(result.suffix))
result.suffix = (gipp ? Settings.textInheriter : ""); result.suffix = (gipp ? Settings.TEXT_INHERITER : "");
final StringBuilder sbp = new StringBuilder(); final StringBuilder sbp = new StringBuilder();
final StringBuilder sbs = new StringBuilder(); final StringBuilder sbs = new StringBuilder();
for(ResolutionResult inherited : intermediate) for(ResolutionResult inherited : intermediate)
@ -283,10 +283,10 @@ public class InternalCache
if(inherited.suffix != null) if(inherited.suffix != null)
sbs.append(inherited.suffix); sbs.append(inherited.suffix);
} }
result.prefix = result.prefix.replace(Settings.textInheriter, sbp.toString()); result.prefix = result.prefix.replace(Settings.TEXT_INHERITER, sbp.toString());
result.suffix = result.suffix.replace(Settings.textInheriter, sbs.toString()); result.suffix = result.suffix.replace(Settings.TEXT_INHERITER, sbs.toString());
result.prefix = result.prefix.replace(Settings.instantiator, params.instantiator); result.prefix = result.prefix.replace(Settings.INSTANTIATOR, params.instantiator);
result.suffix = result.suffix.replace(Settings.instantiator, params.instantiator); result.suffix = result.suffix.replace(Settings.INSTANTIATOR, params.instantiator);
return result; return result;
} }
private void processPermissions(ResolutionParams params, List<RowPermission> permissions) private void processPermissions(ResolutionParams params, List<RowPermission> permissions)
@ -294,7 +294,7 @@ public class InternalCache
for(RowPermission row : permissions) for(RowPermission row : permissions)
if(isPermissionApplicable(params, row)) if(isPermissionApplicable(params, row))
params.finalPerms.put( params.finalPerms.put(
row.permission.replace(Settings.instantiator, params.instantiator), row.permission.replace(Settings.INSTANTIATOR, params.instantiator),
row.value); row.value);
} }
private boolean isPermissionApplicable(ResolutionParams params, RowPermission row) private boolean isPermissionApplicable(ResolutionParams params, RowPermission row)

2
src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionResult.java

@ -40,7 +40,7 @@ public class ResolutionResult
public String[] getDeorderedGroups() public String[] getDeorderedGroups()
{ {
final ArrayList<String> list = new ArrayList(groups.size()); final ArrayList<String> list = new ArrayList(groups.size());
final String separator = new String(new char[] { Settings.groupLevelTab }); final String separator = new String(new char[] { Settings.GROUP_LEVEL_TAB });
for(String group : groups) for(String group : groups)
{ {
String[] splitted = group.split(separator); String[] splitted = group.split(separator);

Loading…
Cancel
Save