diff --git a/src/main/java/ru/simsonic/rscPermissions/API/RowEntity.java b/src/main/java/ru/simsonic/rscPermissions/API/RowEntity.java index f0b5197..cfe0f6b 100644 --- a/src/main/java/ru/simsonic/rscPermissions/API/RowEntity.java +++ b/src/main/java/ru/simsonic/rscPermissions/API/RowEntity.java @@ -5,6 +5,7 @@ import java.sql.Timestamp; public class RowEntity implements Cloneable, Comparable { public int id; + public String splittedId; public String entity; public EntityType entityType; public String prefix; diff --git a/src/main/java/ru/simsonic/rscPermissions/API/RowInheritance.java b/src/main/java/ru/simsonic/rscPermissions/API/RowInheritance.java index b1eec10..1d72611 100644 --- a/src/main/java/ru/simsonic/rscPermissions/API/RowInheritance.java +++ b/src/main/java/ru/simsonic/rscPermissions/API/RowInheritance.java @@ -7,6 +7,7 @@ import ru.simsonic.rscMinecraftLibrary.Bukkit.GenericChatCodes; public class RowInheritance implements Cloneable, Comparable { public int id; + public String splittedId; public String entity; public String parent; public String instance; diff --git a/src/main/java/ru/simsonic/rscPermissions/API/RowPermission.java b/src/main/java/ru/simsonic/rscPermissions/API/RowPermission.java index ec2f118..d6ed028 100644 --- a/src/main/java/ru/simsonic/rscPermissions/API/RowPermission.java +++ b/src/main/java/ru/simsonic/rscPermissions/API/RowPermission.java @@ -5,6 +5,7 @@ import java.sql.Timestamp; public class RowPermission implements Cloneable { public int id; + public String splittedId; public String entity; public EntityType entityType; public String permission; diff --git a/src/main/java/ru/simsonic/rscPermissions/API/Settings.java b/src/main/java/ru/simsonic/rscPermissions/API/Settings.java index ed9e5c0..1c5b67d 100644 --- a/src/main/java/ru/simsonic/rscPermissions/API/Settings.java +++ b/src/main/java/ru/simsonic/rscPermissions/API/Settings.java @@ -12,6 +12,7 @@ public interface Settings public static final String INSTANTIATOR = "?"; public static final String TEXT_INHERITER = "%"; public static final char GROUP_LEVEL_TAB = '┏'; + public static final String SPLITTED_ID_SEP = ":"; public void onLoad(); public void onEnable(); public String getDefaultGroup(); diff --git a/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseContents.java b/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseContents.java index 80f1f42..9b59d66 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseContents.java +++ b/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseContents.java @@ -7,6 +7,7 @@ import ru.simsonic.rscPermissions.API.PlayerType; import ru.simsonic.rscPermissions.API.RowEntity; import ru.simsonic.rscPermissions.API.RowInheritance; import ru.simsonic.rscPermissions.API.RowPermission; +import ru.simsonic.rscPermissions.API.Settings; import ru.simsonic.rscPermissions.Engine.Matchers; public class DatabaseContents @@ -28,17 +29,21 @@ public class DatabaseContents try { // Entities + long subRowEntry = 0; for(RowEntity row : entities) { final String[] splittedByEntity = Matchers.genericParse(row.entity); for(String oneEntity : splittedByEntity) { final RowEntity clone = row.clone(); - clone.entity = PlayerType.normalize(oneEntity); + clone.splittedId = String.format("%d%s%d", row.id, Settings.SPLITTED_ID_SEP, subRowEntry); + clone.entity = PlayerType.normalize(oneEntity); le.add(clone); + subRowEntry += 1; } } // Permissions + subRowEntry = 0; for(RowPermission row : permissions) { final String[] splittedByEntity = Matchers.genericParse(row.entity); @@ -52,14 +57,17 @@ public class DatabaseContents for(String entity : splittedByEntity) { final RowPermission clone = row.clone(); + clone.splittedId = String.format("%d%s%d", row.id, Settings.SPLITTED_ID_SEP, subRowEntry); clone.entity = PlayerType.normalize(entity); clone.permission = permission; clone.destination = destination; lp.add(clone); + subRowEntry += 1; } } } // Inheritance + subRowEntry = 0; for(RowInheritance row : inheritance) { final String[] splittedByEntity = Matchers.genericParse(row.entity); @@ -73,11 +81,13 @@ public class DatabaseContents for(String entity : splittedByEntity) { final RowInheritance clone = row.clone(); + clone.splittedId = String.format("%d%s%d", row.id, Settings.SPLITTED_ID_SEP, subRowEntry); clone.entity = PlayerType.normalize(entity); clone.parent = parent; clone.deriveInstance(); clone.destination = destination; li.add(clone); + subRowEntry += 1; } } }