Re: Comparing attributes in related objects

From: Chuck Hill (chil..lobal-village.net)
Date: Wed Aug 29 2007 - 16:31:07 EDT

  • Next message: Lachlan Scott: "Re: Comparing attributes in related objects"

    Replying to the correct list. CCing WOLips (where originally
    posted), but please do not reply there.

    Other options:

    - there is no problem adding a lastUsedCreditCard() relationship that
    has one of the creditCards() objects in it. Just make sure to update
    this if you delete the lastUsedCreditCard(). Having this
    relationship allows you to construct fetchspecs on this criteria.

    - Pierre Bernard's BestRelationshipMatchesQualifier might also work
    for this:
    > Qualifier to find objects where a related object with a given
    > attribute as close as possible to a specified value
    > * matches a provided qualifier.

    I have not used it though. Find it at http://www.bernard-web.com/
    pierre/webobjects/code.html under Qualifier Additions. Lots of other
    very useful qualifiers there too.

    Chuck

    On Aug 29, 2007, at 1:15 PM, Ken Anderson wrote:

    > In this type of situation, I would just sort the array on lastUsed
    > date, and take the last object from the array:
    >
    > In your customer class:
    >
    > public NSArray lastUsedCreditCard() {
    > EOSortOrdering ordering = EOSortOrdering.sortOrderingwithKey
    > (CreditCard.LastUsedDate, EOSortOrdering.CompareAscending);
    > return EOSortOrdering.sortedArrayUsingKeyOrderArray
    > (this.creditCards(), new NSArray(ordering));
    > }
    >
    > In code that wants the last credit card from a customer:
    >
    > CreditCard lastUsedCard = customer.lastUsedCreditCard().lastObject();
    >
    >
    > Ken
    >
    > On Aug 29, 2007, at 4:05 PM, Lachlan Scott wrote:
    >
    >> To meet a client requirement, we want to traverse the object graph
    >> and compare attributes of related entities.
    >>
    >> Specifically, we want to select a user's last-used credit card.
    >> User has to-many relationship CreditCards to CreditCard.
    >> CreditCard has a timestamp recording its last use. We wish to
    >> compare the timestamps and select the last-used CreditCard.
    >>
    >> So the credit cards are available through the relationship, and we
    >> could fix this by spooging stuff into standard Java, or even
    >> adding flags into the model; but these don't feel right, and we
    >> imagine it is the sort of thing WO would provide a mechanism for.
    >>
    >> Does anyone have any suggestions about which classes we might be
    >> able to use, here?
    >>
    >>
    >>
    >> Many thanks
    >>
    >>
    >> Lachlan
    >>
    >> --
    >> Lachlan Scott
    >> Senior Bloke
    >> Run The Red (http://www.runthered.com)
    >> Wellington, New Zealand
    >> Wk: +64 (0)4 384 6880
    >> Mb: +64 (0)21 824 244
    >
    >

    -- 
    

    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



    This archive was generated by hypermail 2.0.0 : Wed Aug 29 2007 - 16:32:40 EDT