package er.directtoweb.components.misc;
import java.util.Enumeration;
import com.webobjects.appserver.WOContext;
import com.webobjects.eocontrol.EOEditingContext;
import com.webobjects.eocontrol.EOEnterpriseObject;
import er.directtoweb.components.ERDCustomEditComponent;
public class ERDHasChangesMarker extends ERDCustomEditComponent {
/**
* Do I need to update serialVersionUID?
* See section 5.6 <cite>Type Changes Affecting Serialization</cite> on page 51 of the
* <a href="http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf">Java Object Serialization Spec</a>
*/
private static final long serialVersionUID = 1L;
public ERDHasChangesMarker(WOContext context) {
super(context);
}
@Override
public boolean isStateless() {
return true;
}
@Override
public boolean synchronizesVariablesWithBindings() {
return false;
}
public boolean hasChanges() {
EOEnterpriseObject object = object();
EOEditingContext ec = object.editingContext();
boolean result = ec != null && ec.hasChanges();
if(result) {
if(object.changesFromSnapshot(ec.committedSnapshotForObject(object)).count() == 0) {
for (Enumeration e = ec.registeredObjects().objectEnumerator(); e.hasMoreElements();) {
EOEnterpriseObject eo = (EOEnterpriseObject) e.nextElement();
if(eo.changesFromSnapshot(ec.committedSnapshotForObject(eo)).count() != 0) {
return true;
}
}
result = false;
}
}
return result;
}
}