diff --git a/pom.xml b/pom.xml index 1bcc53b..41fa633 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ ru.simsonic rscPermissions - 0.10.5b-SNAPSHOT + 0.10.6b-SNAPSHOT jar rscPermissions 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 d5b440c..195beea 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseContents.java +++ b/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseContents.java @@ -33,11 +33,13 @@ public class DatabaseContents for(RowEntity row : entities) { subRowEntry = 0; - final String[] splittedByEntity = splitDatabaseRows(row.entity); - for(String oneEntity : splittedByEntity) + final String[] splittedByE = splitDatabaseRows(row.entity); + final boolean isAlone = splittedByE.length == 1; + for(String oneEntity : splittedByE) { final RowEntity clone = row.clone(); - clone.splittedId = String.format("e%d:%d", row.id, subRowEntry); + clone.splittedId = String.format(isAlone ? "e%d" : "e%d:%d", + row.id, subRowEntry); clone.entity = PlayerType.normalize(oneEntity); le.add(clone); subRowEntry += 1; @@ -47,18 +49,20 @@ public class DatabaseContents for(RowPermission row : permissions) { subRowEntry = 0; - final String[] splittedByEntity = splitDatabaseRows(row.entity); - final String[] splittedByPermission = splitDatabaseRows(row.permission); - final String[] splittedByDestination = splitDatabaseRows(row.destinationSource); + final String[] splittedByE = splitDatabaseRows(row.entity); + final String[] splittedByP = splitDatabaseRows(row.permission); + final String[] splittedByD = splitDatabaseRows(row.destinationSource); + final boolean isAlone = splittedByE.length * splittedByP.length * splittedByD.length == 1; row.destinationSource = null; - for(String oneDestination : splittedByDestination) + for(String oneDestination : splittedByD) { final Destination destination = Destination.parseDestination(oneDestination); - for(String permission : splittedByPermission) - for(String entity : splittedByEntity) + for(String permission : splittedByP) + for(String entity : splittedByE) { final RowPermission clone = row.clone(); - clone.splittedId = String.format("p%d:%d", row.id, subRowEntry); + clone.splittedId = String.format(isAlone ? "p%d" : "p%d:%d", + row.id, subRowEntry); clone.entity = PlayerType.normalize(entity); clone.permission = permission; clone.destination = destination; @@ -71,18 +75,20 @@ public class DatabaseContents for(RowInheritance row : inheritance) { subRowEntry = 0; - final String[] splittedByEntity = splitDatabaseRows(row.entity); - final String[] splittedByParent = splitDatabaseRows(row.parent); - final String[] splittedByDestination = splitDatabaseRows(row.destinationSource); + final String[] splittedByE = splitDatabaseRows(row.entity); + final String[] splittedByP = splitDatabaseRows(row.parent); + final String[] splittedByD = splitDatabaseRows(row.destinationSource); + final boolean isAlone = splittedByE.length * splittedByP.length * splittedByD.length == 1; row.destinationSource = null; - for(String oneDestination : splittedByDestination) + for(String oneDestination : splittedByD) { final Destination destination = Destination.parseDestination(oneDestination); - for(String parent : splittedByParent) - for(String entity : splittedByEntity) + for(String parent : splittedByP) + for(String entity : splittedByE) { final RowInheritance clone = row.clone(); - clone.splittedId = String.format("i%d:%d", row.id, subRowEntry); + clone.splittedId = String.format(isAlone ? "i%d" : "i%d:%d", + row.id, subRowEntry); clone.entity = PlayerType.normalize(entity); clone.parent = parent; clone.deriveInstance(); diff --git a/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseEditor.java b/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseEditor.java index 52530a3..17198cb 100644 --- a/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseEditor.java +++ b/src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseEditor.java @@ -3,12 +3,10 @@ package ru.simsonic.rscPermissions.Engine.Backends; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; -import java.util.List; import java.util.Map; import org.bukkit.Bukkit; import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException; import ru.simsonic.rscMinecraftLibrary.Bukkit.GenericChatCodes; -import ru.simsonic.rscPermissions.API.EntityType; import ru.simsonic.rscPermissions.API.RowEntity; import ru.simsonic.rscPermissions.API.RowInheritance; import ru.simsonic.rscPermissions.API.RowPermission;