package com.jobmineplus.mobile.widgets; /** * Property class holds data of current and old data * This is mainly for seeing if properties change and users * should mark accept or reject changes when new data is set * @author Matthew * * @param <T> data type */ public class Property<T> { private boolean hasChanged = false; private T data; private T oldData; public Property() { } public Property(T value) { set(value); acceptChange(); } /** * When new data is set, data has changed * @return */ public boolean hasChanged() { return hasChanged; } /** * Accepting the change gets rid of the old data * and change flag is gone */ public void acceptChange() { if (hasChanged()) { hasChanged = false; oldData = null; } } /** * Say that we have accepted the new data * but want the status to have changed */ public void updateChange() { if (hasChanged()) { oldData = data; } } /** * Rejecting the change will revert back to the * old data */ public void rejectChange() { if (hasChanged()) { hasChanged = false; data = oldData; oldData = null; } } /** * Setting new data * If the data is the same, change flag does not run * @param value */ public void set(T value) { if (value != data && !value.equals(data)) { oldData = data; data = value; hasChanged = true; } } public T get() { return data; } public T getOldData() { return oldData; } }