Browse Source

Split this bug file into two.

master
Stanislav Usenkov 9 years ago
parent
commit
5848fb17d3
  1. 24
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/ArgumentUtilities.java
  2. 321
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandEntity.java
  3. 279
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandEntityHelper.java

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

@ -8,8 +8,8 @@ public class ArgumentUtilities
{
public static class OptionalParams
{
public Integer expirience;
public Destination destination;
public Integer expirience;
public Integer lifetime;
}
public static OptionalParams parseCommandParams(String[] args) throws CommandAnswerException
@ -23,9 +23,17 @@ public class ArgumentUtilities
throw new CommandAnswerException("RequiresOneMoreArg");
switch(args[index].toLowerCase())
{
case "e":
case "exp":
case "destination":
case "dest":
case "d":
index += 1;
if(args[index] == null || "".equals(args[index]))
throw new CommandAnswerException("NotEnoughArguments: args #" + index);
result.destination = Destination.parseDestination(args[index]);
break;
case "expirience":
case "exp":
case "e":
try
{
index += 1;
@ -36,16 +44,8 @@ public class ArgumentUtilities
throw new CommandAnswerException("NullPointerException: args #" + index);
}
break;
case "d":
case "dest":
case "destination":
index += 1;
if(args[index] == null || "".equals(args[index]))
throw new CommandAnswerException("NotEnoughArguments: args #" + index);
result.destination = Destination.parseDestination(args[index]);
break;
case "l":
case "lifetime":
case "l":
index += 1;
result.lifetime = TimeIntervalParser.parseTimeInterval(args[index]);
if(result.lifetime < 0)

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

@ -1,11 +1,9 @@
package ru.simsonic.rscPermissions.Bukkit.Commands;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender;
@ -18,15 +16,13 @@ import ru.simsonic.rscPermissions.API.RowPermission;
import ru.simsonic.rscPermissions.Bukkit.BukkitUtilities;
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;
public class CommandEntity
public class CommandEntity extends CommandEntityHelper
{
private final BukkitPluginMain rscp;
CommandEntity(BukkitPluginMain plugin)
{
this.rscp = plugin;
super(plugin);
}
public static enum TargetType
{
@ -81,6 +77,36 @@ public class CommandEntity
answer.add(line.replace("{:T}", typeId));
return answer;
}
public void listGroups(CommandSender sender) throws CommandAnswerException
{
if(sender.hasPermission("rscp.admin") == false)
throw new CommandAnswerException("Not enough permissions.");
final List<String> answer = new ArrayList<>(16);
final Set<RowEntity> groups = rscp.internalCache.getKnownGroupObjects();
answer.add("There are following known groups in database:");
for(RowEntity group : groups)
{
final String details = showEntityDetails(group);
if(details != null)
answer.add(details);
}
throw new CommandAnswerException(answer);
}
public void listUsers(CommandSender sender) throws CommandAnswerException
{
if(sender.hasPermission("rscp.admin") == false)
throw new CommandAnswerException("Not enough permissions.");
final List<String> answer = new LinkedList<>();
final Set<RowEntity> users = rscp.internalCache.getKnownUserObjects();
answer.add("There are following known users in database:");
for(RowEntity user : users)
{
final String details = showEntityDetails(user);
if(details != null)
answer.add(details);
}
throw new CommandAnswerException(answer);
}
public void onCommandHub(CommandSender sender, TargetType type, String[] args) throws CommandAnswerException
{
if(sender.hasPermission("rscp.admin") == false)
@ -300,287 +326,4 @@ public class CommandEntity
result.inheritance = new RowInheritance[] {};
return result;
}
public void listGroups(CommandSender sender) throws CommandAnswerException
{
if(sender.hasPermission("rscp.admin") == false)
throw new CommandAnswerException("Not enough permissions.");
final List<String> answer = new ArrayList<>(16);
final Set<RowEntity> groups = rscp.internalCache.getKnownGroupObjects();
answer.add("There are following known groups in database:");
for(RowEntity group : groups)
{
final String details = showEntityDetails(group);
if(details != null)
answer.add(details);
}
throw new CommandAnswerException(answer);
}
public void listUsers(CommandSender sender) throws CommandAnswerException
{
if(sender.hasPermission("rscp.admin") == false)
throw new CommandAnswerException("Not enough permissions.");
final List<String> answer = new LinkedList<>();
final Set<RowEntity> users = rscp.internalCache.getKnownUserObjects();
answer.add("There are following known users in database:");
for(RowEntity user : users)
{
final String details = showEntityDetails(user);
if(details != null)
answer.add(details);
}
throw new CommandAnswerException(answer);
}
private String showEntityDetails(RowEntity entity)
{
final String name = entity.entity;
if("".equals(name))
return null;
final StringBuilder sb = new StringBuilder();
if(entity.splittedId != null)
sb.append("{_WH}").append(entity.splittedId).append(" ");
sb.append("{_YL}").append(name);
final boolean isPrefix = entity.prefix != null && !"".equals(entity.prefix);
final boolean isSuffix = entity.suffix != null && !"".equals(entity.suffix);
if(isPrefix || isSuffix)
sb
.append("{_R} {_LS}[\'")
.append(isPrefix ? entity.prefix : "")
.append("{_LS}\', \'")
.append(isSuffix ? entity.suffix : "")
.append("{_LS}\']");
if(entity.lifetime != null)
{
final String lifetime = entity.lifetime
.toLocalDateTime()
.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)
.replace("T", " ");
sb.append("{_R} {_YL}").append(lifetime);
}
if(entity.permissions != null && entity.permissions.length > 0)
sb.append(String.format("{_R} {_LC}%d{_DC}p", entity.permissions.length));
if(entity.inheritance != null && entity.inheritance.length > 0)
sb.append(String.format("{_R} {_LC}%d{_DC}i", entity.inheritance.length));
return sb.toString();
}
private void showEntityPermissions(RowEntity entity) throws CommandAnswerException
{
final ArrayList<String> answer = new ArrayList<>();
final String typeName = entity.entityType.name().toLowerCase();
answer.add("Explicit permissions for " + typeName + " {_YL}" + entity.entity + "{_LS}:");
for(RowPermission permission : entity.permissions)
{
final String details = showPermissionDetails(permission);
if(details != null)
answer.add(details);
}
throw new CommandAnswerException(answer);
}
private String showPermissionDetails(RowPermission row)
{
final StringBuilder sb = new StringBuilder();
sb.append("{_WH}").append(row.splittedId);
sb.append(row.value ? " {_LG}" : " {_LR}").append(row.permission);
if(row.destination != null)
{
final String destination = row.destination.toString();
if(!"".equals(destination))
sb.append("{_R} {_LC}{_U}").append(destination);
}
if(row.expirience > 0)
sb.append("{_R} {_LB}").append(row.expirience).append(" LVLs");
if(row.lifetime != null)
{
final String lifetime = row.lifetime.toLocalDateTime().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME).replace("T", " ");
sb.append("{_R} {_YL}").append(lifetime);
}
return sb.toString();
}
private void showEntityParents(RowEntity entity) throws CommandAnswerException
{
final ArrayList<String> answer = new ArrayList<>();
answer.add("Explicit parent groups for " + entity.entityType.name().toLowerCase() + " {_YL}" + entity.entity + "{_LS}:");
for(RowInheritance parent : entity.inheritance)
{
final String details = showInheritanceDetails(parent);
if(details != null)
answer.add(details);
}
throw new CommandAnswerException(answer);
}
private String showInheritanceDetails(RowInheritance row)
{
final StringBuilder sb = new StringBuilder();
sb.append("{_WH}").append(row.splittedId).append(" {_LG}").append(row.getParentWithInstance());
sb.append(String.format("{_R} {_DG}({_LG}%d{_DG})", row.priority));
if(row.destination != null)
{
final String destination = row.destination.toString();
if(!"".equals(destination))
sb.append("{_R} {_LC}{_U}").append(destination);
}
if(row.expirience > 0)
sb.append("{_R} {_LB}").append(row.expirience).append(" LVLs");
if(row.lifetime != null)
{
final String lifetime = row.lifetime.toLocalDateTime().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME).replace("T", " ");
sb.append("{_R} {_YL}").append(lifetime);
}
return sb.toString();
}
private void showPlayerPermissions(ResolutionResult result, String user) throws CommandAnswerException
{
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>();
answer.add("Permission list for user {_YL}" + user + "{_LS}:");
for(Map.Entry<String, Boolean> entry : result.getPermissions().entrySet())
answer.add((entry.getValue() ? "{_LG}" : "{_LR}") + entry.getKey());
throw new CommandAnswerException(answer);
}
private void showPlayerParents(ResolutionResult result, String player) throws CommandAnswerException
{
if(Matchers.isCorrectDashlessUUID(player))
player = Matchers.uuidAddDashes(player);
final ArrayList<String> answer = new ArrayList<>();
answer.add("List of parent groups for player {_YL}" + player + "{_LS}:");
for(String group : result.getOrderedGroups())
answer.add("{_LG}" + group);
throw new CommandAnswerException(answer);
}
private void showEntityPrefix(RowEntity entity) throws CommandAnswerException
{
if(entity.prefix != null)
throw new CommandAnswerException(String.format(
"Own prefix for %s {_YL}%s{_LS} is {_R}\"%s{_R}\"",
entity.entityType.equals(EntityType.GROUP) ? "group" : "user",
entity.entity,
entity.prefix));
throw new CommandAnswerException(String.format(
"Own prefix for %s {_YL}%s{_LS} is not set (null).",
entity.entityType.equals(EntityType.GROUP) ? "group" : "user",
entity.entity));
}
private void showEntitySuffix(RowEntity entity) throws CommandAnswerException
{
if(entity.suffix != null)
throw new CommandAnswerException(String.format(
"Own suffix for %s {_YL}%s{_LS} is {_R}\"%s{_R}\"",
entity.entityType.equals(EntityType.GROUP) ? "group" : "user",
entity.entity,
entity.suffix));
throw new CommandAnswerException(String.format(
"Own suffix for %s {_YL}%s{_LS} is not set (null).",
entity.entityType.equals(EntityType.GROUP) ? "group" : "user",
entity.entity));
}
private void showPlayerPrefix(ResolutionResult result, String user) throws CommandAnswerException
{
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>();
answer.add("Calculated prefix for user {_YL}" + user + "{_LS} is:");
answer.add("{_R}\"" + result.getPrefix() + "{_R}\"");
throw new CommandAnswerException(answer);
}
private void showPlayerSuffix(ResolutionResult result, String user) throws CommandAnswerException
{
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>();
answer.add("Calculated suffix for user {_YL}" + user + "{_LS} is:");
answer.add("{_R}\"" + result.getSuffix() + "{_R}\"");
throw new CommandAnswerException(answer);
}
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]);
if(existing != null)
parent = RowInheritance.mergeNameAndInstance(existing.entity, splitted[1]);
// final ArrayList<String> answer = new ArrayList<>();
final RowInheritance row = new RowInheritance();
row.entity = entity.entity;
row.entityType = entity.entityType;
row.parent = parent;
if(row.destination == null)
row.destination = optional.destination;
rscp.connection.addInheritance(row);
rscp.fetchNowAndReschedule();
throw new CommandAnswerException("{_LG}All is ok? I don't ready to check it myself.");
}
private void addPermission(RowEntity entity, String permission, OptionalParams optional) throws CommandAnswerException
{
// final ArrayList<String> answer = new ArrayList<>();
final RowPermission row = new RowPermission();
boolean negate = permission.startsWith("-");
if(negate)
permission = permission.substring(1);
row.entity = entity.entity;
row.entityType = entity.entityType;
row.permission = permission;
row.value = !negate;
if(row.destination == null)
row.destination = optional.destination;
rscp.connection.addPermission(row);
rscp.fetchNowAndReschedule();
throw new CommandAnswerException("{_LG}All is ok? I don't ready to check it myself.");
}
private void removeGroup(RowEntity entity, String whatToRemove) throws CommandAnswerException
{
final ArrayList<String> answer = new ArrayList<>();
// Find out what does entered identifier mean?
final LinkedList<RowInheritance> possibleTargets = new LinkedList<>();
for(RowInheritance row : entity.inheritance)
{
if(whatToRemove.equalsIgnoreCase(row.splittedId))
{
if(row.hasClonesInRow())
answer.add("{_LR}Cannot remove inheritance record {_WH}"
+ row.splittedId + "{_LR} from DB due to too complex initial data.");
else
possibleTargets.add(row);
continue;
}
if(whatToRemove.equalsIgnoreCase(row.getParentWithInstance()))
possibleTargets.add(row);
}
if(possibleTargets.isEmpty())
throw new CommandAnswerException("{_LR}Sorry, I don't understand what I have to remove from DB.");
if(possibleTargets.size() > 1)
throw new CommandAnswerException("{_LR}There are several possibilities what to remove. Please use unique white id.");
final RowInheritance row = possibleTargets.get(0);
rscp.connection.removeInheritanceById(row.id);
answer.add("{_LG}Successfully removed inheritance record {_WH}" + row.splittedId + "{_LG}!");
rscp.fetchNowAndReschedule();
throw new CommandAnswerException(answer);
}
private void removePermission(RowEntity entity, String whatToRemove) throws CommandAnswerException
{
final ArrayList<String> answer = new ArrayList<>();
// Find out what does entered identifier mean?
final LinkedList<RowPermission> possibleTargets = new LinkedList<>();
for(RowPermission row : entity.permissions)
{
if(whatToRemove.equalsIgnoreCase(row.splittedId))
{
if(row.hasClonesInRow())
answer.add("{_LR}Cannot remove inheritance record {_WH}"
+ row.splittedId + "{_LR} from DB due to too complex initial data.");
else
possibleTargets.add(row);
continue;
}
if(whatToRemove.equalsIgnoreCase(row.permission))
possibleTargets.add(row);
}
if(possibleTargets.isEmpty())
throw new CommandAnswerException("{_LR}Sorry, I don't understand what I should remove from DB.");
if(possibleTargets.size() > 1)
throw new CommandAnswerException("{_LR}There are several possibilities what to remove. Please use unique white id.");
final RowPermission row = possibleTargets.get(0);
rscp.connection.removePermissionsById(row.id);
answer.add("{_LG}Successfully removed inheritance record {_WH}" + row.splittedId + "{_LG}!");
rscp.fetchNowAndReschedule();
throw new CommandAnswerException(answer);
}
}

279
src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandEntityHelper.java

@ -0,0 +1,279 @@
package ru.simsonic.rscPermissions.Bukkit.Commands;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.bukkit.command.CommandSender;
import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException;
import ru.simsonic.rscPermissions.API.EntityType;
import ru.simsonic.rscPermissions.API.RowEntity;
import ru.simsonic.rscPermissions.API.RowInheritance;
import ru.simsonic.rscPermissions.API.RowPermission;
import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.Engine.Matchers;
import ru.simsonic.rscPermissions.Engine.ResolutionResult;
public class CommandEntityHelper
{
protected final BukkitPluginMain rscp;
CommandEntityHelper(BukkitPluginMain plugin)
{
this.rscp = plugin;
}
protected String showEntityDetails(RowEntity entity)
{
final String name = entity.entity;
if("".equals(name))
return null;
final StringBuilder sb = new StringBuilder();
if(entity.splittedId != null)
sb.append("{_WH}").append(entity.splittedId).append(" ");
sb.append("{_YL}").append(name);
final boolean isPrefix = entity.prefix != null && !"".equals(entity.prefix);
final boolean isSuffix = entity.suffix != null && !"".equals(entity.suffix);
if(isPrefix || isSuffix)
sb
.append("{_R} {_LS}[\'")
.append(isPrefix ? entity.prefix : "")
.append("{_LS}\', \'")
.append(isSuffix ? entity.suffix : "")
.append("{_LS}\']");
if(entity.lifetime != null)
{
final String lifetime = entity.lifetime
.toLocalDateTime()
.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)
.replace("T", " ");
sb.append("{_R} {_YL}").append(lifetime);
}
if(entity.permissions != null && entity.permissions.length > 0)
sb.append(String.format("{_R} {_LC}%d{_DC}p", entity.permissions.length));
if(entity.inheritance != null && entity.inheritance.length > 0)
sb.append(String.format("{_R} {_LC}%d{_DC}i", entity.inheritance.length));
return sb.toString();
}
protected void showEntityPermissions(RowEntity entity) throws CommandAnswerException
{
final ArrayList<String> answer = new ArrayList<>();
final String typeName = entity.entityType.name().toLowerCase();
answer.add("Explicit permissions for " + typeName + " {_YL}" + entity.entity + "{_LS}:");
for(RowPermission permission : entity.permissions)
{
final String details = showPermissionDetails(permission);
if(details != null)
answer.add(details);
}
throw new CommandAnswerException(answer);
}
protected String showPermissionDetails(RowPermission row)
{
final StringBuilder sb = new StringBuilder();
sb.append("{_WH}").append(row.splittedId);
sb.append(row.value ? " {_LG}" : " {_LR}").append(row.permission);
if(row.destination != null)
{
final String destination = row.destination.toString();
if(!"".equals(destination))
sb.append("{_R} {_LC}{_U}").append(destination);
}
if(row.expirience > 0)
sb.append("{_R} {_LB}").append(row.expirience).append(" LVLs");
if(row.lifetime != null)
{
final String lifetime = row.lifetime.toLocalDateTime().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME).replace("T", " ");
sb.append("{_R} {_YL}").append(lifetime);
}
return sb.toString();
}
protected void showEntityParents(RowEntity entity) throws CommandAnswerException
{
final ArrayList<String> answer = new ArrayList<>();
answer.add("Explicit parent groups for " + entity.entityType.name().toLowerCase() + " {_YL}" + entity.entity + "{_LS}:");
for(RowInheritance parent : entity.inheritance)
{
final String details = showInheritanceDetails(parent);
if(details != null)
answer.add(details);
}
throw new CommandAnswerException(answer);
}
protected String showInheritanceDetails(RowInheritance row)
{
final StringBuilder sb = new StringBuilder();
sb.append("{_WH}").append(row.splittedId).append(" {_LG}").append(row.getParentWithInstance());
sb.append(String.format("{_R} {_DG}({_LG}%d{_DG})", row.priority));
if(row.destination != null)
{
final String destination = row.destination.toString();
if(!"".equals(destination))
sb.append("{_R} {_LC}{_U}").append(destination);
}
if(row.expirience > 0)
sb.append("{_R} {_LB}").append(row.expirience).append(" LVLs");
if(row.lifetime != null)
{
final String lifetime = row.lifetime.toLocalDateTime().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME).replace("T", " ");
sb.append("{_R} {_YL}").append(lifetime);
}
return sb.toString();
}
protected void showPlayerPermissions(ResolutionResult result, String user) throws CommandAnswerException
{
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>();
answer.add("Permission list for user {_YL}" + user + "{_LS}:");
for(Map.Entry<String, Boolean> entry : result.getPermissions().entrySet())
answer.add((entry.getValue() ? "{_LG}" : "{_LR}") + entry.getKey());
throw new CommandAnswerException(answer);
}
protected void showPlayerParents(ResolutionResult result, String player) throws CommandAnswerException
{
if(Matchers.isCorrectDashlessUUID(player))
player = Matchers.uuidAddDashes(player);
final ArrayList<String> answer = new ArrayList<>();
answer.add("List of parent groups for player {_YL}" + player + "{_LS}:");
for(String group : result.getOrderedGroups())
answer.add("{_LG}" + group);
throw new CommandAnswerException(answer);
}
protected void showEntityPrefix(RowEntity entity) throws CommandAnswerException
{
if(entity.prefix != null)
throw new CommandAnswerException(String.format(
"Own prefix for %s {_YL}%s{_LS} is {_R}\"%s{_R}\"",
entity.entityType.equals(EntityType.GROUP) ? "group" : "user",
entity.entity,
entity.prefix));
throw new CommandAnswerException(String.format(
"Own prefix for %s {_YL}%s{_LS} is not set (null).",
entity.entityType.equals(EntityType.GROUP) ? "group" : "user",
entity.entity));
}
protected void showEntitySuffix(RowEntity entity) throws CommandAnswerException
{
if(entity.suffix != null)
throw new CommandAnswerException(String.format(
"Own suffix for %s {_YL}%s{_LS} is {_R}\"%s{_R}\"",
entity.entityType.equals(EntityType.GROUP) ? "group" : "user",
entity.entity,
entity.suffix));
throw new CommandAnswerException(String.format(
"Own suffix for %s {_YL}%s{_LS} is not set (null).",
entity.entityType.equals(EntityType.GROUP) ? "group" : "user",
entity.entity));
}
protected void showPlayerPrefix(ResolutionResult result, String user) throws CommandAnswerException
{
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>();
answer.add("Calculated prefix for user {_YL}" + user + "{_LS} is:");
answer.add("{_R}\"" + result.getPrefix() + "{_R}\"");
throw new CommandAnswerException(answer);
}
protected void showPlayerSuffix(ResolutionResult result, String user) throws CommandAnswerException
{
if(Matchers.isCorrectDashlessUUID(user))
user = Matchers.uuidAddDashes(user);
final ArrayList<String> answer = new ArrayList<>();
answer.add("Calculated suffix for user {_YL}" + user + "{_LS} is:");
answer.add("{_R}\"" + result.getSuffix() + "{_R}\"");
throw new CommandAnswerException(answer);
}
protected void addGroup(RowEntity entity, String parent, ArgumentUtilities.OptionalParams optional) throws CommandAnswerException
{
final String[] splitted = RowInheritance.splitIntoNameAndInstance(parent);
final RowEntity existing = rscp.internalCache.findGroupEntity(splitted[0]);
if(existing != null)
parent = RowInheritance.mergeNameAndInstance(existing.entity, splitted[1]);
// final ArrayList<String> answer = new ArrayList<>();
final RowInheritance row = new RowInheritance();
row.entity = entity.entity;
row.entityType = entity.entityType;
row.parent = parent;
if(row.destination == null)
row.destination = optional.destination;
rscp.connection.addInheritance(row);
rscp.fetchNowAndReschedule();
throw new CommandAnswerException("{_LG}All is ok? I don't ready to check it myself.");
}
protected void addPermission(RowEntity entity, String permission, ArgumentUtilities.OptionalParams optional) throws CommandAnswerException
{
// final ArrayList<String> answer = new ArrayList<>();
final RowPermission row = new RowPermission();
boolean negate = permission.startsWith("-");
if(negate)
permission = permission.substring(1);
row.entity = entity.entity;
row.entityType = entity.entityType;
row.permission = permission;
row.value = !negate;
if(row.destination == null)
row.destination = optional.destination;
rscp.connection.addPermission(row);
rscp.fetchNowAndReschedule();
throw new CommandAnswerException("{_LG}All is ok? I don't ready to check it myself.");
}
protected void removeGroup(RowEntity entity, String whatToRemove) throws CommandAnswerException
{
final ArrayList<String> answer = new ArrayList<>();
// Find out what does entered identifier mean?
final LinkedList<RowInheritance> possibleTargets = new LinkedList<>();
for(RowInheritance row : entity.inheritance)
{
if(whatToRemove.equalsIgnoreCase(row.splittedId))
{
if(row.hasClonesInRow())
answer.add("{_LR}Cannot remove inheritance record {_WH}"
+ row.splittedId + "{_LR} from DB due to too complex initial data.");
else
possibleTargets.add(row);
continue;
}
if(whatToRemove.equalsIgnoreCase(row.getParentWithInstance()))
possibleTargets.add(row);
}
if(possibleTargets.isEmpty())
throw new CommandAnswerException("{_LR}Sorry, I don't understand what I have to remove from DB.");
if(possibleTargets.size() > 1)
throw new CommandAnswerException("{_LR}There are several possibilities what to remove. Please use unique white id.");
final RowInheritance row = possibleTargets.get(0);
rscp.connection.removeInheritanceById(row.id);
answer.add("{_LG}Successfully removed inheritance record {_WH}" + row.splittedId + "{_LG}!");
rscp.fetchNowAndReschedule();
throw new CommandAnswerException(answer);
}
protected void removePermission(RowEntity entity, String whatToRemove) throws CommandAnswerException
{
final ArrayList<String> answer = new ArrayList<>();
// Find out what does entered identifier mean?
final LinkedList<RowPermission> possibleTargets = new LinkedList<>();
for(RowPermission row : entity.permissions)
{
if(whatToRemove.equalsIgnoreCase(row.splittedId))
{
if(row.hasClonesInRow())
answer.add("{_LR}Cannot remove inheritance record {_WH}"
+ row.splittedId + "{_LR} from DB due to too complex initial data.");
else
possibleTargets.add(row);
continue;
}
if(whatToRemove.equalsIgnoreCase(row.permission))
possibleTargets.add(row);
}
if(possibleTargets.isEmpty())
throw new CommandAnswerException("{_LR}Sorry, I don't understand what I should remove from DB.");
if(possibleTargets.size() > 1)
throw new CommandAnswerException("{_LR}There are several possibilities what to remove. Please use unique white id.");
final RowPermission row = possibleTargets.get(0);
rscp.connection.removePermissionsById(row.id);
answer.add("{_LG}Successfully removed inheritance record {_WH}" + row.splittedId + "{_LG}!");
rscp.fetchNowAndReschedule();
throw new CommandAnswerException(answer);
}
}
Loading…
Cancel
Save