Skip to content

Commit d328498

Browse files
committed
Cache clearing
1 parent b74dbcb commit d328498

File tree

7 files changed

+115
-5
lines changed

7 files changed

+115
-5
lines changed

API/src/main/java/me/innectic/permissify/api/PermissifyConstants.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public class PermissifyConstants {
5555
public static final String PERMISSIFY_PLAYER_GROUP_REMOVE = "permissify.player.group.remove";
5656
public static final String PERMISSIFY_PLAYER_GROUP_LIST = "permissify.player.group.list";
5757
public static final String PERMISSIFY_FORMAT = "permissify.format";
58+
public static final String PERMISSIFY_CACHE = "permissify.cache";
5859

5960
public static final String INSUFFICIENT_PERMISSIONS = PERMISSIFY_PREFIX + "&c&lInsufficient permissions!";
6061

@@ -64,6 +65,7 @@ public class PermissifyConstants {
6465
public static final String GROUP_PERMISSIONS = PERMISSIFY_PREFIX + "&c&lPermissions for <GROUP>: <PERMISSIONS>";
6566
public static final String GROUP_LIST = PERMISSIFY_PREFIX + "&c&lRegistered groups: <GROUPS>";
6667
public static final String PLAYER_GROUP_LIST = PERMISSIFY_PREFIX + "&c&lGroups for <PLAYER>: <GROUPS>";
68+
public static final String CACHE_CLEARED = PERMISSIFY_PREFIX + "&e&lCache has been cleared!";
6769

6870
public static final String PERMISSION_ADDED_GROUP = PERMISSIFY_PREFIX + "&c&lPermission <PERMISSION> has been added to <GROUP>!";
6971
public static final String PERMISSION_REMOVED_GROUP = PERMISSIFY_PREFIX + "&c&lPermission <PERMISSION> has been removed from <GROUP>!";
@@ -93,7 +95,7 @@ public class PermissifyConstants {
9395
public static final String INVALID_GROUP = PERMISSIFY_PREFIX + "&c&lInvalid group!";
9496
public static final String CONSOLE_INVALID_COMMAND = PERMISSIFY_PREFIX + "&c&lOnly one console command available: /permissify superadmin [username]";
9597
public static final String INVALID_PLAYER = PERMISSIFY_PREFIX + "&c&lInvalid player!";
96-
public static final String INVALID_FORMATTER = PERMISSIFY_PREFIX + "&c&lInvalid argument: <ARGUMENT>";
98+
public static final String INVALID_ARGUMENT = PERMISSIFY_PREFIX + "&c&lInvalid argument: <ARGUMENT>";
9799

98100
public static final String UNABLE_TO_CREATE = PERMISSIFY_PREFIX + "&c&lUnable to create <TYPE>: <REASON>";
99101
public static final String UNABLE_TO_REMOVE = PERMISSIFY_PREFIX + "&c&lUnable to remove <TYPE>: <REASON>";

API/src/main/java/me/innectic/permissify/api/database/DatabaseHandler.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
*/
2525
package me.innectic.permissify.api.database;
2626

27-
import lombok.Getter;
2827
import me.innectic.permissify.api.permission.Permission;
2928
import me.innectic.permissify.api.permission.PermissionGroup;
3029

@@ -42,8 +41,8 @@ public abstract class DatabaseHandler {
4241
protected List<PermissionGroup> cachedGroups = new ArrayList<>();
4342
protected List<UUID> superAdmins = new ArrayList<>();
4443
protected final Optional<ConnectionInformation> connectionInformation;
45-
@Getter protected String chatFormat = "{group} {username}: {message}";
46-
@Getter protected String whisperFormat = "{senderGroup} {username} > {receiverGroup} {to}: {message}";
44+
protected String chatFormat = "{group} {username}: {message}";
45+
protected String whisperFormat = "{senderGroup} {username} > {receiverGroup} {to}: {message}";
4746

4847
public DatabaseHandler(ConnectionInformation connectionInformation) {
4948
this.connectionInformation = Optional.ofNullable(connectionInformation);
@@ -81,6 +80,11 @@ protected void displayError(ConnectionError error, Exception e) {
8180
*/
8281
public abstract boolean connect();
8382

83+
/**
84+
* Clear the handler's cache and reload all needed values.
85+
*/
86+
public abstract void clear();
87+
8488
/**
8589
* Add a permission to a player
8690
*
@@ -220,10 +224,26 @@ protected void displayError(ConnectionError error, Exception e) {
220224
*/
221225
public abstract void setChatFormat(String format);
222226

227+
/**
228+
* Get the format for public chat messages
229+
*
230+
* @param skipCache should the cache be skipped? Forces getting from the database
231+
* @return the format
232+
*/
233+
public abstract String getChatFormat(boolean skipCache);
234+
223235
/**
224236
* Set the format of whispers
225237
*
226238
* @param format the format for whispers.
227239
*/
228240
public abstract void setWhisperFormat(String format);
241+
242+
/**
243+
* Get the format for whispers.
244+
*
245+
* @param skipCache should the cache be skipped? Forces getting from the database
246+
* @return the format
247+
*/
248+
public abstract String getWhisperFormat(boolean skipCache);
229249
}

API/src/main/java/me/innectic/permissify/api/database/handlers/MySQLHandler.java

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,16 @@ public boolean connect() {
8080
return connected;
8181
}
8282

83+
@Override
84+
public void clear() {
85+
cachedGroups = new ArrayList<>();
86+
cachedPermissions = new HashMap<>();
87+
superAdmins = new ArrayList<>();
88+
89+
chatFormat = getChatFormat(true);
90+
whisperFormat = getWhisperFormat(true);
91+
}
92+
8393
@Override
8494
public void addPermission(UUID uuid, String... permissions) {
8595
// Put the permissions into the cache
@@ -499,6 +509,28 @@ public void setChatFormat(String format) {
499509
}
500510
}
501511

512+
@Override
513+
public String getChatFormat(boolean skipCache) {
514+
if (!skipCache) return chatFormat;
515+
516+
Optional<Connection> connection = getConnection();
517+
if (!connection.isPresent()) {
518+
displayError(ConnectionError.REJECTED);
519+
return "";
520+
}
521+
522+
try {
523+
PreparedStatement statement = connection.get().prepareStatement("SELECT format FROM formatting WHERE formatter=?");
524+
statement.setString(1, FormatterType.CHAT.getUsageName());
525+
ResultSet results = statement.executeQuery();
526+
if (!results.next()) return "";
527+
return results.getString("format");
528+
} catch (SQLException e) {
529+
e.printStackTrace();
530+
}
531+
return "";
532+
}
533+
502534
@Override
503535
public void setWhisperFormat(String format) {
504536
this.chatFormat = format;
@@ -520,4 +552,25 @@ public void setWhisperFormat(String format) {
520552
displayError(ConnectionError.DATABASE_EXCEPTION, e);
521553
}
522554
}
555+
556+
@Override
557+
public String getWhisperFormat(boolean skipCache) {
558+
if (!skipCache) return whisperFormat;
559+
560+
Optional<Connection> connection = getConnection();
561+
if (!connection.isPresent()) {
562+
displayError(ConnectionError.REJECTED);
563+
return "";
564+
}
565+
566+
try {
567+
PreparedStatement statement = connection.get().prepareStatement("SELECT format FROM formatting WHERE formatter=?");
568+
statement.setString(1, FormatterType.WHISPER.getUsageName());
569+
ResultSet results = statement.executeQuery();
570+
if (!results.next()) return "";
571+
return results.getString("format");
572+
} catch (SQLException e) {
573+
e.printStackTrace();
574+
}
575+
return ""; }
523576
}

Spigot/src/main/java/me/innectic/permissify/spigot/PermissifyMain.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import lombok.Getter;
2828
import me.innectic.permissify.spigot.commands.PermissifyCommand;
29+
import me.innectic.permissify.spigot.commands.permissify.CacheCommand;
2930
import me.innectic.permissify.spigot.commands.permissify.FormatCommand;
3031
import me.innectic.permissify.spigot.events.PlayerChat;
3132
import me.innectic.permissify.spigot.events.PlayerJoin;
@@ -55,6 +56,7 @@ public class PermissifyMain extends JavaPlugin {
5556
@Getter private GroupCommand groupCommand;
5657
@Getter private PlayerCommand playerCommand;
5758
@Getter private FormatCommand formatCommand;
59+
@Getter private CacheCommand cacheCommand;
5860

5961
@Override
6062
public void onEnable() {
@@ -80,6 +82,8 @@ public void onEnable() {
8082
}
8183
groupCommand = new GroupCommand();
8284
playerCommand = new PlayerCommand();
85+
formatCommand = new FormatCommand();
86+
cacheCommand = new CacheCommand();
8387
// Register commands
8488
registerCommands();
8589
// Register listeners

Spigot/src/main/java/me/innectic/permissify/spigot/commands/PermissifyCommand.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@ public boolean onCommand(CommandSender sender, Command command, String s, String
112112
} else if (args[0].equalsIgnoreCase("format")) {
113113
CommandResponse response = plugin.getFormatCommand().handleSetFormat(sender, ArgumentUtil.getRemainingArgs(2, args));
114114
sender.sendMessage(ColorUtil.makeReadable(response.getResponse()));
115+
} else if (args[0].equalsIgnoreCase("cache")) {
116+
CommandResponse response = plugin.getCacheCommand().handleCache(sender, ArgumentUtil.getRemainingArgs(2, args));
117+
sender.sendMessage(ColorUtil.makeReadable(response.getResponse()));
115118
}
116119
}
117120
});
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package me.innectic.permissify.spigot.commands.permissify;
2+
3+
import me.innectic.permissify.api.PermissifyConstants;
4+
import me.innectic.permissify.api.util.ArgumentUtil;
5+
import me.innectic.permissify.spigot.PermissifyMain;
6+
import me.innectic.permissify.spigot.commands.CommandResponse;
7+
import org.bukkit.command.Command;
8+
import org.bukkit.command.CommandSender;
9+
10+
/**
11+
* @author Innectic
12+
* @since 7/2/2017
13+
*/
14+
public class CacheCommand {
15+
16+
public CommandResponse handleCache(CommandSender sender, String[] args) {
17+
if (!sender.hasPermission(PermissifyConstants.PERMISSIFY_CACHE))
18+
return new CommandResponse(PermissifyConstants.INSUFFICIENT_PERMISSIONS, false);
19+
if (args[0].equalsIgnoreCase("clear")) return handleCacheClear(sender, ArgumentUtil.getRemainingArgs(1, args));
20+
return new CommandResponse(PermissifyConstants.INVALID_ARGUMENT.replace("<ARGUMENT>", args[0]), false);
21+
}
22+
23+
private CommandResponse handleCacheClear(CommandSender sender, String[] args) {
24+
if (!PermissifyMain.getInstance().getPermissifyAPI().getDatabaseHandler().isPresent())
25+
return new CommandResponse(PermissifyConstants.UNABLE_OTHER.replace("<REASON>", "No database handler"), false);
26+
return new CommandResponse(PermissifyConstants.CACHE_CLEARED, true);
27+
}
28+
}

Spigot/src/main/java/me/innectic/permissify/spigot/commands/permissify/FormatCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public CommandResponse handleSetFormat(CommandSender sender, String[] args) {
1717
if (args.length < 2) return new CommandResponse(PermissifyConstants.NOT_ENOUGH_ARGUMENTS_SET_FORMAT, false);
1818
if (args[0].equals("chat")) return handleSetChatFormat(sender, ArgumentUtil.getRemainingArgs(1, args));
1919
else if (args[0].equals("whisper")) return handleWhisperFormat(sender, ArgumentUtil.getRemainingArgs(1, args));
20-
return new CommandResponse(PermissifyConstants.INVALID_FORMATTER.replace("<ARGUMENT>", args[0]), true);
20+
return new CommandResponse(PermissifyConstants.INVALID_ARGUMENT.replace("<ARGUMENT>", args[0]), true);
2121
}
2222

2323
private CommandResponse handleSetChatFormat(CommandSender sender, String[] args) {

0 commit comments

Comments
 (0)