package com.plexobject.rbac.domain; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import javax.xml.bind.annotation.XmlTransient; import com.sleepycat.persist.model.NotPersistent; import com.sleepycat.persist.model.Persistent; @Persistent public abstract class BaseDomain { @NotPersistent protected final PropertyChangeSupport pcs = new PropertyChangeSupport(this); private boolean dirty; @XmlTransient protected boolean isDirty() { return dirty; } protected void clearDirty() { this.dirty = false; } public void addPropertyChangeListener(PropertyChangeListener pcl) { pcs.addPropertyChangeListener(pcl); } public void removePropertyChangeListener(PropertyChangeListener pcl) { pcs.removePropertyChangeListener(pcl); } public void fireIndexedPropertyChange(String propertyName, int index, boolean oldValue, boolean newValue) { this.dirty = true; pcs.fireIndexedPropertyChange(propertyName, index, oldValue, newValue); } public void fireIndexedPropertyChange(String propertyName, int index, int oldValue, int newValue) { this.dirty = true; pcs.fireIndexedPropertyChange(propertyName, index, oldValue, newValue); } public void fireIndexedPropertyChange(String propertyName, int index, Object oldValue, Object newValue) { this.dirty = true; pcs.fireIndexedPropertyChange(propertyName, index, oldValue, newValue); } public void firePropertyChange(PropertyChangeEvent evt) { this.dirty = true; pcs.firePropertyChange(evt); } public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) { this.dirty = true; pcs.firePropertyChange(propertyName, oldValue, newValue); } public void firePropertyChange(String propertyName, int oldValue, int newValue) { this.dirty = true; pcs.firePropertyChange(propertyName, oldValue, newValue); } public void firePropertyChange(String propertyName, Object oldValue, Object newValue) { this.dirty = true; pcs.firePropertyChange(propertyName, oldValue, newValue); } }