Browse Source

Better output with */rscp users* and */rscp groups*.

master
Stanislav Usenkov 9 years ago
parent
commit
0e4eb67004
  1. 7
      src/main/java/ru/simsonic/rscPermissions/API/EntityType.java
  2. 13
      src/main/java/ru/simsonic/rscPermissions/API/PlayerType.java
  3. 3
      src/main/java/ru/simsonic/rscPermissions/API/RowEntity.java
  4. 47
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandEntity.java
  5. 2
      src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultPermission.java
  6. 35
      src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseEditor.java
  7. 12
      src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java

7
src/main/java/ru/simsonic/rscPermissions/API/EntityType.java

@ -2,9 +2,10 @@ package ru.simsonic.rscPermissions.API;
public enum EntityType public enum EntityType
{ {
GROUP(0), GROUP ( 0),
PLAYER(1), PLAYER ( 1),
UNKNOWN(-1); UNKNOWN(-1),
;
private final int value; private final int value;
private EntityType(int value) private EntityType(int value)
{ {

13
src/main/java/ru/simsonic/rscPermissions/API/PlayerType.java

@ -5,12 +5,13 @@ import ru.simsonic.rscPermissions.Engine.Matchers;
public enum PlayerType public enum PlayerType
{ {
NAME(0), // 16 chars [_a-zA-Z0-9] max NAME ( 0), // 16 chars [_a-zA-Z0-9] max
UUID(1), // 550e8400-e29b-41d4-a716-446655440000 UUID ( 1), // 550e8400-e29b-41d4-a716-446655440000
DASHLESS_UUID(2), // 550e8400e29b41d4a716446655440000 DASHLESS_UUID ( 2), // 550e8400e29b41d4a716446655440000
INTERNET_WILDCARD(3), // 192.168.*.* INTERNET_WILDCARD ( 3), // 192.168.*.*
INTERNET_SUBNETMASK(4), // 192.168.0.0/16 INTERNET_SUBNETMASK( 4), // 192.168.0.0/16
INAPPLICABLE(-1); INAPPLICABLE (-1),
;
private final int value; private final int value;
private PlayerType(int value) private PlayerType(int value)
{ {

3
src/main/java/ru/simsonic/rscPermissions/API/RowEntity.java

@ -22,6 +22,7 @@ public class RowEntity implements Cloneable, Comparable<RowEntity>
@Override @Override
public int compareTo(RowEntity other) public int compareTo(RowEntity other)
{ {
return id - other.id; final int deltaId = id - other.id;
return deltaId != 0 ? deltaId : entity.compareTo(other.entity);
} }
} }

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

@ -139,24 +139,51 @@ public class CommandEntity
} }
public void listGroups(CommandSender sender) throws CommandAnswerException public void listGroups(CommandSender sender) throws CommandAnswerException
{ {
final List<String> answer = new ArrayList<>(16); final List<String> answer = new ArrayList<>(16);
final Set<String> groups = rscp.internalCache.getKnownGroups(); final Set<RowEntity> groups = rscp.internalCache.getKnownGroupObjects();
answer.add("There are following known groups in database:"); answer.add("There are following known groups in database:");
for(String group : groups) for(RowEntity group : groups)
if(!"".equals(group)) {
answer.add("{_WH}" + group); final String details = detailsAboutEntity(group);
if(details != null)
answer.add(details);
}
throw new CommandAnswerException(answer); throw new CommandAnswerException(answer);
} }
public void listUsers(CommandSender sender) throws CommandAnswerException public void listUsers(CommandSender sender) throws CommandAnswerException
{ {
final List<String> answer = new LinkedList<>(); final List<String> answer = new LinkedList<>();
final Set<String> users = rscp.internalCache.getKnownUsers(); final Set<RowEntity> users = rscp.internalCache.getKnownUserObjects();
answer.add("There are following known users in database:"); answer.add("There are following known users in database:");
for(String user : users) for(RowEntity user : users)
if(!"".equals(user)) {
answer.add("{_WH}" + user); final String details = detailsAboutEntity(user);
if(details != null)
answer.add(details);
}
throw new CommandAnswerException(answer); throw new CommandAnswerException(answer);
} }
private String detailsAboutEntity(RowEntity entity)
{
String name = entity.entity;
if("".equals(name))
// return null;
name = "<WTF?!?>";
final StringBuilder sb = new StringBuilder();
if(entity.splittedId != null)
sb.append("{_WH}").append(entity.splittedId).append(" ");
sb.append("{_YL}").append(name);
if(entity.prefix != null && !"".equals(entity.prefix))
sb.append("{_LS}, prefix \"").append(entity.prefix).append("{_LS}\"");
if(entity.suffix != null && !"".equals(entity.suffix))
sb.append("{_LS}, suffix \"").append(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);
}
return sb.toString();
}
private void viewEntityPrefix(RowEntity entity) throws CommandAnswerException private void viewEntityPrefix(RowEntity entity) throws CommandAnswerException
{ {
final ArrayList<String> answer = new ArrayList<>(); final ArrayList<String> answer = new ArrayList<>();

2
src/main/java/ru/simsonic/rscPermissions/Bukkit/VaultPermission.java

@ -320,7 +320,7 @@ public final class VaultPermission extends net.milkbowl.vault.permission.Permiss
public String[] getGroups() public String[] getGroups()
{ {
bridge.printDebugStackTrace(); bridge.printDebugStackTrace();
final Set<String> groups = rscp.internalCache.getKnownGroups(); final Set<String> groups = rscp.internalCache.getKnownGroupNames();
return groups.toArray(new String[groups.size()]); return groups.toArray(new String[groups.size()]);
} }
} }

35
src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseEditor.java

@ -5,7 +5,6 @@ import java.util.HashSet;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.Map; import java.util.Map;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException;
import ru.simsonic.rscMinecraftLibrary.Bukkit.GenericChatCodes; import ru.simsonic.rscMinecraftLibrary.Bukkit.GenericChatCodes;
import ru.simsonic.rscPermissions.API.RowEntity; import ru.simsonic.rscPermissions.API.RowEntity;
import ru.simsonic.rscPermissions.API.RowInheritance; import ru.simsonic.rscPermissions.API.RowInheritance;
@ -70,40 +69,6 @@ public class DatabaseEditor extends BackendDatabase
(row.expirience != 0 ? row.expirience : null), (row.expirience != 0 ? row.expirience : null),
/* FIX LIFETIME */ 0); /* FIX LIFETIME */ 0);
} }
public void apply() throws CommandAnswerException
{
final DatabaseContents contents = prepareChanges();
// UNDERSTAND WHAT TO DO
if(contents != null)
{
// OPTIONAL: REMOVE OLD `id`'s WITH POTENTIALLY MULTIPLY DATA
if(false)
{
// OPTIONAL: RESTORE DATA THAT SHOULDN'T BE REMOVED
}
// OPTIONAL: INSERT NEW DATA THAT SHOULD BE ADDED
if(false)
{
}
// COMMIT CHANGES AND UNLOCK TABLES
finishChanges(true);
} else
// CANCEL TRANSACTION AND UNLOCK TABLES
finishChanges(false);
}
private void applyAddUserPermission()
{
}
private void applyAddUserInheritance()
{
}
private void applyRemoveUserPermission()
{
}
private void applyRemoveUserInheritance()
{
}
private DatabaseContents prepareChanges() private DatabaseContents prepareChanges()
{ {
// START TRANSACTION AND LOCK TABLE // START TRANSACTION AND LOCK TABLE

12
src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java

@ -26,14 +26,22 @@ public class InternalCache extends InternalStorage
this.alwaysInheritDefaultGroup = alwaysInheritDefaultGroup; this.alwaysInheritDefaultGroup = alwaysInheritDefaultGroup;
this.groupsInheritParentPrefixes = groupsInheritParentPrefixes; this.groupsInheritParentPrefixes = groupsInheritParentPrefixes;
} }
public synchronized Set<String> getKnownGroups() public synchronized Set<RowEntity> getKnownGroupObjects()
{
return new TreeSet<>(entities_g.values());
}
public synchronized Set<RowEntity> getKnownUserObjects()
{
return new TreeSet<>(entities_u.values());
}
public synchronized Set<String> getKnownGroupNames()
{ {
final Set<String> result = new TreeSet<>(); final Set<String> result = new TreeSet<>();
for(RowEntity row : entities_g.values()) for(RowEntity row : entities_g.values())
result.add(row.entity); result.add(row.entity);
return result; return result;
} }
public synchronized Set<String> getKnownUsers() public synchronized Set<String> getKnownUserNames()
{ {
final Set<String> result = new TreeSet<>(); final Set<String> result = new TreeSet<>();
for(RowEntity row : entities_u.values()) for(RowEntity row : entities_u.values())

Loading…
Cancel
Save