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

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

@ -1,5 +1,6 @@
package ru.simsonic.rscPermissions.Bukkit;
import java.sql.SQLException;
import java.util.Set;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
@ -21,12 +22,18 @@ public class BukkitFetching extends RestartableThread
final long queryStartTime = System.currentTimeMillis();
Thread.currentThread().setName("rscp:DatabaseFetchingThread");
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
try
{
if(rscp.connection.isConnected() == false)
if(rscp.connection.connect() == false)
{
BukkitPluginMain.consoleLog.warning("[rscp] Cannot connect to database! Using local cache only.");
return;
}
} catch(SQLException ex) {
BukkitPluginMain.consoleLog.warning(ex.toString());
return;
}
// Download rows from DB and put them into local cache
final DatabaseContents contents = remoteToLocal();
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 static class CommandParams
public static class OptionalParams
{
public Integer expirience;
public Destination destination;
public Integer lifetime;
}
public static CommandParams parseCommandParams(String[] args) throws CommandAnswerException
public static OptionalParams parseCommandParams(String[] args) throws CommandAnswerException
{
// /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)
{
final boolean isLastArg = (index == args.length - 1);
if(isLastArg)
throw new CommandAnswerException("RequiresOneMoreArg");
switch(args[index].toLowerCase())
{
case "":
break;
case "e":
case "exp":
case "expirience":
if(isLastArg)
throw new CommandAnswerException("RequiresOneMoreArg");
try
{
index += 1;
@ -41,8 +39,6 @@ public class ArgumentUtilities
case "d":
case "dest":
case "destination":
if(isLastArg)
throw new CommandAnswerException("RequiresOneMoreArg");
index += 1;
if(args[index] == null || "".equals(args[index]))
throw new CommandAnswerException("NotEnoughArguments: args #" + index);
@ -50,8 +46,6 @@ public class ArgumentUtilities
break;
case "l":
case "lifetime":
if(isLastArg)
throw new CommandAnswerException("RequiresOneMoreArg");
index += 1;
result.lifetime = TimeIntervalParser.parseTimeInterval(args[index]);
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;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import org.bukkit.command.CommandSender;
@ -38,7 +39,13 @@ public class BukkitCommands
try
{
setName("rscp:MigrateFromPermissionsEx-SQL");
try
{
rscp.connection.executeUpdateT("Migrate_from_PermissionsEx");
} catch(SQLException ex) {
BukkitPluginMain.consoleLog.warning(ex.toString());
return;
}
rscp.fetching.join();
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.RowPermission;
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.Engine.Matchers;
import ru.simsonic.rscPermissions.Engine.ResolutionResult;
@ -170,7 +170,7 @@ public class CommandEntity
throw new CommandAnswerException("FEW ARGUMENTS");
final String target = args[2];
args = Arrays.copyOfRange(args, 3, args.length);
final CommandParams optional = ArgumentUtilities.parseCommandParams(args);
final OptionalParams optional = ArgumentUtilities.parseCommandParams(args);
switch(subcommand)
{
case "addgroup":
@ -400,7 +400,7 @@ public class CommandEntity
answer.add("{_R}\"" + result.getSuffix() + "{_R}\"");
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 RowEntity existing = rscp.internalCache.findGroupEntity(splitted[0]);
@ -417,7 +417,7 @@ public class CommandEntity
rscp.fetchNowAndReschedule();
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 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
{
private final Logger consoleLog;
public BackendDatabase(Logger logger)
{
super(logger);
this.consoleLog = logger;
}
@Override
public synchronized boolean connect()
{
try
{
return super.connect() && executeUpdateT("Deployment");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
return false;
}
public synchronized void insertExampleRows()
{
try
{
executeUpdateT("ExampleContents");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
}
public synchronized DatabaseContents retrieveContents()
{
executeUpdateT("Cleanup");
final DatabaseContents result = new DatabaseContents();
try
{
executeUpdateT("Cleanup");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
return result;
}
result.entities = fetchEntities();
result.permissions = fetchPermissions();
result.inheritance = fetchInheritance();
@ -41,8 +59,7 @@ public class BackendDatabase extends ConnectionMySQL
private RowEntity[] fetchEntities()
{
final ArrayList<RowEntity> result = new ArrayList<>();
final ResultSet rs = executeQuery("SELECT * FROM `{DATABASE}`.`{PREFIX}entities`;");
try
try(final ResultSet rs = executeQuery("SELECT * FROM `{DATABASE}`.`{PREFIX}entities`;"))
{
while(rs.next())
{
@ -57,15 +74,14 @@ public class BackendDatabase extends ConnectionMySQL
}
rs.close();
} catch(SQLException ex) {
logger.log(Level.WARNING, "[rscp] Exception in rs2e(): {0}", ex);
consoleLog.warning(ex.toString());
}
return result.toArray(new RowEntity[result.size()]);
}
private RowPermission[] fetchPermissions()
{
final ArrayList<RowPermission> result = new ArrayList<>();
final ResultSet rs = executeQuery("SELECT * FROM `{DATABASE}`.`{PREFIX}permissions`;");
try
try(final ResultSet rs = executeQuery("SELECT * FROM `{DATABASE}`.`{PREFIX}permissions`;"))
{
while(rs.next())
{
@ -82,15 +98,14 @@ public class BackendDatabase extends ConnectionMySQL
}
rs.close();
} catch(SQLException ex) {
logger.log(Level.WARNING, "[rscp] Exception in rs2p(): {0}", ex);
consoleLog.warning(ex.toString());
}
return result.toArray(new RowPermission[result.size()]);
}
private RowInheritance[] fetchInheritance()
{
final ArrayList<RowInheritance> result = new ArrayList<>();
final ResultSet rs = executeQuery("SELECT * FROM `{DATABASE}`.`{PREFIX}inheritance`;");
try
try(final ResultSet rs = executeQuery("SELECT * FROM `{DATABASE}`.`{PREFIX}inheritance`;"))
{
while(rs.next())
{
@ -107,39 +122,76 @@ public class BackendDatabase extends ConnectionMySQL
}
rs.close();
} catch(SQLException ex) {
logger.log(Level.WARNING, "[rscp] Exception in rs2i(): {0}", ex);
consoleLog.warning(ex.toString());
}
return result.toArray(new RowInheritance[result.size()]);
}
public synchronized void lockTableEntities()
{
try
{
executeUpdate("LOCK TABLES `{DATABASE}`.`{PREFIX}entities`;");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
}
public synchronized void lockTablePermissions()
{
try
{
executeUpdate("LOCK TABLES `{DATABASE}`.`{PREFIX}permissions`;");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
}
public synchronized void lockTableInheritance()
{
try
{
executeUpdate("LOCK TABLES `{DATABASE}`.`{PREFIX}inheritance`;");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
}
public synchronized void unlockAllTables()
{
try
{
executeUpdate("UNLOCK TABLES;");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
}
public synchronized void transactionStart()
{
try
{
executeUpdate("START TRANSACTION;");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
}
public synchronized void transactionCommit()
{
try
{
executeUpdate("COMMIT;");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
}
public synchronized void transactionCancel()
{
try
{
executeUpdate("ROLLBACK;");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
}
public synchronized void updateEntityPrefix(String entity, EntityType type, String prefix)
{
try
{
if("".equals(entity))
return;
@ -150,8 +202,13 @@ public class BackendDatabase extends ConnectionMySQL
setupQueryTemplate("{TEXT_TYPE}", "prefix");
setupQueryTemplate("{TEXT}", (prefix != null) ? "'" + prefix + "'" : "NULL");
executeUpdateT("UpdateEntity");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
}
public synchronized void updateEntitySuffix(String entity, EntityType type, String suffix)
{
try
{
if("".equals(entity))
return;
@ -162,21 +219,39 @@ public class BackendDatabase extends ConnectionMySQL
setupQueryTemplate("{TEXT_TYPE}", "suffix");
setupQueryTemplate("{TEXT}", (suffix != null) ? "'" + suffix + "'" : "NULL");
executeUpdateT("UpdateEntity");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
}
public synchronized void removeEntityById(long id)
{
try
{
setupQueryTemplate("{ID}", Long.toString(id));
executeUpdate("DELETE FROM `{DATABASE}`.`{PREFIX}entities` WHERE `id` = '{ID}';");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
}
public synchronized void removePermissionsById(long id)
{
try
{
setupQueryTemplate("{ID}", Long.toString(id));
executeUpdate("DELETE FROM `{DATABASE}`.`{PREFIX}permissions` WHERE `id` = '{ID}';");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
}
public synchronized void removeInheritanceById(long id)
{
try
{
setupQueryTemplate("{ID}", Long.toString(id));
executeUpdate("DELETE FROM `{DATABASE}`.`{PREFIX}inheritance` WHERE `id` = '{ID}';");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
}
public synchronized void insertEntity(
Long id,
@ -258,6 +333,8 @@ public class BackendDatabase extends ConnectionMySQL
return new StringBuilder("NOW() + INTERVAL ").append(lifetime).append(" SECOND").toString();
}
private void insertRow(Map<String, String> fields)
{
try
{
if(fields.isEmpty())
return;
@ -274,5 +351,8 @@ public class BackendDatabase extends ConnectionMySQL
setupQueryTemplate("{FIELDS}", sbf.toString());
setupQueryTemplate("{VALUES}", sbv.toString());
executeUpdate("INSERT INTO `{DATABASE}`.`{PREFIX}{TABLE}` ({FIELDS}) VALUES ({VALUES});");
} catch(SQLException ex) {
consoleLog.warning(ex.toString());
}
}
}

Loading…
Cancel
Save