From 09b1e498e7fbcf3c73e81c47c9a92f1982f95460 Mon Sep 17 00:00:00 2001 From: Matthew Cech Date: Sat, 1 Jun 2019 21:57:34 -0700 Subject: [PATCH] = Updated tracked stuff --- src/core/DatabaseTrackedObject.java | 17 +++++-- src/dataStructures/KittyTrackedString.java | 58 ++++++++++++++++++++++ src/dataStructures/KittyTrackedVector.java | 4 -- 3 files changed, 71 insertions(+), 8 deletions(-) create mode 100644 src/dataStructures/KittyTrackedString.java diff --git a/src/core/DatabaseTrackedObject.java b/src/core/DatabaseTrackedObject.java index c149df5..2edfc91 100644 --- a/src/core/DatabaseTrackedObject.java +++ b/src/core/DatabaseTrackedObject.java @@ -4,7 +4,7 @@ package core; // have their data populated from database entries. public abstract class DatabaseTrackedObject { - private boolean isDirty; + private Boolean isDirty; public final String identifier; public DatabaseTrackedObject(String identifier) @@ -15,17 +15,26 @@ public abstract class DatabaseTrackedObject public final boolean IsDirty() { - return isDirty; + synchronized(isDirty) + { + return isDirty; + } } public final void MarkDirty() { - isDirty = true; + synchronized(isDirty) + { + isDirty = true; + } } public final void Resolve() { - isDirty = false; + synchronized(isDirty) + { + isDirty = false; + } } // Consider an object factory instead of dedicated serialization methods diff --git a/src/dataStructures/KittyTrackedString.java b/src/dataStructures/KittyTrackedString.java new file mode 100644 index 0000000..bba0559 --- /dev/null +++ b/src/dataStructures/KittyTrackedString.java @@ -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(); + } + } + +} diff --git a/src/dataStructures/KittyTrackedVector.java b/src/dataStructures/KittyTrackedVector.java index 1b80c6b..2b12714 100644 --- a/src/dataStructures/KittyTrackedVector.java +++ b/src/dataStructures/KittyTrackedVector.java @@ -5,13 +5,10 @@ import java.util.Vector; 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 { // 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"; @@ -21,7 +18,6 @@ public class KittyTrackedVector extends DatabaseTrackedObject public KittyTrackedVector(String readableName, String UniqueID) { super(differentiator + readableName + UniqueID); - databaseID = differentiator + readableName + UniqueID; }