Browse Source

Day finalization commit.

master
Stanislav 11 years ago
parent
commit
c2f05dc2ec
  1. 1
      src/main/java/ru/simsonic/rscPermissions/Backends/BackendMySQL.java
  2. 43
      src/main/java/ru/simsonic/rscPermissions/DataTypes/Destination.java
  3. 2
      src/main/java/ru/simsonic/rscPermissions/DataTypes/RowEntity.java
  4. 10
      src/main/java/ru/simsonic/rscPermissions/InternalCache/BrandNewCache.java
  5. 6
      src/main/java/ru/simsonic/rscPermissions/InternalCache/LocalCacheTree.java
  6. 3
      src/main/java/ru/simsonic/rscPermissions/Settings.java
  7. 8
      src/main/resources/sqlt/Cleanup_tables.sqlt
  8. 8
      src/main/resources/sqlt/Initialize_main_v1.sqlt

1
src/main/java/ru/simsonic/rscPermissions/Backends/BackendMySQL.java

@ -112,6 +112,7 @@ public class BackendMySQL extends ConnectionMySQL implements Backend
row.entityType = EntityType.byValue(rs.getInt("entity_type"));
row.prefix = rs.getString("prefix");
row.suffix = rs.getString("suffix");
row.lifetime = rs.getTimestamp("lifetime");
result.add(row);
}
rs.close();

43
src/main/java/ru/simsonic/rscPermissions/DataTypes/Destination.java

@ -44,20 +44,20 @@ public class Destination
}
private boolean IsWorldApplicable(World world, String instantiator)
{
if(this.world == null || "".equals(this.world) || "*".equals(this.world))
if(this.world == null || this.world.isEmpty() || "*".equals(this.world))
return true;
final String instantiated = (instantiator != null && !"".equals(instantiator)) ?
this.world.replaceAll(Settings.instantiatorRegExp, instantiator) :
this.world;
final String instantiated = (instantiator != null && !instantiator.isEmpty())
? this.world.replace(Settings.instantiator, instantiator)
: this.world;
return wildcardTesting(world.getName(), instantiated);
}
private boolean IsRegionApplicable(Set<String> regions, String instantiator)
{
if(this.region == null || "".equals(this.region) || "*".equals(this.region))
return true;
final String instantiated = (instantiator != null && !"".equals(instantiator)) ?
this.region.replaceAll(Settings.instantiatorRegExp, instantiator) :
this.region;
final String instantiated = (instantiator != null && !"".equals(instantiator))
? this.region.replace(Settings.instantiator, instantiator)
: this.region;
for(String regionId : regions)
if(wildcardTesting(regionId, instantiated))
return true;
@ -73,32 +73,31 @@ public class Destination
"<wildcard>" + testing.toLowerCase() + "</wildcard>",
"<wildcard>" + pattern.toLowerCase() + "</wildcard>");
}
private static final String destinationSplitting = "\\s*[;,\\r\\n]+\\s*";
public static Destination[] ParseDestinations(String destinations)
{
if(destinations == null)
if(destinations == null || destinations.isEmpty())
return new Destination[] { new Destination() };
if(destinations.isEmpty())
return new Destination[] { new Destination() };
final String[] destinationsList = destinations.split("\\s*(?:;|,|\\r|\\n)+\\s*");
final String[] destinationsList = destinations.split(destinationSplitting);
final ArrayList<Destination> result = new ArrayList(destinationsList.length);
for(int nDestination = 0; nDestination < destinationsList.length; nDestination += 1)
if(destinationsList[nDestination].isEmpty() == false)
result.add(ParseDestination(destinationsList[nDestination]));
for(String inList : destinationsList)
if(inList != null && !inList.isEmpty())
result.add(ParseDestination(inList));
return result.toArray(new Destination[result.size()]);
}
private static final Pattern patternDestination = Pattern.compile(
"<destination>" + "(?:((?:\\w|\\*|\\?)*):)?((?:\\w|\\*|\\?)*)?(?:@((?:\\w|\\*|\\?)*))?" + "</destination>");
"^(?:((?:\\w|\\*|\\?)*):)?((?:\\w|\\*|\\?)*)?(?:@((?:\\w|\\*|\\?)*))?$");
private static Destination ParseDestination(String destination)
{
Matcher match = patternDestination.matcher("<destination>" + destination + "</destination>");
final Matcher match = patternDestination.matcher(destination);
if(match.find())
{
final String group1 = match.group(1);
final String group2 = match.group(2);
final String group3 = match.group(3);
final String region = (group1 == null || "".equals(group1)) ? "*" : group1;
final String world = (group2 == null || "".equals(group2)) ? "*" : group2;
final String serverId = (group3 == null || "".equals(group3)) ? "*" : group3;
final String groupR = match.group(1);
final String groupW = match.group(2);
final String groupS = match.group(3);
final String region = (groupR == null || "".equals(groupR)) ? "*" : groupR;
final String world = (groupW == null || "".equals(groupW)) ? "*" : groupW;
final String serverId = (groupS == null || "".equals(groupS)) ? "*" : groupS;
return new Destination(region, world, serverId);
}
return new Destination();

2
src/main/java/ru/simsonic/rscPermissions/DataTypes/RowEntity.java

@ -1,4 +1,5 @@
package ru.simsonic.rscPermissions.DataTypes;
import java.sql.Timestamp;
public class RowEntity extends AbstractRow
{
@ -6,6 +7,7 @@ public class RowEntity extends AbstractRow
public EntityType entityType;
public String prefix;
public String suffix;
public Timestamp lifetime;
@Override
public Table getTable()
{

10
src/main/java/ru/simsonic/rscPermissions/InternalCache/BrandNewCache.java

@ -136,7 +136,7 @@ public class BrandNewCache implements AbstractPermissionsCache
params.destRegions = new String[] {};
params.destWorld = player.getLocation().getWorld().getName();
params.destServerId = plugin.getServer().getServerId();
// TO DO
resolvePlayer(params);
}
public void resolvePlayer(String player)
{
@ -145,16 +145,16 @@ public class BrandNewCache implements AbstractPermissionsCache
params.destRegions = new String[] {};
params.destWorld = "";
params.destServerId = plugin.getServer().getServerId();
// TO DO
resolvePlayer(params);
}
private void resolvePlayer(ResolutionParams params)
{
final ArrayList<InheritanceLeaf> leafs = new ArrayList<>();
final ArrayList<InheritanceLeaf> applicableBranches = new ArrayList<>();
for(String identifier : params.applicableIdentifiers)
for(String tree : entityTrees.keySet())
if(tree.equals(identifier))
leafs.add(entityTrees.get(tree));
Collections.sort(leafs);
applicableBranches.add(entityTrees.get(tree));
Collections.sort(applicableBranches);
final InheritanceLeaf root = new InheritanceLeaf();
}
public void recoursion(ResolutionParams params, InheritanceLeaf branch)

6
src/main/java/ru/simsonic/rscPermissions/InternalCache/LocalCacheTree.java

@ -100,7 +100,7 @@ public class LocalCacheTree extends LocalCacheData
String permission = row.permission;
// Additional processing
if(permission.contains(Settings.instantiator) && (leaf.instance != null))
permission = permission.replaceAll(Settings.instantiatorRegExp, leaf.instance);
permission = permission.replace(Settings.instantiator, leaf.instance);
permissions.put(permission, row.value);
}
RowEntity entity = entities_g.get(leaf.group.toLowerCase());
@ -110,8 +110,8 @@ public class LocalCacheTree extends LocalCacheData
prefix = entity.prefix.replace("%", prefix);
if(entity.suffix != null && !"".equals(entity.suffix))
suffix = entity.suffix.replace("%", suffix);
prefix = prefix.replaceAll(Settings.instantiatorRegExp, leaf.instance);
suffix = suffix.replaceAll(Settings.instantiatorRegExp, leaf.instance);
prefix = prefix.replace(Settings.instantiator, leaf.instance);
suffix = suffix.replace(Settings.instantiator, leaf.instance);
}
}
// User permissions

3
src/main/java/ru/simsonic/rscPermissions/Settings.java

@ -21,10 +21,9 @@ public class Settings
private int nAutoReloadDelayTicks = 20 * 900;
private int nRegionFinderGranularity = 1000;
public final int CurrentVersion = 3;
public static final String instantiator = "?";
public static final String separator = ".";
public static final String separatorRegExp = "\\.";
public static final String instantiator = "?";
public static final String instantiatorRegExp = "\\?";
public Settings(final MainPluginClass plugin)
{
this.plugin = plugin;

8
src/main/resources/sqlt/Cleanup_tables.sqlt

@ -1,9 +1,9 @@
DELETE FROM
`{DATABASE}`.`{PREFIX}entities`
WHERE
(`prefix` = '' OR `prefix` IS NULL)
AND
(`suffix` = '' OR `suffix` IS NULL);
((`prefix` = '' OR `prefix` IS NULL) AND (`suffix` = '' OR `suffix` IS NULL))
OR
`lifetime` < CURRENT_TIMESTAMP;
DELETE FROM
`{DATABASE}`.`{PREFIX}permissions`
@ -18,4 +18,4 @@ WHERE
DELETE FROM
`{DATABASE}`.`{PREFIX}ladders`
WHERE
`climber_type` = b'1' AND `rank` = 0;
`climber_type` = b'1' AND `rank` = 0;

8
src/main/resources/sqlt/Initialize_main_v1.sqlt

@ -4,6 +4,7 @@ CREATE TABLE IF NOT EXISTS `{DATABASE}`.`{PREFIX}entities` (
`entity_type` TINYINT(1) NOT NULL,
`prefix` VARCHAR(48) DEFAULT NULL,
`suffix` VARCHAR(48) DEFAULT NULL,
`lifetime` TIMESTAMP NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id_UNIQUE` (`id`),
UNIQUE KEY `entity_UNIQUE` (`entity`, `entity_type`)
@ -61,7 +62,7 @@ CREATE TABLE IF NOT EXISTS `{DATABASE}`.`{PREFIX}servers` (
UNIQUE KEY `serverid_UNIQUE` (`serverid`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET='utf8' COLLATE 'utf8_general_ci';
/* Merged updates 0.1a -> 0.5.9b -> 0.6b -> 0.7.5 */
/* Merged updates 0.1a -> 0.5.9b -> 0.6b -> 0.8.15b */
ALTER IGNORE TABLE `{DATABASE}`.`{PREFIX}entities`
COLLATE 'utf8_general_ci';
@ -86,4 +87,7 @@ ALTER IGNORE TABLE `{DATABASE}`.`{PREFIX}ladders`
COLLATE 'utf8_general_ci';
ALTER IGNORE TABLE `{DATABASE}`.`{PREFIX}servers`
COLLATE 'utf8_general_ci';
COLLATE 'utf8_general_ci';
ALTER TABLE `{DATABASE}`.`{PREFIX}entities`
ADD COLUMN `lifetime` TIMESTAMP NULL DEFAULT NULL AFTER `suffix`;

Loading…
Cancel
Save