• 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: David LeBer <email@hidden>
  • Date: Wed, 3 May 2006 17:42:11 -0400

On 3-May-06, at 5:34 PM, WebObjects wrote:

I can't seem to get around java.lang.ClassCastException

I know the EO's are of a known type, and using System.out.println ("Here is entity name: " + myObjectToTest.entityName());

...but when I try to use "myObjectToTest.strLastName()" to access the 'Last name string' (a known method of this entity) it doesn't recognize it at compile time. When I cast the object to the entity type (just for kicks) I get the cast exception.

I'm a little stuck. The code is messy (work in progress syndrome), but I've pasted it below. All help is always appreciated :)

EOEnterpriseObject doesn't have a method strLastName().

Investigate valueForKey instead.

String lastName = (String)donor.valueForKey("strLastName");


-Bill

--- code segment ---

NSArray tester = new NSArray(ec.insertedObjects());

Enumeration enumerator = tester.objectEnumerator();
while (enumerator.hasMoreElements()) {
EOEnterpriseObject donor = (EOEnterpriseObject) enumerator.nextElement();


System.out.println("Here is entity name: " + donor.entityName());
System.out.println("Here is Last Name: " + donor.strLastName());



ec.deleteObject(donor); }




on 5/3/06 14:01, Ken Anderson at email@hidden wrote:

> 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 (Webobjects- email@hidden)
>>>>> Help/Unsubscribe/Update your Subscription:
webobjects%
>>>>> 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:
40codeferous.com


This email sent to email@hidden


--
;david

--
David LeBer
Codeferous Software
'co-defer-ous' adj. producing or containing code
site:   http://www.codeferous.com
blog: http://david.codeferous.com




Attachment: smime.p7s
Description: S/MIME cryptographic signature

 _______________________________________________
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: D'OH ...
  • 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