= Saving allowed roles per guild

This commit is contained in:
Matthew Cech
2019-05-06 00:21:17 -07:00
parent 380fdbc605
commit 5eddc4645e
9 changed files with 110 additions and 16 deletions
+10 -4
View File
@@ -7,25 +7,29 @@ import utils.AdminControl;
// Context for a given guild for kittybot. Primarily designed to hold guild-specific settings.
public class KittyGuild extends DatabaseTrackedObject
{
public String uniqueID;
// Variables
public final String uniqueID;
public KittyRating contentRating;
public KittyUser guildOwner;
public boolean polling;
public String poll;
public ArrayList<String> hasVoted = new ArrayList<String>();
public ArrayList<String> allowedRole = new ArrayList<String>();
public ArrayList<String> emoji = new ArrayList<String>();
public ArrayList <KittyPoll> choices = new ArrayList<KittyPoll>();
public AdminControl control;
// Database synced info
public final KittyGuildRoleList roleList;
private String commandIndicator;
// Default content for a guild
public KittyGuild(String uniqueID, AdminControl adminControl, ArrayList <String> emoji)
{
super(uniqueID);
control = adminControl;
this.uniqueID = uniqueID;
roleList = new KittyGuildRoleList(uniqueID);
control = adminControl;
this.contentRating = KittyRating.Safe;
this.polling = false;
this.emoji = emoji;
@@ -36,6 +40,8 @@ public class KittyGuild extends DatabaseTrackedObject
public KittyGuild(String commandIndicator, KittyRating contentRating, KittyUser guildOwner, String uniqueID)
{
super(uniqueID);
this.uniqueID = uniqueID;
roleList = new KittyGuildRoleList(uniqueID);
SetCommandIndicator(commandIndicator);
this.contentRating = contentRating;
@@ -64,7 +70,7 @@ public class KittyGuild extends DatabaseTrackedObject
poll = null;
return "Poll ended!";
}
@Override
public String Serialize()
{
@@ -0,0 +1,81 @@
package dataStructures;
import java.util.Vector;
import core.DatabaseTrackedObject;
// Acts as a proxy of sorts for the allowedRole arraylist, keeping it tracked for a specific guild.
public class KittyGuildRoleList extends DatabaseTrackedObject
{
// Variables
private Vector<String> allowedRole = new Vector<String>();
private final static String delimiter = "\n";
private final static String split = "\\n";
private final static String differentiator = "roles";
// Constructor - provide it with the guild ID
public KittyGuildRoleList(String identifier)
{
super(identifier + differentiator);
}
// Mirrored behavior
public boolean contains(String role)
{
return allowedRole.contains(role);
}
public void add(String role)
{
allowedRole.add(role);
this.MarkDirty();
}
public boolean isEmpty()
{
return allowedRole.isEmpty();
}
public int size()
{
return allowedRole.size();
}
public String get(int index)
{
return allowedRole.get(index);
}
public void remove(String role)
{
allowedRole.remove(role);
this.MarkDirty();
}
// Writes out the roles as a single string that can be parsed back in later
@Override
public String Serialize()
{
String toSerialize = "";
for(int i = 0; i < allowedRole.size(); ++i)
{
if(i != 0)
toSerialize += delimiter;
toSerialize += allowedRole.get(i);
}
return toSerialize;
}
// Reads in the roles as a delimited single string that needs parsing
@Override
public void DeSerialzie(String string)
{
String[] rolesSplit = string.split(split);
for(int i = 0; i < rolesSplit.length; ++i)
allowedRole.add(rolesSplit[i]);
}
}