Browse Source

Started implementation of database editing commands (/rscp user <user> addgroup/removegroup ...).

master
Stanislav Usenkov 9 years ago
parent
commit
72a40b3303
  1. 14
      pom.xml
  2. 18
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitDatabaseFetcher.java
  3. 84
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java
  4. 109
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUser.java
  5. 20
      src/main/java/ru/simsonic/rscPermissions/Engine/Backends/BackendDatabase.java
  6. 11
      src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseAction.java
  7. 56
      src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseTransaction.java
  8. 1
      src/main/java/ru/simsonic/rscPermissions/Engine/InternalCache.java
  9. 1
      src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionResult.java
  10. 22
      src/main/java/ru/simsonic/rscPermissions/Sponge/Commands/SpongeCommands.java
  11. 27
      src/main/java/ru/simsonic/rscPermissions/Sponge/SpongePermissionManager.java
  12. 10
      src/main/java/ru/simsonic/rscPermissions/SpongePluginMain.java

14
pom.xml

@ -4,7 +4,7 @@
<groupId>ru.simsonic</groupId> <groupId>ru.simsonic</groupId>
<artifactId>rscPermissions</artifactId> <artifactId>rscPermissions</artifactId>
<version>0.9.22b</version> <version>0.10.0b-SNAPSHOT</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>rscPermissions</name> <name>rscPermissions</name>
@ -50,28 +50,28 @@
<dependency> <dependency>
<groupId>mysql</groupId> <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version> <version>5.1.38</version>
<scope>runtime</scope> <scope>runtime</scope>
</dependency> </dependency>
<!-- Локальный кеш будет храниться в json-файле --> <!-- Локальный кеш будет храниться в json-файле -->
<dependency> <dependency>
<groupId>com.google.code.gson</groupId> <groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId> <artifactId>gson</artifactId>
<version>2.3.1</version> <version>2.6.2</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<!-- В первую очередь плагин создан под платформу Bukkit (Spigot) --> <!-- В первую очередь плагин создан под платформу Bukkit (Spigot) -->
<dependency> <dependency>
<groupId>org.spigotmc</groupId> <groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId> <artifactId>spigot-api</artifactId>
<version>1.8-R0.1-SNAPSHOT</version> <version>1.8.8-R0.1-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<!-- В связи с появлением Sponge API, разработка будет вестись и под него --> <!-- В связи с появлением Sponge API, разработка будет вестись и под него -->
<dependency> <dependency>
<groupId>org.spongepowered</groupId> <groupId>org.spongepowered</groupId>
<artifactId>spongeapi</artifactId> <artifactId>spongeapi</artifactId>
<version>2.0</version> <version>3.0.0</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<!-- Моя собственная библиотека общего кода для разных проектов --> <!-- Моя собственная библиотека общего кода для разных проектов -->
@ -132,7 +132,7 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version> <version>3.5.1</version>
<configuration> <configuration>
<source>1.7</source> <source>1.7</source>
<target>1.7</target> <target>1.7</target>
@ -160,7 +160,7 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId> <artifactId>maven-shade-plugin</artifactId>
<version>2.3</version> <version>2.4.3</version>
<executions> <executions>
<execution> <execution>
<phase>package</phase> <phase>package</phase>

18
src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitDatabaseFetcher.java

@ -28,14 +28,10 @@ public class BukkitDatabaseFetcher extends RestartableThread
BukkitPluginMain.consoleLog.warning("[rscp] Cannot connect to database! Using local cache only."); BukkitPluginMain.consoleLog.warning("[rscp] Cannot connect to database! Using local cache only.");
return; return;
} }
final DatabaseContents contents = rscp.connection.retrieveContents(); final DatabaseContents contents = remoteToLocal();
rscp.connection.disconnect(); rscp.connection.disconnect();
if(contents != null) if(contents != null)
{ {
contents.normalize();
rscp.localStorage.cleanup();
rscp.localStorage.saveContents(contents);
contents.filterServerId(rscp.getServer().getServerId());
rscp.internalCache.fill(contents); rscp.internalCache.fill(contents);
final Runnable syncTask = new Runnable() final Runnable syncTask = new Runnable()
{ {
@ -76,4 +72,16 @@ public class BukkitDatabaseFetcher extends RestartableThread
} else } else
BukkitPluginMain.consoleLog.warning("[rscp] Cannot load data from database."); BukkitPluginMain.consoleLog.warning("[rscp] Cannot load data from database.");
} }
public synchronized DatabaseContents remoteToLocal()
{
final DatabaseContents contents = rscp.connection.retrieveContents();
if(contents != null)
{
contents.normalize();
rscp.localStorage.cleanup();
rscp.localStorage.saveContents(contents);
contents.filterServerId(rscp.getServer().getServerId());
}
return contents;
}
} }

84
src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java

@ -1,10 +1,8 @@
package ru.simsonic.rscPermissions.Bukkit.Commands; package ru.simsonic.rscPermissions.Bukkit.Commands;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.logging.Level; import java.util.logging.Level;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import ru.simsonic.rscCommonsLibrary.RestartableThread; import ru.simsonic.rscCommonsLibrary.RestartableThread;
import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException; import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException;
import ru.simsonic.rscMinecraftLibrary.Bukkit.GenericChatCodes; import ru.simsonic.rscMinecraftLibrary.Bukkit.GenericChatCodes;
@ -12,13 +10,12 @@ import ru.simsonic.rscMinecraftLibrary.Bukkit.Tools;
import ru.simsonic.rscPermissions.API.Settings; import ru.simsonic.rscPermissions.API.Settings;
import ru.simsonic.rscPermissions.Bukkit.BukkitDatabaseFetcher; import ru.simsonic.rscPermissions.Bukkit.BukkitDatabaseFetcher;
import ru.simsonic.rscPermissions.BukkitPluginMain; import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.Engine.Matchers;
import ru.simsonic.rscPermissions.Engine.Phrases; import ru.simsonic.rscPermissions.Engine.Phrases;
import ru.simsonic.rscPermissions.Engine.ResolutionResult;
public class BukkitCommands public class BukkitCommands
{ {
private final BukkitPluginMain rscp; private final BukkitPluginMain rscp;
private final CommandUser cmdUser;
private final CommandLock cmdLock; private final CommandLock cmdLock;
private final CommandFetch cmdFetch; private final CommandFetch cmdFetch;
private final CommandDebug cmdDebug; private final CommandDebug cmdDebug;
@ -28,6 +25,7 @@ public class BukkitCommands
public BukkitCommands(final BukkitPluginMain plugin) public BukkitCommands(final BukkitPluginMain plugin)
{ {
this.rscp = plugin; this.rscp = plugin;
cmdUser = new CommandUser(rscp);
cmdLock = new CommandLock(rscp); cmdLock = new CommandLock(rscp);
cmdFetch = new CommandFetch(rscp); cmdFetch = new CommandFetch(rscp);
cmdDebug = new CommandDebug(rscp); cmdDebug = new CommandDebug(rscp);
@ -123,16 +121,31 @@ public class BukkitCommands
switch(args[0].toLowerCase()) switch(args[0].toLowerCase())
{ {
case "user": case "user":
onCommandHubUser(sender, args); cmdUser.onUserCommandHub(sender, args);
break; return;
case "lock": case "lock":
cmdLock.executeLock(sender, args); cmdLock.executeLock(sender, args);
return; return;
case "unlock": case "unlock":
cmdLock.executeUnlock(sender); cmdLock.executeUnlock(sender);
return; return;
case "fetch":
/* rscp fetch */
cmdFetch.execute(sender);
return;
case "debug":
/* rscp debug [<boolean variant>|toggle] */
cmdDebug.execute(sender, args);
return;
case "reload":
/* rscp reload */
cmdReload.execute(sender);
return;
case "update":
cmdUpdate.execute(sender, args);
return;
case "examplerows": case "examplerows":
/* rscp examplerows */ /* DEPRECATED: rscp examplerows */
if(sender.hasPermission("rscp.admin")) if(sender.hasPermission("rscp.admin"))
{ {
threadInsertExampleRows(sender); threadInsertExampleRows(sender);
@ -140,6 +153,7 @@ public class BukkitCommands
} }
break; break;
case "import": case "import":
/* DEPRECATED: rscp import pex-sql*/
if(sender.hasPermission("rscp.admin")) if(sender.hasPermission("rscp.admin"))
{ {
if(args.length > 1) if(args.length > 1)
@ -157,68 +171,12 @@ public class BukkitCommands
}); });
} }
return; return;
case "fetch":
/* rscp fetch */
cmdFetch.execute(sender);
return;
case "debug":
/* rscp debug [<boolean variant>|toggle] */
cmdDebug.execute(sender, args);
return;
case "reload":
/* rscp reload */
cmdReload.execute(sender);
return;
case "update":
cmdUpdate.execute(sender, args);
return;
case "help": case "help":
default: default:
break; break;
} }
throw new CommandAnswerException(help); throw new CommandAnswerException(help);
} }
private void onCommandHubUser(CommandSender sender, String[] args) throws CommandAnswerException
{
if(sender.hasPermission("rscp.admin") == false)
throw new CommandAnswerException("Not enough permissions.");
if(args.length < 3)
return;
final Player player = rscp.bridgeForBukkit.findPlayer(args[1]);
if(player != null)
args[1] = player.getName();
final ResolutionResult result = (player != null)
? rscp.permissionManager.getResult(player)
: rscp.permissionManager.getResult(args[1]);
final ArrayList<String> answer = new ArrayList<>();
if(Matchers.isCorrectDashlessUUID(args[1]))
args[1] = Matchers.uuidAddDashes(args[1]);
switch(args[2].toLowerCase())
{
case "lp":
answer.add("Permission list for user {_YL}" + args[1] + "{_LS}:");
final ArrayList<String> sorted_keys = new ArrayList<>(result.permissions.keySet());
Collections.sort(sorted_keys);
for(String perm : sorted_keys)
answer.add((result.permissions.get(perm) ? "{_LG}" : "{_LR}") + perm);
throw new CommandAnswerException(answer);
case "lg":
answer.add("Group list for user {_YL}" + args[1] + "{_LS}:");
for(String group : result.getOrderedGroups())
answer.add("{_LG}" + group);
throw new CommandAnswerException(answer);
case "p":
case "prefix":
answer.add("Calculated prefix for user {_YL}" + args[1] + "{_LS} is:");
answer.add("{_R}\"" + result.prefix + "{_R}\"");
throw new CommandAnswerException(answer);
case "s":
case "suffix":
answer.add("Calculated suffix for user {_YL}" + args[1] + "{_LS} is:");
answer.add("{_R}\"" + result.suffix + "{_R}\"");
throw new CommandAnswerException(answer);
}
}
public static boolean argumentToBoolean(String arg, Boolean prevForToggle) throws IllegalArgumentException public static boolean argumentToBoolean(String arg, Boolean prevForToggle) throws IllegalArgumentException
{ {
if(arg == null || "".equals(arg)) if(arg == null || "".equals(arg))

109
src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/CommandUser.java

@ -0,0 +1,109 @@
package ru.simsonic.rscPermissions.Bukkit.Commands;
import java.util.ArrayList;
import java.util.Collections;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException;
import ru.simsonic.rscPermissions.BukkitPluginMain;
import ru.simsonic.rscPermissions.Engine.Matchers;
import ru.simsonic.rscPermissions.Engine.ResolutionResult;
public class CommandUser
{
private final BukkitPluginMain rscp;
CommandUser(BukkitPluginMain plugin)
{
this.rscp = plugin;
}
public void onUserCommandHub(CommandSender sender, String[] args) throws CommandAnswerException
{
if(sender.hasPermission("rscp.admin"))
{
if(args.length < 3)
return;
final Player player = rscp.bridgeForBukkit.findPlayer(args[1]);
if(player != null)
args[1] = player.getName();
final ResolutionResult result = (player != null)
? rscp.permissionManager.getResult(player)
: rscp.permissionManager.getResult(args[1]);
if(Matchers.isCorrectDashlessUUID(args[1]))
args[1] = Matchers.uuidAddDashes(args[1]);
switch(args[2].toLowerCase())
{
case "p":
case "prefix":
viewPrefix(result, args[1]);
break;
case "s":
case "suffix":
viewSuffix(result, args[1]);
break;
case "listpermissions":
case "lp":
listPermissions(result, args[1]);
break;
case "listgroups":
case "lg":
listGroups(result, args[1]);
break;
case "addgroup":
case "ag":
// TO DO HERE
addGroup(result, args[1], null, null, null);
break;
case "removegroup":
case "rg":
// TO DO HERE
removeGroup(result, args[1], null);
break;
default:
break;
}
} else
throw new CommandAnswerException("Not enough permissions.");
}
private void viewPrefix(ResolutionResult result, String user) throws CommandAnswerException
{
final ArrayList<String> answer = new ArrayList<>();
answer.add("Calculated prefix for user {_YL}" + user + "{_LS} is:");
answer.add("{_R}\"" + result.prefix + "{_R}\"");
throw new CommandAnswerException(answer);
}
private void viewSuffix(ResolutionResult result, String user) throws CommandAnswerException
{
final ArrayList<String> answer = new ArrayList<>();
answer.add("Calculated suffix for user {_YL}" + user + "{_LS} is:");
answer.add("{_R}\"" + result.suffix + "{_R}\"");
throw new CommandAnswerException(answer);
}
private void listPermissions(ResolutionResult result, String user) throws CommandAnswerException
{
final ArrayList<String> answer = new ArrayList<>();
answer.add("Permission list for user {_YL}" + user + "{_LS}:");
final ArrayList<String> sorted_keys = new ArrayList<>(result.permissions.keySet());
Collections.sort(sorted_keys);
for(String perm : sorted_keys)
answer.add((result.permissions.get(perm) ? "{_LG}" : "{_LR}") + perm);
throw new CommandAnswerException(answer);
}
private void listGroups(ResolutionResult result, String user) throws CommandAnswerException
{
final ArrayList<String> answer = new ArrayList<>();
answer.add("Group list for user {_YL}" + user + "{_LS}:");
for(String group : result.getOrderedGroups())
answer.add("{_LG}" + group);
throw new CommandAnswerException(answer);
}
private void addGroup(ResolutionResult result, String user, String parent, String destination, Integer seconds) throws CommandAnswerException
{
final ArrayList<String> answer = new ArrayList<>();
throw new CommandAnswerException(answer);
}
private void removeGroup(ResolutionResult result, String user, String parent) throws CommandAnswerException
{
final ArrayList<String> answer = new ArrayList<>();
throw new CommandAnswerException(answer);
}
}

20
src/main/java/ru/simsonic/rscPermissions/Engine/Backends/BackendDatabase.java

@ -120,17 +120,25 @@ public class BackendDatabase extends ConnectionMySQL
setupQueryTemplate("{TEXT}", (text != null) ? "'" + text + "'" : "NULL"); setupQueryTemplate("{TEXT}", (text != null) ? "'" + text + "'" : "NULL");
executeUpdateT("Update_entity_text"); executeUpdateT("Update_entity_text");
} }
public synchronized void LockTables() public synchronized void lockTableEntities()
{ {
executeUpdate("LOCK TABLES `{DATABASE}`.`{PREFIX}entities`, `{DATABASE}`.`{PREFIX}permissions`, `{DATABASE}`.`{PREFIX}inheritance`;"); executeUpdate("LOCK TABLES `{DATABASE}`.`{PREFIX}entities`;");
} }
public synchronized void UnlockTables() public synchronized void lockTablePermissions()
{
executeUpdate("LOCK TABLES `{DATABASE}`.`{PREFIX}permissions`;");
}
public synchronized void lockTableInheritance()
{
executeUpdate("LOCK TABLES `{DATABASE}`.`{PREFIX}inheritance`;");
}
public synchronized void unlockAllTables()
{ {
executeUpdate("UNLOCK TABLES;"); executeUpdate("UNLOCK TABLES;");
} }
public synchronized void transactionStart() public synchronized void transactionStart()
{ {
executeUpdate("BEGIN TRANSACTION;"); executeUpdate("START TRANSACTION;");
} }
public synchronized void transactionCommit() public synchronized void transactionCommit()
{ {
@ -142,12 +150,12 @@ public class BackendDatabase extends ConnectionMySQL
} }
public synchronized void modifyDatabase() public synchronized void modifyDatabase()
{ {
LockTables(); lockTableEntities();
// FETCH ALL DATA // FETCH ALL DATA
transactionStart(); transactionStart();
// MAKE MODIFICATIONS // MAKE MODIFICATIONS
transactionCommit(); transactionCommit();
UnlockTables(); unlockAllTables();
// FETCH ALL DATA AGAIN // FETCH ALL DATA AGAIN
} }
} }

11
src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseAction.java

@ -0,0 +1,11 @@
package ru.simsonic.rscPermissions.Engine.Backends;
import ru.simsonic.rscPermissions.API.RowInheritance;
import ru.simsonic.rscPermissions.API.RowPermission;
public class DatabaseAction
{
public int id;
public RowPermission permissions;
public RowInheritance inheritance;
}

56
src/main/java/ru/simsonic/rscPermissions/Engine/Backends/DatabaseTransaction.java

@ -0,0 +1,56 @@
package ru.simsonic.rscPermissions.Engine.Backends;
import java.util.LinkedList;
import java.util.List;
import ru.simsonic.rscMinecraftLibrary.Bukkit.CommandAnswerException;
import ru.simsonic.rscPermissions.BukkitPluginMain;
public class DatabaseTransaction
{
private final BukkitPluginMain rscp;
private final List<DatabaseAction> actions = new LinkedList<>();
public DatabaseTransaction(BukkitPluginMain rscp)
{
this.rscp = rscp;
}
/*
What can happen?
<user> add permission [destination] [lifetime]
<user> remove permission [destination]
<user> add group [destination] [lifitime]
<user> remove group [destination]
*/
public void apply() throws CommandAnswerException
{
// START TRANSACTION AND LOCK TABLE
rscp.connection.lockTableEntities();
rscp.connection.lockTablePermissions();
rscp.connection.lockTableInheritance();
rscp.connection.transactionStart();
// SELECT FROM DATABASE INTO LOCAL CACHE TO MAKE IT ACTUAL
final DatabaseContents contents = rscp.commandHelper.threadFetchDatabaseContents.remoteToLocal();
// 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 TABLE
rscp.connection.transactionCommit();
rscp.connection.unlockAllTables();
// CALL PLUGIN TO APPLY ALL THIS CHANGES
rscp.commandHelper.threadFetchDatabaseContents.run();
}
}

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

@ -221,6 +221,7 @@ public class InternalCache
processPermissions(params, applicablePermissions); processPermissions(params, applicablePermissions);
result.permissions = params.finalPerms; result.permissions = params.finalPerms;
result.groups = params.groupList; result.groups = params.groupList;
result.params = params;
return result; return result;
} }
private ResolutionResult resolveParent(ResolutionParams params) private ResolutionResult resolveParent(ResolutionParams params)

1
src/main/java/ru/simsonic/rscPermissions/Engine/ResolutionResult.java

@ -11,6 +11,7 @@ public class ResolutionResult
{ {
public String prefix = ""; public String prefix = "";
public String suffix = ""; public String suffix = "";
public ResolutionParams params;
public Map<String, Boolean> permissions; public Map<String, Boolean> permissions;
protected List<String> groups; protected List<String> groups;
public boolean hasPermission(String permission) public boolean hasPermission(String permission)

22
src/main/java/ru/simsonic/rscPermissions/Sponge/Commands/SpongeCommands.java

@ -1,19 +1,19 @@
package ru.simsonic.rscPermissions.Sponge.Commands; package ru.simsonic.rscPermissions.Sponge.Commands;
import org.spongepowered.api.text.Texts; import org.spongepowered.api.command.spec.CommandExecutor;
import org.spongepowered.api.util.command.CommandException; import org.spongepowered.api.command.CommandException;
import org.spongepowered.api.util.command.CommandResult; import org.spongepowered.api.command.CommandResult;
import org.spongepowered.api.util.command.CommandSource; import org.spongepowered.api.command.CommandSource;
import org.spongepowered.api.util.command.args.CommandContext; import org.spongepowered.api.command.args.CommandContext;
import org.spongepowered.api.util.command.spec.CommandExecutor; import org.spongepowered.api.command.spec.CommandSpec;
import org.spongepowered.api.util.command.spec.CommandSpec; import org.spongepowered.api.text.Text;
public class SpongeCommands implements CommandExecutor public class SpongeCommands implements CommandExecutor
{ {
private final CommandSpec commandHub = CommandSpec.builder() private final CommandSpec commandHub = CommandSpec.builder()
.setDescription(Texts.of("Hello World Command")) .description(Text.of("Hello World Command"))
.setPermission("myplugin.command.helloworld") .permission("myplugin.command.helloworld")
.setExecutor(this) .executor(this)
.build(); .build();
public SpongeCommands() public SpongeCommands()
{ {
@ -22,7 +22,7 @@ public class SpongeCommands implements CommandExecutor
@Override @Override
public CommandResult execute(CommandSource src, CommandContext context) throws CommandException public CommandResult execute(CommandSource src, CommandContext context) throws CommandException
{ {
src.sendMessage(Texts.of("Hello rscp's World!")); src.sendMessage(Text.of("Hello rscp's World!"));
return CommandResult.success(); return CommandResult.success();
} }
} }

27
src/main/java/ru/simsonic/rscPermissions/Sponge/SpongePermissionManager.java

@ -1,21 +1,25 @@
package ru.simsonic.rscPermissions.Sponge; package ru.simsonic.rscPermissions.Sponge;
import java.util.Collection;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.spongepowered.api.service.context.ContextCalculator;
import org.spongepowered.api.service.permission.PermissionDescription;
import org.spongepowered.api.service.permission.PermissionService; import org.spongepowered.api.service.permission.PermissionService;
import org.spongepowered.api.service.permission.Subject;
import org.spongepowered.api.service.permission.SubjectCollection; import org.spongepowered.api.service.permission.SubjectCollection;
import org.spongepowered.api.service.permission.SubjectData; import org.spongepowered.api.service.permission.SubjectData;
import org.spongepowered.api.service.permission.context.ContextCalculator;
import ru.simsonic.rscPermissions.SpongePluginMain; import ru.simsonic.rscPermissions.SpongePluginMain;
public class SpongePermissionManager implements PermissionService public class SpongePermissionManager implements PermissionService
{ {
private final SpongePluginMain rscp; private final SpongePluginMain rscp;
private final Logger logger; // private final Logger logger;
public SpongePermissionManager(SpongePluginMain plugin) public SpongePermissionManager(SpongePluginMain plugin)
{ {
this.rscp = plugin; this.rscp = plugin;
this.logger = rscp.getLogger(); // this.logger = rscp.getLogger();
} }
@Override @Override
public SubjectCollection getUserSubjects() public SubjectCollection getUserSubjects()
@ -43,7 +47,22 @@ public class SpongePermissionManager implements PermissionService
throw new UnsupportedOperationException("Not supported yet."); throw new UnsupportedOperationException("Not supported yet.");
} }
@Override @Override
public void registerContextCalculator(ContextCalculator calculator) public void registerContextCalculator(ContextCalculator<Subject> cc)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Optional<PermissionDescription.Builder> newDescriptionBuilder(Object o)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Optional<PermissionDescription> getDescription(String string)
{
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public Collection<PermissionDescription> getDescriptions()
{ {
throw new UnsupportedOperationException("Not supported yet."); throw new UnsupportedOperationException("Not supported yet.");
} }

10
src/main/java/ru/simsonic/rscPermissions/SpongePluginMain.java

@ -3,13 +3,15 @@ package ru.simsonic.rscPermissions;
import com.google.inject.Inject; import com.google.inject.Inject;
import java.io.File; import java.io.File;
import org.slf4j.Logger; import org.slf4j.Logger;
/*
import org.spongepowered.api.Game; import org.spongepowered.api.Game;
import org.spongepowered.api.event.Subscribe; import org.spongepowered.api.event.Subscribe;
import org.spongepowered.api.event.state.ServerAboutToStartEvent; import org.spongepowered.api.event.sstate.ServerAboutToStartEvent;
import org.spongepowered.api.event.state.ServerStartedEvent; import org.spongepowered.api.event.state.ServerStartedEvent;
import org.spongepowered.api.event.state.ServerStartingEvent; import org.spongepowered.api.event.state.ServerStartingEvent;
import org.spongepowered.api.event.state.ServerStoppedEvent; import org.spongepowered.api.event.state.ServerStoppedEvent;
import org.spongepowered.api.event.state.ServerStoppingEvent; import org.spongepowered.api.event.state.ServerStoppingEvent;
*/
import org.spongepowered.api.plugin.Plugin; import org.spongepowered.api.plugin.Plugin;
import ru.simsonic.rscPermissions.API.Settings; import ru.simsonic.rscPermissions.API.Settings;
import ru.simsonic.rscPermissions.Engine.Backends.BackendDatabase; import ru.simsonic.rscPermissions.Engine.Backends.BackendDatabase;
@ -20,15 +22,18 @@ import ru.simsonic.rscPermissions.Sponge.SpongePluginConfiguration;
// Documentation for Sponge: https://docs.spongepowered.org/ru/index.html // Documentation for Sponge: https://docs.spongepowered.org/ru/index.html
@Plugin(id = "rscPermissions", name = "rscPermissions", version = "0.9.16b") @Plugin(id = "rscPermissions", name = "rscPermissions", version = "0.10.0b")
public class SpongePluginMain public class SpongePluginMain
{ {
/*
private final Logger logger; private final Logger logger;
*/
private final Settings settings = new SpongePluginConfiguration(this); private final Settings settings = new SpongePluginConfiguration(this);
private final SpongePermissionManager permissionManager = new SpongePermissionManager(this); private final SpongePermissionManager permissionManager = new SpongePermissionManager(this);
public final BackendJson localStorage = new BackendJson(new File("")); public final BackendJson localStorage = new BackendJson(new File(""));
public final BackendDatabase connection = new BackendDatabase(null); public final BackendDatabase connection = new BackendDatabase(null);
public final InternalCache internalCache = new InternalCache(); public final InternalCache internalCache = new InternalCache();
/*
@Inject @Inject
private Game game; private Game game;
@Inject @Inject
@ -66,4 +71,5 @@ public class SpongePluginMain
{ {
logger.info("onServerStopped"); logger.info("onServerStopped");
} }
*/
} }

Loading…
Cancel
Save