/** The properties. */
private final Map<String, String> properties = new HashMap<String, String>();
+ /** The “dirty” flag. */
+ private boolean dirty = false;
+
//
// ACCESSORS
//
* @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;
}
* @return These properties
*/
public Properties remove(String property) {
+ if (properties.containsKey(property)) {
+ dirty = true;
+ }
properties.remove(property);
return this;
}
* @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
//