• 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: Want to iterate over items in EditingContext for validation before save
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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
  • Follow-Ups:
    • Re: Want to iterate over items in EditingContext for validation before save
      • From: WebObjects <email@hidden>
References: 
 >Re: Want to iterate over items in EditingContext for validation before save (From: WebObjects <email@hidden>)

  • Prev by Date: Re: Want to iterate over items in EditingContext for validation before save
  • Next by Date: RE: Want to iterate over items in EditingContext for validation before save
  • Previous by thread: Re: Want to iterate over items in EditingContext for validation before save
  • Next by thread: Re: Want to iterate over items in EditingContext for validation before save
  • Index(es):
    • Date
    • Thread