diff --git a/src/dataStructures/KittyGuild.java b/src/dataStructures/KittyGuild.java index 6b1c15e..fd78f9f 100644 --- a/src/dataStructures/KittyGuild.java +++ b/src/dataStructures/KittyGuild.java @@ -19,7 +19,12 @@ public class KittyGuild extends DatabaseTrackedObject public AdminControl control; // Database synced info - public final KittyGuildRoleList roleList; + private final String roleListName = "guildRoles"; + public final KittyTrackedVector roleList; + + private final String beansName = "guildBeans"; + public final KittyTrackedLong beans; + private String commandIndicator; // Default content for a guild @@ -27,7 +32,8 @@ public class KittyGuild extends DatabaseTrackedObject { super(uniqueID); this.uniqueID = uniqueID; - roleList = new KittyGuildRoleList(uniqueID); + roleList = new KittyTrackedVector(roleListName, uniqueID); + beans = new KittyTrackedLong(beansName, uniqueID); control = adminControl; this.contentRating = KittyRating.Safe; @@ -41,7 +47,8 @@ public class KittyGuild extends DatabaseTrackedObject { super(uniqueID); this.uniqueID = uniqueID; - roleList = new KittyGuildRoleList(uniqueID); + roleList = new KittyTrackedVector(roleListName, uniqueID); + beans = new KittyTrackedLong(beansName, uniqueID); SetCommandIndicator(commandIndicator); this.contentRating = contentRating; diff --git a/src/dataStructures/KittyTrackedLong.java b/src/dataStructures/KittyTrackedLong.java new file mode 100644 index 0000000..8f7a9c4 --- /dev/null +++ b/src/dataStructures/KittyTrackedLong.java @@ -0,0 +1,83 @@ +package dataStructures; + +import core.DatabaseTrackedObject; +import utils.GlobalLog; +import utils.LogFilter; + +// An automatically tracked database value! +// Usage example: +// +// KittyTrackedLong score; +// +// public SomeConstructor(...) +// { +// myValue = new KittyTrackedLong("guildscore", this.UniqueID); +// } +// +public class KittyTrackedLong extends DatabaseTrackedObject +{ + private long tracked; // Tracked value + private final String databaseID; // in-database ID of this value + + // Config + private final static String differentiator = "long-"; + + public KittyTrackedLong(String readableName, String UniqueID) + { + super(differentiator + readableName + UniqueID); + databaseID = differentiator + readableName + UniqueID; + } + + public long Add(long toAdd) + { + tracked += toAdd; + MarkDirty(); + return tracked; + } + + public long Subtract(long toSubtract) + { + tracked -= toSubtract; + MarkDirty(); + return tracked; + } + + public long Get() + { + return tracked; + } + + public long Set(long newValue) + { + tracked = newValue; + MarkDirty(); + return tracked; + } + + @Override + public String Serialize() + { + return "" + tracked; + } + + @Override + public void DeSerialzie(String string) + { + if(string != null) + { + try + { + tracked = Long.parseLong(string); + } + catch(Exception e) + { + tracked = 0; + GlobalLog.Error(LogFilter.Core, "Failed to deserialize long with database ID " + databaseID); + } + } + else + { + tracked = 0; + } + } +} diff --git a/src/dataStructures/KittyGuildRoleList.java b/src/dataStructures/KittyTrackedVector.java similarity index 66% rename from src/dataStructures/KittyGuildRoleList.java rename to src/dataStructures/KittyTrackedVector.java index 68f261a..2689e54 100644 --- a/src/dataStructures/KittyGuildRoleList.java +++ b/src/dataStructures/KittyTrackedVector.java @@ -5,20 +5,24 @@ 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 +@SuppressWarnings("unused") +public class KittyTrackedVector extends DatabaseTrackedObject { // Variables private Vector allowedRole = new Vector(); + private final String databaseID; // in-database ID of this value + private final static String delimiter = "\n"; private final static String split = "\\n"; - private final static String differentiator = "roles"; + private final static String differentiator = "vector-"; - // Constructor - provide it with the guild ID - public KittyGuildRoleList(String identifier) + // Constructor - provide it with a unique ID as the second + public KittyTrackedVector(String readableName, String UniqueID) { - super(identifier + differentiator); + super(differentiator + readableName + UniqueID); + databaseID = differentiator + readableName + UniqueID; } - + // Mirrored behavior public boolean contains(String role) { @@ -73,9 +77,15 @@ public class KittyGuildRoleList extends DatabaseTrackedObject @Override public void DeSerialzie(String string) { - String[] rolesSplit = string.split(split); - - for(int i = 0; i < rolesSplit.length; ++i) - allowedRole.add(rolesSplit[i]); + if(string != null) + { + if(string.length() >= 0) + { + String[] rolesSplit = string.split(split); + + for(int i = 0; i < rolesSplit.length; ++i) + allowedRole.add(rolesSplit[i]); + } + } } } \ No newline at end of file