Skip to content

Commit 66c3d32

Browse files
committed
BREAKING: Recreate profiles
1 parent e04a70e commit 66c3d32

File tree

11 files changed

+73
-20
lines changed

11 files changed

+73
-20
lines changed

API/pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,11 @@
1010

1111
<artifactId>PermissifyAPI</artifactId>
1212

13+
<dependencies>
14+
<dependency>
15+
<groupId>com.google.code.gson</groupId>
16+
<artifactId>gson</artifactId>
17+
<version>2.8.0</version>
18+
</dependency>
19+
</dependencies>
1320
</project>

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
public class PermissifyConstants {
3838
// TODO: Create a language formatter to allow for translating.
3939

40+
public static final int PERMISSIFY_PROFILE_VERSION = 2;
41+
4042
// Chat messages
4143
private static final String PERMISSIFY_PREFIX = "&a&lPermissify> ";
4244

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public abstract class DatabaseHandler {
4545
@Getter protected Optional<PermissionGroup> defaultGroup = Optional.empty();
4646
@Getter protected final Optional<ConnectionInformation> connectionInformation;
4747
@Getter protected List<UUID> superAdmins = new ArrayList<>();
48+
// Revisit: Maybe different default formatters?
4849
protected String chatFormat = "{group} {username}: {message}";
4950
protected String whisperFormat = "{senderGroup} {username} > {receiverGroup} {to}: {message}";
5051

API/src/main/java/me/innectic/permissify/api/group/Permission.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
* @since 6/8/2017
3636
*/
3737
@AllArgsConstructor
38-
public class Permission implements Serializable {
38+
public class Permission {
3939
@Getter private String permission;
4040
@Getter @Setter private boolean granted;
4141
}

API/src/main/java/me/innectic/permissify/api/group/group/PermissionGroup.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
* @since 6/14/2017
4040
*/
4141
@RequiredArgsConstructor
42-
public class PermissionGroup implements Serializable {
42+
public class PermissionGroup {
4343
@Getter private final String name;
4444
@Getter private final String chatColor;
4545
@Getter private final String prefix;

API/src/main/java/me/innectic/permissify/api/group/ladder/AbstractLadder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
* @author Innectic
3434
* @since 9/1/2017
3535
*/
36-
public abstract class AbstractLadder implements Serializable {
36+
public abstract class AbstractLadder {
3737
@Getter protected Map<UUID, LadderLevel> players = new HashMap<>();
3838
@Getter protected List<LadderLevel> levels = new ArrayList<>();
3939

API/src/main/java/me/innectic/permissify/api/profile/PermissifyProfile.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,25 @@
3939
* @since 8/26/2017
4040
*/
4141
@AllArgsConstructor
42-
public class PermissifyProfile implements Serializable {
42+
public class PermissifyProfile {
4343
@Getter private final Map<String, PermissionGroup> groups;
4444
@Getter private Map<UUID, List<Permission>> playerPermissions;
4545
@Getter private PermissionGroup defaultGroup;
4646
@Getter private String chatFormat;
4747
@Getter private String whisperFormat;
4848
@Getter private List<UUID> superAdmins;
49+
@Getter private int version;
50+
51+
@Override
52+
public String toString() {
53+
return "PermissifyProfile {" +
54+
"groups=" + groups +
55+
", playerPermissions=" + playerPermissions +
56+
", defaultGroup=" + defaultGroup +
57+
", chatFormat=" + chatFormat +
58+
", whisperFormat=" + whisperFormat +
59+
", superAdmins=" + superAdmins +
60+
", version=" + version +
61+
" }";
62+
}
4963
}

API/src/main/java/me/innectic/permissify/api/profile/ProfileSerializer.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,13 @@
2424
*/
2525
package me.innectic.permissify.api.profile;
2626

27+
import com.google.gson.Gson;
28+
2729
import java.io.*;
30+
import java.nio.charset.Charset;
31+
import java.nio.file.Files;
32+
import java.nio.file.Path;
33+
import java.nio.file.Paths;
2834
import java.util.Optional;
2935

3036
/**
@@ -33,6 +39,8 @@
3339
*/
3440
public class ProfileSerializer {
3541

42+
private Gson gson = new Gson();
43+
3644
/**
3745
* Serialize a permissify profile into a permissify profile file
3846
*
@@ -42,12 +50,10 @@ public class ProfileSerializer {
4250
* @return if the profile was successfully stored
4351
*/
4452
public boolean serialize(PermissifyProfile profile, String baseDirectory, String profileName) {
53+
String json = gson.toJson(profile);
54+
Path file = Paths.get(baseDirectory + "/profiles/" + profileName + ".permissify");
4555
try {
46-
FileOutputStream outputStream = new FileOutputStream(baseDirectory + "/profiles/" + profileName + ".permissify");
47-
ObjectOutputStream out = new ObjectOutputStream(outputStream);
48-
out.writeObject(profile);
49-
out.close();
50-
outputStream.close();
56+
Files.write(file, json.getBytes());
5157
} catch (IOException e) {
5258
e.printStackTrace();
5359
return false;
@@ -65,10 +71,9 @@ public boolean serialize(PermissifyProfile profile, String baseDirectory, String
6571
public Optional<PermissifyProfile> deserialize(String profile, String baseDirectory) {
6672
Optional<PermissifyProfile> deserialized = Optional.empty();
6773
try {
68-
FileInputStream inputStream = new FileInputStream(baseDirectory + "/profiles/" + profile + ".permissify");
69-
ObjectInputStream input = new ObjectInputStream(inputStream);
70-
deserialized = Optional.of((PermissifyProfile) input.readObject());
71-
} catch (IOException | ClassNotFoundException e) {
74+
Reader reader = new FileReader(new File(baseDirectory + "/profiles/" + profile + ".permissify"));
75+
deserialized = Optional.ofNullable(gson.fromJson(reader, PermissifyProfile.class));
76+
} catch (FileNotFoundException e) {
7277
e.printStackTrace();
7378
}
7479
return deserialized;

API/src/main/java/me/innectic/permissify/api/util/ChatFormatter.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,15 @@ public static String formatChat(UUID uuid, String username, String message) {
5252

5353
Optional<PermissionGroup> group = handler.getPrimaryGroup(uuid);
5454
if (!group.isPresent()) return username + ": " + message; // TODO: Should be configurable
55-
String prefix = group.map(PermissionGroup::getPrefix).orElse("");
56-
String name = group.map(PermissionGroup::getName).orElse("");
57-
String suffix = group.map(PermissionGroup::getSuffix).orElse("");
58-
String chatColor = "&" + group.map(PermissionGroup::getChatColor);
55+
String groupPrefix = group.map(PermissionGroup::getPrefix).orElse("");
56+
String groupName = group.map(PermissionGroup::getName).orElse("");
57+
String groupSuffix = group.map(PermissionGroup::getSuffix).orElse("");
58+
String messageColor = "&" + group.map(PermissionGroup::getChatColor).orElse("");
5959

6060
String formatter = handler.getChatFormat(false);
61-
String finalGroup = prefix + name + suffix;
61+
String finalGroup = groupPrefix + groupName + groupSuffix;
6262
return formatter.replace("{group}", finalGroup)
63-
.replace("{username}", username).replace("{message}", chatColor + message);
63+
.replace("{username}", username).replace("{message}", messageColor + message);
6464
}
6565

6666
/**

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ private boolean saveProfile(String name) {
9898
long start = System.currentTimeMillis();
9999
PermissifyProfile profile = new PermissifyProfile(handler.getGroups(), handler.getCachedPermissions(),
100100
handler.getDefaultGroup().isPresent() ? handler.getDefaultGroup().get() : null,
101-
handler.getChatFormat(false), handler.getWhisperFormat(false), handler.getSuperAdmins());
101+
handler.getChatFormat(false), handler.getWhisperFormat(false), handler.getSuperAdmins(),
102+
PermissifyConstants.PERMISSIFY_PROFILE_VERSION);
102103
long end = System.currentTimeMillis();
103104
System.out.println("Generated profile in " + (end - start) + " ms.");
104105

0 commit comments

Comments
 (0)