Skip to content

Commit 69f0c79

Browse files
committed
Profile deserialization and serialization
1 parent 7044599 commit 69f0c79

File tree

3 files changed

+83
-0
lines changed

3 files changed

+83
-0
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import lombok.RequiredArgsConstructor;
2929
import lombok.Setter;
3030

31+
import java.io.Serializable;
3132
import java.util.*;
3233

3334
/**
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package me.innectic.permissify.api.profile;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Getter;
5+
import me.innectic.permissify.api.permission.Permission;
6+
import me.innectic.permissify.api.permission.PermissionGroup;
7+
8+
import java.io.Serializable;
9+
import java.util.List;
10+
import java.util.Map;
11+
import java.util.Optional;
12+
import java.util.UUID;
13+
14+
/**
15+
* @author Innectic
16+
* @since 8/26/2017
17+
*/
18+
@AllArgsConstructor
19+
public class PermissifyProfile implements Serializable {
20+
@Getter private final List<PermissionGroup> groups;
21+
@Getter private Map<UUID, List<Permission>> playerPermissions;
22+
@Getter private Optional<PermissionGroup> defaultGroup;
23+
@Getter private String chatFormat;
24+
@Getter private String whisperFormat;
25+
@Getter private List<UUID> superAdmins;
26+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package me.innectic.permissify.api.profile;
2+
3+
import lombok.AllArgsConstructor;
4+
5+
import java.io.*;
6+
import java.util.Optional;
7+
8+
/**
9+
* @author Innectic
10+
* @since 8/26/2017
11+
*/
12+
@AllArgsConstructor
13+
public class ProfileSerializer {
14+
private final String profileName;
15+
16+
/**
17+
* Serialize a permissify profile into a permissify profile file
18+
*
19+
* @param profile the profile to serialize
20+
* @param baseDirectory the base of the directory to store the profiles in
21+
* @return if the profile was successfully stored
22+
*/
23+
public boolean serialize(PermissifyProfile profile, String baseDirectory) {
24+
try {
25+
FileOutputStream outputStream = new FileOutputStream(baseDirectory + "/profiles/" + profileName + ".permissify");
26+
ObjectOutputStream out = new ObjectOutputStream(outputStream);
27+
out.writeObject(profile);
28+
out.close();
29+
outputStream.close();
30+
} catch (IOException e) {
31+
e.printStackTrace();
32+
return false;
33+
}
34+
return true;
35+
}
36+
37+
/**
38+
* Deserialize a permissify profile file into a real permissify profile
39+
*
40+
* @param profile the profile file
41+
* @return the profile, fulfilled if done, empty otherwise.
42+
*/
43+
public Optional<PermissifyProfile> deserialize(String profile) {
44+
Optional<PermissifyProfile> deserialized = Optional.empty();
45+
try {
46+
long start = System.currentTimeMillis();
47+
FileInputStream inputStream = new FileInputStream(profile);
48+
ObjectInputStream input = new ObjectInputStream(inputStream);
49+
deserialized = Optional.of((PermissifyProfile) input.readObject());
50+
long end = System.currentTimeMillis();
51+
} catch (IOException | ClassNotFoundException e) {
52+
e.printStackTrace();
53+
}
54+
return deserialized;
55+
}
56+
}

0 commit comments

Comments
 (0)