Re: Want to iterate over items in EditingContext for validation before save
Re: Want to iterate over items in EditingContext for validation before save
- Subject: Re: Want to iterate over items in EditingContext for validation before save
- From: Ken Anderson <email@hidden>
- Date: Wed, 03 May 2006 17:01:07 -0400
Bill,
Are you only interested in one kind of EO to possibly delete? Why
not check the eo's entityName(), and if it's the one you want, cast
it to the right type and just send the correct methods? IE:
if (myObjectToTest.entityName().equals("Item")) {
Item item = (Item) myObjectToTest;
if (item.methodIWantTocheck() == null)
ec.deleteObject(item);
}
Ken
On May 3, 2006, at 4:55 PM, WebObjects wrote:
I'm taking a poke at using "ec.insertedObjects()" to evaluate each
object
prior to saving. So far I can grab an array of the objects,
although I had
to cast them into EO's and not simply their entity type (code
immediately
following):
NSArray tester = new NSArray(ec.insertedObjects());
Enumeration enumerator = tester.objectEnumerator();
while (enumerator.hasMoreElements()) {
EOEnterpriseObject myObjectToTest =
(EOEnterpriseObject)enumerator.nextElement();
...}
...I'm pretty close, the next thing I'm doing is trying to gain
access to
the KeyValues within the EOEnterpriseObject, which I'm trying to
use the
following to get at this...
NSArray allPropertyKeys()
Returns all of the receiver's property keys.
NSArray attributeKeys()
Returns the names of the receiver's attributes (not
relationship
properties).
...however, these only seem to return the Property keys and not the
properties/values. The API isn't the easiest to read. My goal is
to get at
the values and then to use ec.deleteObject( myObjectToTest ) when
needed.
What is the right method to access the Keyvalues-properties?
Thanks!
-Bill
on 5/2/06 19:07, Ken Anderson at email@hidden wrote:
No, but doing ec.deleteObject(obj) will. If the object is new and
has never been saved, it will effectively be nullified.
On May 2, 2006, at 10:01 PM, WebObjects wrote:
Art,
I'm thinking of EOEditingContext.insertedObjects() as the choice in
this
case. I actually thought that may be the answer here (thanks for
your time
on this).
If I were to remove an element of the NSArray returned by this
method, would
then calling .saveChanges() on the ec now exclude objects removed
from the
array? If so is this because of the magic of WO keeping track of
things?
(it seems to easy, like I'm missing something)
Thanks for your wisdom,
-Bill
on 5/2/06 18:53, Art Isbell at email@hidden wrote:
On May 2, 2006, at 2:48 PM, WebObjects wrote:
I've found an error in my coding style - too late in this project
though. I
use EOUtilities.createAndInsertInstance in a constructor for a
page, and as
a result 'refresh' and 'back' have become my enemies.
How can I iterated over the unsaved objects in an EditingContext
(ec), test
their validity (ie. if ItemAt(0).getSomeValue() == null, etc) and
delete
them from the ec prior to .saveChanges() ?
It would seem that if you can modify your code to iterate over
unsaved objects, that you could also modify your constructor to fix
this problem. But maybe not...
EOEditingContext.insertedObjects() returns an array of inserted
objects.
Or probably better, assuming that you can modify your constructor,
would be to create a new editing context assigned to an instance
variable of this component, lock it, and insert your new objects
into
this new editing context. Then if the user backtracks or
refreshes,
only objects inserted into the editing context of the current
instance of this component would be saved. Objects inserted into
other instances of the same component would be freed when the
component drops out of the page cache without being saved to the
DB.
Aloha,
Art
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
40concyse.com
This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
40anderhome.com
This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
40anderhome.com
This email sent to email@hidden
_______________________________________________
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