Skip to content

Instantly share code, notes, and snippets.

@M4cs
Last active March 3, 2020 17:01
Show Gist options
  • Save M4cs/d45bd756cc59e4da4bfd16ebc4577cff to your computer and use it in GitHub Desktop.
Save M4cs/d45bd756cc59e4da4bfd16ebc4577cff to your computer and use it in GitHub Desktop.
package us.updat.betterparty.utils;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import us.updat.betterparty.BPMain;
import us.updat.betterparty.BPParty;
import java.util.Iterator;
import java.util.List;
import java.util.UUID;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
public class BPJsonUtil {
private static FileWriter file;
@SuppressWarnings("unchecked")
public static void readJSONToParty(BPParty party, BPMain plugin, String fileName) {
JSONParser parser = new JSONParser();
try (Reader reader = new FileReader(plugin.getDataFolder() + "storage/" + fileName)){
JSONObject obj = (JSONObject) parser.parse(reader);
party.setPartyName((String) obj.get("party_name"));
party.setPartyOwner(UUID.fromString((String) obj.get("party_owner")));
JSONArray partyAdmins = (JSONArray) obj.get("party_admins");
if (partyAdmins != null) {
Iterator<String> adminIter = partyAdmins.iterator();
if (adminIter.hasNext()) {
while (adminIter.hasNext()) {
party.addPartyAdmin(UUID.fromString(adminIter.next()));
}
} else {
party.addPartyAdmin(UUID.fromString((String) obj.get("party_owner")));
}
}
JSONArray partyMembers = (JSONArray) obj.get("party_members");
if (partyMembers != null) {
Iterator<String> memberIter = partyMembers.iterator();
if (memberIter.hasNext()) {
while (memberIter.hasNext()) {
party.addPartyMember(UUID.fromString(memberIter.next()));
}
} else {
party.addPartyMember(UUID.fromString((String) obj.get("party_owner")));
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
public static void writePartyToJSON(BPParty party, BPMain plugin) {
JSONObject obj = new JSONObject();
List<UUID> partyAdmins = party.getPartyAdmins();
UUID partyOwner = party.getPartyOwner();
List<UUID> partyMembers = party.getPartyMembers();
String partyName = party.getPartyName();
obj.put("name", partyName);
obj.put("owner", partyOwner.toString());
JSONArray jsonAdmins = new JSONArray();
if (partyAdmins != null && partyAdmins.size() > 0) {
for (UUID admin : partyAdmins) {
jsonAdmins.add(admin.toString());
}
obj.put("party_admins", jsonAdmins);
} else {
obj.put("party_admins", new JSONArray());
}
JSONArray jsonMembers = new JSONArray();
if (partyMembers != null && partyMembers.size() > 0) {
for (UUID member : partyMembers) {
jsonAdmins.add(member.toString());
}
obj.put("party_admins", jsonMembers);
} else {
obj.put("party_admins", new JSONArray());
}
try {
file = new FileWriter(plugin.getDataFolder() + "storage/" + partyName + ".json");
file.write(obj.toJSONString());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
file.flush();
file.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
package us.updat.betterparty;
import java.util.List;
import java.util.UUID;
import us.updat.betterparty.utils.BPJsonUtil;
public class BPParty {
String partyName;
List<UUID> partyMembers;
UUID partyOwner;
List<UUID> partyAdmins;
public BPParty(String partyName, UUID partyOwner) {
this.partyName = partyName;
this.partyOwner = partyOwner;
this.partyMembers.add(this.partyOwner);
this.partyAdmins.add(this.partyOwner);
}
public String getPartyName() {
return partyName;
}
public List<UUID> getPartyMembers(){
return partyMembers;
}
public UUID getPartyOwner() {
return partyOwner;
}
public List<UUID> getPartyAdmins(){
return partyAdmins;
}
public void setPartyName(String partyName) {
this.partyName = partyName;
}
public void setPartyOwner(UUID newPartyOwner) {
partyOwner = newPartyOwner;
}
public boolean removePartyMember(UUID member) {
if (partyMembers.contains(member)) {
return partyMembers.remove(member);
} else {
return false;
}
}
public boolean addPartyMember(UUID member) {
if (!addPartyMember(member)) {
return partyMembers.add(member);
} else {
return false;
}
}
public boolean addPartyAdmin(UUID admin) {
if (!partyAdmins.contains(admin)){
return partyAdmins.add(admin);
} else {
return false;
}
}
public boolean removePartyAdmin(UUID admin) {
if (partyAdmins.contains(admin)){
return partyAdmins.remove(admin);
} else {
return false;
}
}
public void saveParty(BPMain plugin) {
BPJsonUtil.writePartyToJSON(this, plugin);
}
public void populateFromJSON(String fileName, BPMain plugin) {
BPJsonUtil.readJSONToParty(this, plugin, fileName);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment