You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cayenne.apache.org by Mike Kienenberger <mk...@gmail.com> on 2008/05/19 16:59:56 UTC

Custom Ordering [Was: Questions about Ordering, Optimistic Locking and QueryTable]

I've added a virtual field before, so that can work for off-line ordering.

There's probably other ways to handle it as well:

    public static void orderList(List objects, List orderings) {
        Collections.sort(objects, ComparatorUtils.chainedComparator(orderings));
    }

Note that this is all standard non-Cayenne java.  The orderings are
simply objects that implement Comparator.   You can either pass a
non-Ordering Comparator, or you can subclass Ordering and implement
your own compareTo().

(It looks like for 3.0, Ordering subclasses are required:

    public static void orderList(List<?> objects, List<Ordering> orderings) {
        Collections.sort(objects, ComparatorUtils.chainedComparator(orderings));
    }
)

If I were redoing it today, I'd probably consider a subclass of Ordering.

On 5/18/08, Adrian Wiesmann <aw...@somap.org> wrote:
> Hello list
>
>  Instead of writing three separate mails I thought it would make sense to
>  pack these three questions together:
>
>  Ordering
>  --------
>  I am having a list of DataObjects where one field represents a human
>  readable Id. Something like this:
>
>  "1.1.1" (as example)
>
>  When using the (offline) ordering mechanism of Cayenne to order a list of
>  DataObjects, things get ugly when I am introducing numbers above 10. Like
>  the following example:
>
>  1.1.1
>  1.1.2
>  1.10.1
>  1.10.2
>  1.2.1
>  1.2.2
>
>  I would like to have the 1.10.x numbers below the 1.2.x numbers. Which
>  means I would like to sort mathematically and not alphabetically.
>
>  Is there any possibility to tell Cayenne to sort differently? Or would I
>  need to add a new (virtual) field to the DataObject with a clean sort
>  number and have Cayenne sort that field instead?
>
>
>  Optimistic Locking
>  ------------------
>  My DataObjects contain a datetime field and a string field which both are
>  used for optimistic locking. Basically the fields contain the datetime of
>  the last change plus the user Id of the user persisting the change.
>
>  When using optimistic locking with Derby everything works as expected.
>  When using the same code and configuration with PostgreSQL (7 and 8) I
>  receive an optimistic locking failure although nothing has changed on the
>  database in the meantime.
>
>  When I then remove the datetime field only from the optimistic locking
>  check things work as expected.
>
>  Has anybody experienced the same? Is this a known problem or am I missing
>  something?
>
>
>  QueryTable
>  ----------
>  We were discussing that on this list before. I am looking for a way to
>  generate DataObjects without a reference to a table in the database.
>  Something like a virtual DataObject.
>
>  My usage scenario is it to have a DataObject which can be bound to the UI
>  but which is only used to prepare data for a query and never should be
>  persisted to the database.
>
>  I remember some discussion about introducing some kind of inheritance to
>  Cayenne which would support my usage scenario. I just wanted to check back
>  with you if something already happened there?
>
>  Thanks for your help.
>
>  Cheers,
>  Adrian
>
>  P.S: Andrus: I remember you talking about being interested in learning
>  about experiences with Apache Wicket? The Wicket Framework is great and
>  using it with Cayenne works like a charm. Wicket is really a webframework
>  done right!
>

Re: Custom Ordering [Was: Questions about Ordering, Optimistic Locking and QueryTable]

Posted by Adrian Wiesmann <aw...@somap.org>.
On Mon, 19 May 2008 10:59:56 -0400
"Mike Kienenberger" <mk...@gmail.com> wrote:

> If I were redoing it today, I'd probably consider a subclass of
> Ordering.

I think I will go that way as well... That is probably the easiest
solution and I am very sure that there will somewhen appear the next field
which needs some special sorting treatment. Murphy and stuff :)

Thanks for your help.

Cheers,
Adrian