= Updated tracked stuff

This commit is contained in:
Matthew Cech
2019-06-01 21:57:34 -07:00
parent 3b8e8c7f01
commit 09b1e498e7
3 changed files with 71 additions and 8 deletions
+10 -1
View File
@@ -4,7 +4,7 @@ package core;
// have their data populated from database entries. // have their data populated from database entries.
public abstract class DatabaseTrackedObject public abstract class DatabaseTrackedObject
{ {
private boolean isDirty; private Boolean isDirty;
public final String identifier; public final String identifier;
public DatabaseTrackedObject(String identifier) public DatabaseTrackedObject(String identifier)
@@ -14,19 +14,28 @@ public abstract class DatabaseTrackedObject
} }
public final boolean IsDirty() public final boolean IsDirty()
{
synchronized(isDirty)
{ {
return isDirty; return isDirty;
} }
}
public final void MarkDirty() public final void MarkDirty()
{
synchronized(isDirty)
{ {
isDirty = true; isDirty = true;
} }
}
public final void Resolve() public final void Resolve()
{
synchronized(isDirty)
{ {
isDirty = false; isDirty = false;
} }
}
// Consider an object factory instead of dedicated serialization methods // Consider an object factory instead of dedicated serialization methods
// if this starts to become impractical. For now, it works. // if this starts to become impractical. For now, it works.
@@ -0,0 +1,58 @@
package dataStructures;
import core.DatabaseTrackedObject;
import utils.GlobalLog;
import utils.LogFilter;
public class KittyTrackedString extends DatabaseTrackedObject
{
private String trackedString; // Tracked value
private final static String differentiator = "string-";
// Constructor with unique id and readable name
public KittyTrackedString(String readableName, String UniqueID)
{
super(differentiator + readableName + UniqueID);
}
// Sets the value of the string and marks it as dirty
public void set(String newValue)
{
synchronized(trackedString)
{
trackedString = newValue;
MarkDirty();
}
}
// Returns string. The string is copied because it is immutable.
public String get()
{
synchronized(trackedString)
{
return trackedString;
}
}
@Override
public String Serialize()
{
return trackedString;
}
@Override
public void DeSerialzie(String string)
{
if(string != null && !string.isEmpty())
{
trackedString = string;
}
else
{
GlobalLog.Log(LogFilter.Database, "String had null or empty value with identifier: " + identifier);
string = "";
MarkDirty();
}
}
}
@@ -5,13 +5,10 @@ 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.
@SuppressWarnings("unused")
public class KittyTrackedVector extends DatabaseTrackedObject 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";
@@ -21,7 +18,6 @@ public class KittyTrackedVector extends DatabaseTrackedObject
public KittyTrackedVector(String readableName, String UniqueID) public KittyTrackedVector(String readableName, String UniqueID)
{ {
super(differentiator + readableName + UniqueID); super(differentiator + readableName + UniqueID);
databaseID = differentiator + readableName + UniqueID;
} }