+ Added tracked values

This commit is contained in:
Matthew Cech
2019-05-06 23:18:30 -07:00
parent 5eddc4645e
commit 8409c77151
3 changed files with 113 additions and 13 deletions
+10 -3
View File
@@ -19,7 +19,12 @@ public class KittyGuild extends DatabaseTrackedObject
public AdminControl control; public AdminControl control;
// Database synced info // 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; private String commandIndicator;
// Default content for a guild // Default content for a guild
@@ -27,7 +32,8 @@ public class KittyGuild extends DatabaseTrackedObject
{ {
super(uniqueID); super(uniqueID);
this.uniqueID = uniqueID; this.uniqueID = uniqueID;
roleList = new KittyGuildRoleList(uniqueID); roleList = new KittyTrackedVector(roleListName, uniqueID);
beans = new KittyTrackedLong(beansName, uniqueID);
control = adminControl; control = adminControl;
this.contentRating = KittyRating.Safe; this.contentRating = KittyRating.Safe;
@@ -41,7 +47,8 @@ public class KittyGuild extends DatabaseTrackedObject
{ {
super(uniqueID); super(uniqueID);
this.uniqueID = uniqueID; this.uniqueID = uniqueID;
roleList = new KittyGuildRoleList(uniqueID); roleList = new KittyTrackedVector(roleListName, uniqueID);
beans = new KittyTrackedLong(beansName, uniqueID);
SetCommandIndicator(commandIndicator); SetCommandIndicator(commandIndicator);
this.contentRating = contentRating; this.contentRating = contentRating;
+83
View File
@@ -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;
}
}
}
@@ -5,20 +5,24 @@ import java.util.Vector;
import core.DatabaseTrackedObject; import core.DatabaseTrackedObject;
// Acts as a proxy of sorts for the allowedRole arraylist, keeping it tracked for a specific guild. // 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 // Variables
private Vector<String> allowedRole = new Vector<String>(); private Vector<String> allowedRole = new Vector<String>();
private final String databaseID; // in-database ID of this value
private final static String delimiter = "\n"; private final static String delimiter = "\n";
private final static String split = "\\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 // Constructor - provide it with a unique ID as the second
public KittyGuildRoleList(String identifier) public KittyTrackedVector(String readableName, String UniqueID)
{ {
super(identifier + differentiator); super(differentiator + readableName + UniqueID);
databaseID = differentiator + readableName + UniqueID;
} }
// Mirrored behavior // Mirrored behavior
public boolean contains(String role) public boolean contains(String role)
{ {
@@ -73,9 +77,15 @@ public class KittyGuildRoleList extends DatabaseTrackedObject
@Override @Override
public void DeSerialzie(String string) public void DeSerialzie(String string)
{ {
String[] rolesSplit = string.split(split); if(string != null)
{
for(int i = 0; i < rolesSplit.length; ++i) if(string.length() >= 0)
allowedRole.add(rolesSplit[i]); {
String[] rolesSplit = string.split(split);
for(int i = 0; i < rolesSplit.length; ++i)
allowedRole.add(rolesSplit[i]);
}
}
} }
} }