diff --git a/pom.xml b/pom.xml
index 920cf68..3785dba 100644
--- a/pom.xml
+++ b/pom.xml
@@ -70,7 +70,7 @@
ru.simsonic
rscUtilityLibrary
- 2.0.1
+ 2.0.2
compile
jar
diff --git a/src/main/java/ru/simsonic/rscPermissions/API/Settings.java b/src/main/java/ru/simsonic/rscPermissions/API/Settings.java
index e1b9914..a8a0b04 100644
--- a/src/main/java/ru/simsonic/rscPermissions/API/Settings.java
+++ b/src/main/java/ru/simsonic/rscPermissions/API/Settings.java
@@ -1,5 +1,5 @@
package ru.simsonic.rscPermissions.API;
-import ru.simsonic.rscPermissions.ConnectionHelper;
+import ru.simsonic.rscUtilityLibrary.ConnectionMySQL.ConnectionParams;
public interface Settings
{
@@ -19,5 +19,5 @@ public interface Settings
public long getRegionFinderGranularity();
public int getAutoReloadDelayTicks();
public boolean isUseMetrics();
- public ConnectionHelper getConnectionChain();
+ public ConnectionParams getConnectionParams();
}
diff --git a/src/main/java/ru/simsonic/rscPermissions/ActionThreads.java b/src/main/java/ru/simsonic/rscPermissions/ActionThreads.java
new file mode 100644
index 0000000..0b5f333
--- /dev/null
+++ b/src/main/java/ru/simsonic/rscPermissions/ActionThreads.java
@@ -0,0 +1,15 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package ru.simsonic.rscPermissions;
+
+/**
+ *
+ * @author simsonic
+ */
+public class ActionThreads
+{
+
+}
diff --git a/src/main/java/ru/simsonic/rscPermissions/Backends/Backend.java b/src/main/java/ru/simsonic/rscPermissions/Backends/Backend.java
deleted file mode 100644
index 064f682..0000000
--- a/src/main/java/ru/simsonic/rscPermissions/Backends/Backend.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package ru.simsonic.rscPermissions.Backends;
-import ru.simsonic.rscPermissions.DataTypes.RowEntity;
-import ru.simsonic.rscPermissions.DataTypes.RowInheritance;
-import ru.simsonic.rscPermissions.DataTypes.RowPermission;
-import ru.simsonic.rscPermissions.InternalCache.AbstractPermissionsCache;
-
-public interface Backend
-{
- public abstract void fetchIntoCache(AbstractPermissionsCache cache);
- public abstract RowEntity[] fetchEntities();
- public abstract RowPermission[] fetchPermissions();
- public abstract RowInheritance[] fetchInheritance();
-
- public abstract void insertExampleRows();
- public abstract void updateEntityText(String entity, boolean entity_type, String text, boolean isPrefix);
- public abstract void addUserParentGroup(String user, String newGroup);
-}
diff --git a/src/main/java/ru/simsonic/rscPermissions/Backends/BackendMySQL.java b/src/main/java/ru/simsonic/rscPermissions/Backends/BackendDatabase.java
similarity index 84%
rename from src/main/java/ru/simsonic/rscPermissions/Backends/BackendMySQL.java
rename to src/main/java/ru/simsonic/rscPermissions/Backends/BackendDatabase.java
index 80b61f4..d132001 100644
--- a/src/main/java/ru/simsonic/rscPermissions/Backends/BackendMySQL.java
+++ b/src/main/java/ru/simsonic/rscPermissions/Backends/BackendDatabase.java
@@ -8,42 +8,42 @@ import ru.simsonic.rscPermissions.DataTypes.EntityType;
import ru.simsonic.rscPermissions.DataTypes.RowEntity;
import ru.simsonic.rscPermissions.DataTypes.RowInheritance;
import ru.simsonic.rscPermissions.DataTypes.RowPermission;
-import ru.simsonic.rscPermissions.InternalCache.AbstractPermissionsCache;
import ru.simsonic.rscPermissions.BukkitPluginMain;
+import ru.simsonic.rscPermissions.DataTypes.DatabaseContents;
import ru.simsonic.rscUtilityLibrary.ConnectionMySQL;
-public class BackendMySQL extends ConnectionMySQL implements Backend
+public class BackendDatabase extends ConnectionMySQL
{
protected final BukkitPluginMain rscp;
- public BackendMySQL(BukkitPluginMain plugin)
+ public BackendDatabase(BukkitPluginMain plugin)
{
+ super(BukkitPluginMain.consoleLog);
this.rscp = plugin;
}
- public synchronized void Initialize(String database, String username, String password, String prefixes)
- {
- super.Initialize("rscp:MySQL", database, username, password, prefixes);
- }
@Override
- public synchronized boolean Connect()
+ public synchronized boolean connect()
{
- return super.Connect()
+ return super.connect()
&& executeUpdateT("Initialize_main_v1")
&& executeUpdateT("Cleanup_tables");
}
- @Override
- public synchronized void fetchIntoCache(AbstractPermissionsCache cache)
+ public synchronized DatabaseContents retrieveContents()
{
executeUpdateT("Cleanup_tables");
+ final DatabaseContents contents = new DatabaseContents();
+ contents.entities = fetchEntities();
+ contents.permissions = fetchPermissions();
+ contents.inheritance = fetchInheritance();
BukkitPluginMain.consoleLog.log(Level.INFO,
"[rscp] Fetched {0} entities, {1} permissions and {2} inheritances",
new Integer[]
{
- cache.ImportEntities(fetchEntities()),
- cache.ImportPermissions(fetchPermissions()),
- cache.ImportInheritance(fetchInheritance())
+ contents.entities.length,
+ contents.permissions.length,
+ contents.inheritance.length,
});
+ return contents;
}
- @Override
public synchronized RowEntity[] fetchEntities()
{
final ArrayList result = new ArrayList<>();
@@ -67,7 +67,6 @@ public class BackendMySQL extends ConnectionMySQL implements Backend
}
return result.toArray(new RowEntity[result.size()]);
}
- @Override
public synchronized RowPermission[] fetchPermissions()
{
final ArrayList result = new ArrayList<>();
@@ -99,7 +98,6 @@ public class BackendMySQL extends ConnectionMySQL implements Backend
}
return result.toArray(new RowPermission[result.size()]);
}
- @Override
public synchronized RowInheritance[] fetchInheritance()
{
final ArrayList result = new ArrayList<>();
@@ -132,12 +130,10 @@ public class BackendMySQL extends ConnectionMySQL implements Backend
}
return result.toArray(new RowInheritance[result.size()]);
}
- @Override
public synchronized void insertExampleRows()
{
executeUpdateT("Insert_example_rows_v1");
}
- @Override
public synchronized void updateEntityText(String entity, boolean entity_type, String text, boolean isPrefix)
{
if("".equals(entity))
@@ -150,7 +146,6 @@ public class BackendMySQL extends ConnectionMySQL implements Backend
setupQueryTemplate("{TEXT}", (text != null) ? "'" + text + "'" : "NULL");
executeUpdateT("Update_entity_text");
}
- @Override
public synchronized void addUserParentGroup(String user, String newGroup)
{
setupQueryTemplate("{USER}", user);
diff --git a/src/main/java/ru/simsonic/rscPermissions/Backends/BackendJson.java b/src/main/java/ru/simsonic/rscPermissions/Backends/BackendJson.java
index 28c9701..4baf9ea 100644
--- a/src/main/java/ru/simsonic/rscPermissions/Backends/BackendJson.java
+++ b/src/main/java/ru/simsonic/rscPermissions/Backends/BackendJson.java
@@ -6,46 +6,60 @@ import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
+import ru.simsonic.rscPermissions.DataTypes.DatabaseContents;
import ru.simsonic.rscPermissions.DataTypes.RowEntity;
import ru.simsonic.rscPermissions.DataTypes.RowInheritance;
import ru.simsonic.rscPermissions.DataTypes.RowPermission;
public class BackendJson
{
+ private final File workingDir;
+ public BackendJson(File workingDir)
+ {
+ this.workingDir = workingDir;
+ }
+ public synchronized DatabaseContents retrieveContents()
+ {
+ final DatabaseContents result = new DatabaseContents();
+ result.entities = fetchEntities();
+ result.permissions = fetchPermissions();
+ result.inheritance = fetchInheritance();
+ return result;
+ }
private final static String localEntitiesFile = "entities.json";
private final static String localPermissionsFile = "permissions.json";
private final static String localInheritanceFile = "inheritance.json";
- public RowEntity[] fetchEntities()
+ private RowEntity[] fetchEntities()
{
final Gson gson = new Gson();
try
{
JsonReader jr = new JsonReader(new InputStreamReader(new FileInputStream(
- new File(localEntitiesFile)), Charset.forName("UTF-8")));
+ new File(workingDir, localEntitiesFile)), Charset.forName("UTF-8")));
return gson.fromJson(jr, RowEntity[].class);
} catch(FileNotFoundException ex) {
}
return null;
}
- public RowPermission[] fetchPermissions()
+ private RowPermission[] fetchPermissions()
{
final Gson gson = new Gson();
try
{
JsonReader jr = new JsonReader(new InputStreamReader(new FileInputStream(
- new File(localEntitiesFile)), Charset.forName("UTF-8")));
+ new File(workingDir, localEntitiesFile)), Charset.forName("UTF-8")));
return gson.fromJson(jr, RowPermission[].class);
} catch(FileNotFoundException ex) {
}
return null;
}
- public RowInheritance[] fetchInheritance()
+ private RowInheritance[] fetchInheritance()
{
final Gson gson = new Gson();
try
{
JsonReader jr = new JsonReader(new InputStreamReader(new FileInputStream(
- new File(localEntitiesFile)), Charset.forName("UTF-8")));
+ new File(workingDir, localEntitiesFile)), Charset.forName("UTF-8")));
return gson.fromJson(jr, RowInheritance[].class);
} catch(FileNotFoundException ex) {
}
diff --git a/src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java b/src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java
index 09e78ee..510af52 100644
--- a/src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java
+++ b/src/main/java/ru/simsonic/rscPermissions/BridgeForBukkitAPI.java
@@ -4,10 +4,14 @@ import ru.simsonic.rscPermissions.Bukkit.VaultPermission;
public class BridgeForBukkitAPI
{
- private final BukkitPluginMain rscp;
- private final VaultPermission vaultPermission;
- private final VaultChat vaultChat;
private static BridgeForBukkitAPI instance;
+ public static BridgeForBukkitAPI getInstance()
+ {
+ return instance;
+ }
+ private final BukkitPluginMain rscp;
+ private final VaultPermission vaultPermission;
+ private final VaultChat vaultChat;
protected BridgeForBukkitAPI(BukkitPluginMain plugin)
{
BridgeForBukkitAPI.instance = BridgeForBukkitAPI.this;
@@ -15,10 +19,6 @@ public class BridgeForBukkitAPI
this.vaultPermission = new VaultPermission(this);
this.vaultChat = new VaultChat(this, vaultPermission);
}
- public static BridgeForBukkitAPI getInstance()
- {
- return instance;
- }
public org.bukkit.plugin.java.JavaPlugin getPlugin()
{
return this.rscp;
diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissions.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
similarity index 84%
rename from src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissions.java
rename to src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
index ed249fc..f431b0e 100644
--- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissions.java
+++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
@@ -11,10 +11,10 @@ import ru.simsonic.rscPermissions.InternalCache.ResolutionParams;
import ru.simsonic.rscPermissions.InternalCache.ResolutionResult;
import ru.simsonic.rscUtilityLibrary.RestartableThread;
-public class BukkitPermissions extends RestartableThread
+public class BukkitPermissionManager extends RestartableThread
{
private final BukkitPluginMain rscp;
- public BukkitPermissions(BukkitPluginMain plugin)
+ public BukkitPermissionManager(BukkitPluginMain plugin)
{
this.rscp = plugin;
}
@@ -23,8 +23,29 @@ public class BukkitPermissions extends RestartableThread
private final HashMap suffixes = new HashMap<>();
private final HashMap persistentPermissions = new HashMap<>();
private final HashMap transientPermissions = new HashMap<>();
- public final HashMap attachments = new HashMap<>();
- public void recalculateOnlinePlayers()
+ public final HashMap attachments = new HashMap<>();
+ public void recalculateOnlinePlayersSync()
+ {
+ try
+ {
+ Runnable syncTask = new Runnable()
+ {
+ @Override
+ public synchronized void run()
+ {
+ rscp.permissionManager.recalculateOnlinePlayersAsync();
+ notify();
+ }
+ };
+ synchronized(syncTask)
+ {
+ rscp.getServer().getScheduler().runTask(rscp, syncTask);
+ syncTask.wait();
+ }
+ } catch(InterruptedException ex) {
+ }
+ }
+ public void recalculateOnlinePlayersAsync()
{
updateQueue.addAll(rscp.getServer().getOnlinePlayers());
rscp.scheduleAutoUpdate();
diff --git a/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPluginConfiguration.java b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPluginConfiguration.java
index 83056d6..aa400a7 100644
--- a/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPluginConfiguration.java
+++ b/src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPluginConfiguration.java
@@ -1,14 +1,8 @@
package ru.simsonic.rscPermissions.Bukkit;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
import org.bukkit.configuration.file.FileConfiguration;
-import ru.simsonic.rscPermissions.ConnectionHelper;
import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.API.Settings;
+import ru.simsonic.rscUtilityLibrary.ConnectionMySQL.ConnectionParams;
public class BukkitPluginConfiguration implements Settings
{
@@ -131,39 +125,15 @@ public class BukkitPluginConfiguration implements Settings
return nRegionFinderGranularity;
}
@Override
- public ConnectionHelper getConnectionChain()
+ public ConnectionParams getConnectionParams()
{
- List