Browse Source

Upgrade for use rscCommonsLibrary v2.2.2.

master
Stanislav Usenkov 9 years ago
parent
commit
a835e5f90e
  1. 4
      pom.xml
  2. 7
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitFetching.java
  3. 16
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/ArgumentUtilities.java
  4. 7
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java
  5. 8
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandEntity.java
  6. 102
      src/main/java/ru/simsonic/rscPermissions/Engine/Backends/BackendDatabase.java

4
pom.xml

@ -4,7 +4,7 @@
<groupId>ru.simsonic</groupId> <groupId>ru.simsonic</groupId>
<artifactId>rscPermissions</artifactId> <artifactId>rscPermissions</artifactId>
<version>0.10.7b</version> <version>0.10.8b-SNAPSHOT</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>rscPermissions</name> <name>rscPermissions</name>
@ -83,7 +83,7 @@
<dependency> <dependency>
<groupId>ru.simsonic</groupId> <groupId>ru.simsonic</groupId>
<artifactId>rscCommonsLibrary</artifactId> <artifactId>rscCommonsLibrary</artifactId>
<version>2.2.0</version> <version>2.2.2</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>

7
src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitFetching.java

@ -1,5 +1,6 @@
package ru.simsonic.rscPermissions.Bukkit; package ru.simsonic.rscPermissions.Bukkit;
import java.sql.SQLException;
import java.util.Set; import java.util.Set;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -21,12 +22,18 @@ public class BukkitFetching extends RestartableThread
final long queryStartTime = System.currentTimeMillis(); final long queryStartTime = System.currentTimeMillis();
Thread.currentThread().setName("rscp:DatabaseFetchingThread"); Thread.currentThread().setName("rscp:DatabaseFetchingThread");
Thread.currentThread().setPriority(Thread.MIN_PRIORITY); Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
try
{
if(rscp.connection.isConnected() == false) if(rscp.connection.isConnected() == false)
if(rscp.connection.connect() == false) if(rscp.connection.connect() == false)
{ {
BukkitPluginMain.consoleLog.warning("[rscp] Cannot connect to database! Using local cache only."); BukkitPluginMain.consoleLog.warning("[rscp] Cannot connect to database! Using local cache only.");
return; return;
} }
} catch(SQLException ex) {
BukkitPluginMain.consoleLog.warning(ex.toString());
return;
}
// Download rows from DB and put them into local cache // Download rows from DB and put them into local cache
final DatabaseContents contents = remoteToLocal(); final DatabaseContents contents = remoteToLocal();
rscp.connection.disconnect(); rscp.connection.disconnect();

16
src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/ArgumentUtilities.java

@ -6,28 +6,26 @@ import ru.simsonic.rscPermissions.API.Destination;
public class ArgumentUtilities public class ArgumentUtilities
{ {
public static class CommandParams public static class OptionalParams
{ {
public Integer expirience; public Integer expirience;
public Destination destination; public Destination destination;
public Integer lifetime; public Integer lifetime;
} }
public static CommandParams parseCommandParams(String[] args) throws CommandAnswerException public static OptionalParams parseCommandParams(String[] args) throws CommandAnswerException
{ {
// /rscp <target> <action> <object> [params] // /rscp <target> <action> <object> [params]
final CommandParams result = new CommandParams(); final OptionalParams result = new OptionalParams();
for(int index = 0; index < args.length && args[index] != null; index += 1) for(int index = 0; index < args.length && args[index] != null; index += 1)
{ {
final boolean isLastArg = (index == args.length - 1); final boolean isLastArg = (index == args.length - 1);
if(isLastArg)
throw new CommandAnswerException("RequiresOneMoreArg");
switch(args[index].toLowerCase()) switch(args[index].toLowerCase())
{ {
case "":
break;
case "e": case "e":
case "exp": case "exp":
case "expirience": case "expirience":
if(isLastArg)
throw new CommandAnswerException("RequiresOneMoreArg");
try try
{ {
index += 1; index += 1;
@ -41,8 +39,6 @@ public class ArgumentUtilities
case "d": case "d":
case "dest": case "dest":
case "destination": case "destination":
if(isLastArg)
throw new CommandAnswerException("RequiresOneMoreArg");
index += 1; index += 1;
if(args[index] == null || "".equals(args[index])) if(args[index] == null || "".equals(args[index]))
throw new CommandAnswerException("NotEnoughArguments: args #" + index); throw new CommandAnswerException("NotEnoughArguments: args #" + index);
@ -50,8 +46,6 @@ public class ArgumentUtilities
break; break;
case "l": case "l":
case "lifetime": case "lifetime":
if(isLastArg)
throw new CommandAnswerException("RequiresOneMoreArg");
index += 1; index += 1;
result.lifetime = TimeIntervalParser.parseTimeInterval(args[index]); result.lifetime = TimeIntervalParser.parseTimeInterval(args[index]);
if(result.lifetime < 0) if(result.lifetime < 0)

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

@ -1,5 +1,6 @@
package ru.simsonic.rscPermissions.Bukkit.Commands; package ru.simsonic.rscPermissions.Bukkit.Commands;
import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.logging.Level; import java.util.logging.Level;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -38,7 +39,13 @@ public class BukkitCommands
try try
{ {
setName("rscp:MigrateFromPermissionsEx-SQL"); setName("rscp:MigrateFromPermissionsEx-SQL");
try
{
rscp.connection.executeUpdateT("Migrate_from_PermissionsEx"); rscp.connection.executeUpdateT("Migrate_from_PermissionsEx");
} catch(SQLException ex) {
BukkitPluginMain.consoleLog.warning(ex.toString());
return;
}
rscp.fetching.join(); rscp.fetching.join();
rscp.getServer().getScheduler().runTask(rscp, new Runnable() rscp.getServer().getScheduler().runTask(rscp, new Runnable()
{ {

8
src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandEntity.java

@ -15,7 +15,7 @@ import ru.simsonic.rscPermissions.API.RowEntity;
import ru.simsonic.rscPermissions.API.RowInheritance; import ru.simsonic.rscPermissions.API.RowInheritance;
import ru.simsonic.rscPermissions.API.RowPermission; import ru.simsonic.rscPermissions.API.RowPermission;
import ru.simsonic.rscPermissions.Bukkit.BukkitUtilities; import ru.simsonic.rscPermissions.Bukkit.BukkitUtilities;
import ru.simsonic.rscPermissions.Bukkit.Commands.ArgumentUtilities.CommandParams; import ru.simsonic.rscPermissions.Bukkit.Commands.ArgumentUtilities.OptionalParams;
import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.Engine.Matchers; import ru.simsonic.rscPermissions.Engine.Matchers;
import ru.simsonic.rscPermissions.Engine.ResolutionResult; import ru.simsonic.rscPermissions.Engine.ResolutionResult;
@ -170,7 +170,7 @@ public class CommandEntity
throw new CommandAnswerException("FEW ARGUMENTS"); throw new CommandAnswerException("FEW ARGUMENTS");
final String target = args[2]; final String target = args[2];
args = Arrays.copyOfRange(args, 3, args.length); args = Arrays.copyOfRange(args, 3, args.length);
final CommandParams optional = ArgumentUtilities.parseCommandParams(args); final OptionalParams optional = ArgumentUtilities.parseCommandParams(args);
switch(subcommand) switch(subcommand)
{ {
case "addgroup": case "addgroup":
@ -400,7 +400,7 @@ public class CommandEntity
answer.add("{_R}\"" + result.getSuffix() + "{_R}\""); answer.add("{_R}\"" + result.getSuffix() + "{_R}\"");
throw new CommandAnswerException(answer); throw new CommandAnswerException(answer);
} }
private void addGroup(RowEntity entity, String parent, CommandParams optional) throws CommandAnswerException private void addGroup(RowEntity entity, String parent, OptionalParams optional) throws CommandAnswerException
{ {
final String[] splitted = RowInheritance.splitIntoNameAndInstance(parent); final String[] splitted = RowInheritance.splitIntoNameAndInstance(parent);
final RowEntity existing = rscp.internalCache.findGroupEntity(splitted[0]); final RowEntity existing = rscp.internalCache.findGroupEntity(splitted[0]);
@ -417,7 +417,7 @@ public class CommandEntity
rscp.fetchNowAndReschedule(); rscp.fetchNowAndReschedule();
throw new CommandAnswerException("{_LG}All is ok? I don't ready to check it myself."); throw new CommandAnswerException("{_LG}All is ok? I don't ready to check it myself.");
} }
private void addPermission(RowEntity entity, String permission, CommandParams optional) throws CommandAnswerException private void addPermission(RowEntity entity, String permission, OptionalParams optional) throws CommandAnswerException
{ {
// final ArrayList<String> answer = new ArrayList<>(); // final ArrayList<String> answer = new ArrayList<>();
final RowPermission row = new RowPermission(); final RowPermission row = new RowPermission();

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

@ -15,23 +15,41 @@ import ru.simsonic.rscPermissions.API.RowPermission;
public class BackendDatabase extends ConnectionMySQL public class BackendDatabase extends ConnectionMySQL
{ {
private final Logger consoleLog;
public BackendDatabase(Logger logger) public BackendDatabase(Logger logger)
{ {
super(logger); this.consoleLog = logger;
} }
@Override @Override
public synchronized boolean connect() public synchronized boolean connect()
{
try
{ {
return super.connect() && executeUpdateT("Deployment"); return super.connect() && executeUpdateT("Deployment");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
return false;
} }
public synchronized void insertExampleRows() public synchronized void insertExampleRows()
{
try
{ {
executeUpdateT("ExampleContents"); executeUpdateT("ExampleContents");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
} }
public synchronized DatabaseContents retrieveContents() public synchronized DatabaseContents retrieveContents()
{ {
executeUpdateT("Cleanup");
final DatabaseContents result = new DatabaseContents(); final DatabaseContents result = new DatabaseContents();
try
{
executeUpdateT("Cleanup");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
return result;
}
result.entities = fetchEntities(); result.entities = fetchEntities();
result.permissions = fetchPermissions(); result.permissions = fetchPermissions();
result.inheritance = fetchInheritance(); result.inheritance = fetchInheritance();
@ -41,8 +59,7 @@ public class BackendDatabase extends ConnectionMySQL
private RowEntity[] fetchEntities() private RowEntity[] fetchEntities()
{ {
final ArrayList<RowEntity> result = new ArrayList<>(); final ArrayList<RowEntity> result = new ArrayList<>();
final ResultSet rs = executeQuery("SELECT * FROM `{DATABASE}`.`{PREFIX}entities`;"); try(final ResultSet rs = executeQuery("SELECT * FROM `{DATABASE}`.`{PREFIX}entities`;"))
try
{ {
while(rs.next()) while(rs.next())
{ {
@ -57,15 +74,14 @@ public class BackendDatabase extends ConnectionMySQL
} }
rs.close(); rs.close();
} catch(SQLException ex) { } catch(SQLException ex) {
logger.log(Level.WARNING, "[rscp] Exception in rs2e(): {0}", ex); consoleLog.warning(ex.toString());
} }
return result.toArray(new RowEntity[result.size()]); return result.toArray(new RowEntity[result.size()]);
} }
private RowPermission[] fetchPermissions() private RowPermission[] fetchPermissions()
{ {
final ArrayList<RowPermission> result = new ArrayList<>(); final ArrayList<RowPermission> result = new ArrayList<>();
final ResultSet rs = executeQuery("SELECT * FROM `{DATABASE}`.`{PREFIX}permissions`;"); try(final ResultSet rs = executeQuery("SELECT * FROM `{DATABASE}`.`{PREFIX}permissions`;"))
try
{ {
while(rs.next()) while(rs.next())
{ {
@ -82,15 +98,14 @@ public class BackendDatabase extends ConnectionMySQL
} }
rs.close(); rs.close();
} catch(SQLException ex) { } catch(SQLException ex) {
logger.log(Level.WARNING, "[rscp] Exception in rs2p(): {0}", ex); consoleLog.warning(ex.toString());
} }
return result.toArray(new RowPermission[result.size()]); return result.toArray(new RowPermission[result.size()]);
} }
private RowInheritance[] fetchInheritance() private RowInheritance[] fetchInheritance()
{ {
final ArrayList<RowInheritance> result = new ArrayList<>(); final ArrayList<RowInheritance> result = new ArrayList<>();
final ResultSet rs = executeQuery("SELECT * FROM `{DATABASE}`.`{PREFIX}inheritance`;"); try(final ResultSet rs = executeQuery("SELECT * FROM `{DATABASE}`.`{PREFIX}inheritance`;"))
try
{ {
while(rs.next()) while(rs.next())
{ {
@ -107,39 +122,76 @@ public class BackendDatabase extends ConnectionMySQL
} }
rs.close(); rs.close();
} catch(SQLException ex) { } catch(SQLException ex) {
logger.log(Level.WARNING, "[rscp] Exception in rs2i(): {0}", ex); consoleLog.warning(ex.toString());
} }
return result.toArray(new RowInheritance[result.size()]); return result.toArray(new RowInheritance[result.size()]);
} }
public synchronized void lockTableEntities() public synchronized void lockTableEntities()
{
try
{ {
executeUpdate("LOCK TABLES `{DATABASE}`.`{PREFIX}entities`;"); executeUpdate("LOCK TABLES `{DATABASE}`.`{PREFIX}entities`;");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
} }
public synchronized void lockTablePermissions() public synchronized void lockTablePermissions()
{
try
{ {
executeUpdate("LOCK TABLES `{DATABASE}`.`{PREFIX}permissions`;"); executeUpdate("LOCK TABLES `{DATABASE}`.`{PREFIX}permissions`;");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
} }
public synchronized void lockTableInheritance() public synchronized void lockTableInheritance()
{
try
{ {
executeUpdate("LOCK TABLES `{DATABASE}`.`{PREFIX}inheritance`;"); executeUpdate("LOCK TABLES `{DATABASE}`.`{PREFIX}inheritance`;");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
} }
public synchronized void unlockAllTables() public synchronized void unlockAllTables()
{
try
{ {
executeUpdate("UNLOCK TABLES;"); executeUpdate("UNLOCK TABLES;");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
} }
public synchronized void transactionStart() public synchronized void transactionStart()
{
try
{ {
executeUpdate("START TRANSACTION;"); executeUpdate("START TRANSACTION;");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
} }
public synchronized void transactionCommit() public synchronized void transactionCommit()
{
try
{ {
executeUpdate("COMMIT;"); executeUpdate("COMMIT;");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
} }
public synchronized void transactionCancel() public synchronized void transactionCancel()
{
try
{ {
executeUpdate("ROLLBACK;"); executeUpdate("ROLLBACK;");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
} }
public synchronized void updateEntityPrefix(String entity, EntityType type, String prefix) public synchronized void updateEntityPrefix(String entity, EntityType type, String prefix)
{
try
{ {
if("".equals(entity)) if("".equals(entity))
return; return;
@ -150,8 +202,13 @@ public class BackendDatabase extends ConnectionMySQL
setupQueryTemplate("{TEXT_TYPE}", "prefix"); setupQueryTemplate("{TEXT_TYPE}", "prefix");
setupQueryTemplate("{TEXT}", (prefix != null) ? "'" + prefix + "'" : "NULL"); setupQueryTemplate("{TEXT}", (prefix != null) ? "'" + prefix + "'" : "NULL");
executeUpdateT("UpdateEntity"); executeUpdateT("UpdateEntity");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
} }
public synchronized void updateEntitySuffix(String entity, EntityType type, String suffix) public synchronized void updateEntitySuffix(String entity, EntityType type, String suffix)
{
try
{ {
if("".equals(entity)) if("".equals(entity))
return; return;
@ -162,21 +219,39 @@ public class BackendDatabase extends ConnectionMySQL
setupQueryTemplate("{TEXT_TYPE}", "suffix"); setupQueryTemplate("{TEXT_TYPE}", "suffix");
setupQueryTemplate("{TEXT}", (suffix != null) ? "'" + suffix + "'" : "NULL"); setupQueryTemplate("{TEXT}", (suffix != null) ? "'" + suffix + "'" : "NULL");
executeUpdateT("UpdateEntity"); executeUpdateT("UpdateEntity");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
} }
public synchronized void removeEntityById(long id) public synchronized void removeEntityById(long id)
{
try
{ {
setupQueryTemplate("{ID}", Long.toString(id)); setupQueryTemplate("{ID}", Long.toString(id));
executeUpdate("DELETE FROM `{DATABASE}`.`{PREFIX}entities` WHERE `id` = '{ID}';"); executeUpdate("DELETE FROM `{DATABASE}`.`{PREFIX}entities` WHERE `id` = '{ID}';");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
} }
public synchronized void removePermissionsById(long id) public synchronized void removePermissionsById(long id)
{
try
{ {
setupQueryTemplate("{ID}", Long.toString(id)); setupQueryTemplate("{ID}", Long.toString(id));
executeUpdate("DELETE FROM `{DATABASE}`.`{PREFIX}permissions` WHERE `id` = '{ID}';"); executeUpdate("DELETE FROM `{DATABASE}`.`{PREFIX}permissions` WHERE `id` = '{ID}';");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
} }
public synchronized void removeInheritanceById(long id) public synchronized void removeInheritanceById(long id)
{
try
{ {
setupQueryTemplate("{ID}", Long.toString(id)); setupQueryTemplate("{ID}", Long.toString(id));
executeUpdate("DELETE FROM `{DATABASE}`.`{PREFIX}inheritance` WHERE `id` = '{ID}';"); executeUpdate("DELETE FROM `{DATABASE}`.`{PREFIX}inheritance` WHERE `id` = '{ID}';");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
} }
public synchronized void insertEntity( public synchronized void insertEntity(
Long id, Long id,
@ -258,6 +333,8 @@ public class BackendDatabase extends ConnectionMySQL
return new StringBuilder("NOW() + INTERVAL ").append(lifetime).append(" SECOND").toString(); return new StringBuilder("NOW() + INTERVAL ").append(lifetime).append(" SECOND").toString();
} }
private void insertRow(Map<String, String> fields) private void insertRow(Map<String, String> fields)
{
try
{ {
if(fields.isEmpty()) if(fields.isEmpty())
return; return;
@ -274,5 +351,8 @@ public class BackendDatabase extends ConnectionMySQL
setupQueryTemplate("{FIELDS}", sbf.toString()); setupQueryTemplate("{FIELDS}", sbf.toString());
setupQueryTemplate("{VALUES}", sbv.toString()); setupQueryTemplate("{VALUES}", sbv.toString());
executeUpdate("INSERT INTO `{DATABASE}`.`{PREFIX}{TABLE}` ({FIELDS}) VALUES ({VALUES});"); executeUpdate("INSERT INTO `{DATABASE}`.`{PREFIX}{TABLE}` ({FIELDS}) VALUES ({VALUES});");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
} }
} }

Loading…
Cancel
Save