From f18bc73cc517d841045c0a133a491c6020602cd9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Thu, 26 Jul 2012 13:44:14 +0200 Subject: [PATCH] =?utf8?q?Add=20=E2=80=9Cdirty=E2=80=9D=20flag=20to=20prop?= =?utf8?q?erties.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../demoscenemusic/data/Properties.java | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/main/java/net/pterodactylus/demoscenemusic/data/Properties.java b/src/main/java/net/pterodactylus/demoscenemusic/data/Properties.java index dfdb836..3b72223 100644 --- a/src/main/java/net/pterodactylus/demoscenemusic/data/Properties.java +++ b/src/main/java/net/pterodactylus/demoscenemusic/data/Properties.java @@ -33,6 +33,9 @@ public class Properties implements Iterable> { /** The properties. */ private final Map properties = new HashMap(); + /** The “dirty” flag. */ + private boolean dirty = false; + // // ACCESSORS // @@ -59,6 +62,9 @@ public class Properties implements Iterable> { * @return These properties */ public Properties set(String property, String value) { + if (!properties.containsKey(property) || (((value != null) && (!value.equals(properties.get(property))) || ((value == null) && (properties.get(property) != null))))) { + dirty = true; + } properties.put(property, value); return this; } @@ -71,6 +77,9 @@ public class Properties implements Iterable> { * @return These properties */ public Properties remove(String property) { + if (properties.containsKey(property)) { + dirty = true; + } properties.remove(property); return this; } @@ -81,10 +90,34 @@ public class Properties implements Iterable> { * @return These properties */ public Properties removeAll() { + if (!properties.isEmpty()) { + dirty = true; + } properties.clear(); return this; } + /** + * Returns whether these properties have been modified. + * + * @return {@code true} if the properties have been modified since they were + * created or the last time {@link #resetDirty()} was called, + * {@code false} if they have not been modified + */ + public boolean isDirty() { + return dirty; + } + + /** + * Resets the dirty flag. + * + * @return These properties + */ + public Properties resetDirty() { + dirty = false; + return this; + } + // // ITERABLE METHODS // -- 2.7.4