• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: WOToOneRelationship and "dirty" editing context
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: WOToOneRelationship and "dirty" editing context


  • Subject: Re: WOToOneRelationship and "dirty" editing context
  • From: Chuck Hill <email@hidden>
  • Date: Thu, 5 Jan 2006 14:30:24 -0800

Hi Kevin,

On Jan 5, 2006, at 1:00 PM, email@hidden wrote:
On 05 Jan, 2006, at 02:12 PM, Lachlan Deck wrote:
On 06/01/2006, at 4:16 AM, email@hidden wrote:

My problem is that when I merely display the validatedUser and do not make any changes, I am still seeing the object as being updated by logging the updatedObjects() of the editing context. If I remove the WOToOneRelationship from the page, and replace with a simple WOTextField, I do not see the object as being updated , when I do not perform any changes to the user. This is the behavior I would like to see, and would expect, when using WOToOneRelationship.

Try updating your User like...

public void setDepartment( Department aDepartment ) {
	Department currentDepartment;

	currentDepartment = department();
	if ( currentDepartment != aDepartment ) {
		...
	}
}

That way your entity will not "update" itself when you're simply giving it the same value.

While this may work to avoid updating the entity itself, it will

1) break our existing auditing scheme that relies on monitoring the editing context's updatedObjects NSArray.

Allow me to strongly caution you away from relying on the contents of the updatedObjects array for an audit trail. It is not what you think it is, you are heading for problems. An object appearing in that array only means that willChange() has been called on that object. It does not mean that it has actually changed. A better name for that list might be possiblyUpdatedObjects() or objectToCheckForChangesWhenSaving().


Code like this:
client.setName(client().name())
will also result in the object being added to the updated list.

The definitive way is to filter the objects in that array with the condition:

object.changesFromSnapshot(object.editingContext ().committedSnapshotForObject(object)).count() > 0

Or you can use a boolean method on your EOs to check this:

public boolean hasBeenUpdated() {
return editingContext().updatedObjects().containsObject(this) &&
(changesFromSnapshot(editingContext().committedSnapshotForObject (this)).count() > 0);
}



2) require us to manually update nearly all of our entities in our application (well over 200 that will have to one relationships) with customized code.

If you are using EOGenerator (and with too entities you ought to be!), then this update is trivial.


Chuck


This seems like a lot of work in order to use an interface component (WOToOneRelationship). I guess I am curious why any object gets tagged as "updated" in the editing context before user manipulation when using this component? Is it an EOF issue or they way the WOToOneRelationship works? I have tried the ERXToOneRelationship and it too has the same effect of tagging my object as modified upon initial display.

In the old post I referenced (http://www.wodeveloper.com/omniLists/ webobjects-dev/2000/November/msg00119.html), the author mentioned that WOToOneRelationship uses the takeValueForKey instead of the validateTakeValueForKey, and somehow this registers a change in the editing context even values are unchanged. I could not find either of these in the source for WOToOneRelationship, so I am not sure if this was fixed in later versions of WO.

I am still very new to WO, so sorry if this is so basic.


--
Coming in 2006 - an introduction to web applications using WebObjects and Xcode http://www.global-village.net/wointro


Practical WebObjects - for developers who want to increase their overall knowledge of WebObjects or who are trying to solve specific problems. http://www.global-village.net/products/practical_webobjects




_______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (email@hidden) Help/Unsubscribe/Update your Subscription: This email sent to email@hidden
References: 
 >WOToOneRelationship and "dirty" editing context (From: email@hidden)
 >Re: WOToOneRelationship and "dirty" editing context (From: Lachlan Deck <email@hidden>)
 >Re: WOToOneRelationship and "dirty" editing context (From: email@hidden)

  • Prev by Date: Re: Frameworks and versioning
  • Next by Date: Re: WOToOneRelationship and "dirty" editing context
  • Previous by thread: Re: WOToOneRelationship and "dirty" editing context
  • Next by thread: Re: WOToOneRelationship and "dirty" editing context
  • Index(es):
    • Date
    • Thread