= Saving allowed roles per guild
This commit is contained in:
@@ -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]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user