You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@isis.apache.org by Erik de Hair <e....@pocos.nl> on 2016/09/20 13:30:39 UTC

Sorting tables on columns with null values

Hi,

This might be a bit off topic but I hope Martin could answer this 
question...

When sorting a table on a column containing (joda LocalDate) null 
values, using the Wicket viewer by clicking the header of the column, it 
always keeps the items with null on top even after reversing the sort 
order. Is there any way to change this behavior?

Thanks,
Erik

Re: Sorting tables on columns with null values

Posted by Dan Haywood <da...@haywood-associates.co.uk>.
Thanks for this... have applied to 1.13.1 maintenance release

On 21 September 2016 at 13:29, Martin Grigorov <mg...@apache.org> wrote:

> Thank you, Erik!
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Wed, Sep 21, 2016 at 2:20 PM, Erik de Hair <e....@pocos.nl> wrote:
>
> > raised an issue [1] and created a pull request
> >
> > [1] https://issues.apache.org/jira/browse/ISIS-1493
> >
> >
> >
> > On 09/21/2016 11:58 AM, Martin Grigorov wrote:
> >
> >> Good catch!
> >>
> >> Please create a Pull Request!
> >>
> >> Martin Grigorov
> >> Wicket Training and Consulting
> >> https://twitter.com/mtgrigorov
> >>
> >> On Wed, Sep 21, 2016 at 11:52 AM, Erik de Hair <e....@pocos.nl>
> wrote:
> >>
> >> Hi Martin,
> >>>
> >>> It looks like the code on [1] is messing things up.
> >>>
> >>> If you replace the method with something like below, it works:
> >>>
> >>>      private static Ordering<ObjectAdapter> orderingBy(final
> >>> ObjectAssociation sortProperty, final boolean ascending) {
> >>>          final Ordering<ObjectAdapter> ordering = new
> >>> Ordering<ObjectAdapter>(){
> >>>
> >>>              @Override
> >>>              public int compare(final ObjectAdapter p, final
> >>> ObjectAdapter
> >>> q) {
> >>>                  final ObjectAdapter pSort = sortProperty.get(p,
> >>> InteractionInitiatedBy.FRAMEWORK);
> >>>                  final ObjectAdapter qSort = sortProperty.get(q,
> >>> InteractionInitiatedBy.FRAMEWORK);
> >>>                  Ordering<ObjectAdapter> naturalOrdering;
> >>>                  if(ascending){
> >>>                      naturalOrdering = ORDERING_BY_NATURAL.
> nullsFirst();
> >>>                  } else {
> >>>                      naturalOrdering = ORDERING_BY_NATURAL.reverse().
> >>> nullsLast();
> >>> // this is the important part to sort the null values correctly
> >>>                  }
> >>>                  return naturalOrdering.compare(pSort, qSort);
> >>>              }
> >>>          };
> >>>          return ordering;
> >>>      }
> >>>
> >>> Erik
> >>>
> >>> [1] https://github.com/apache/isis/blob/3dffc2d96e240982d16131d5
> >>> 7d34fc8f54d1292c/core/viewer-wicket-ui/src/main/java/org/
> >>> apache/isis/viewer/wicket/ui/components/collectioncontents/a
> >>> jaxtable/CollectionContentsSortableDataProvider.java#L170
> >>>
> >>>
> >>> On 09/20/2016 03:43 PM, Martin Grigorov wrote:
> >>>
> >>> Hi Erik,
> >>>>
> >>>> This should be handled by
> >>>> https://github.com/apache/isis/blob/3dffc2d96e240982d16131d5
> >>>> 7d34fc8f54d1292c/core/viewer-wicket-ui/src/main/java/org/
> >>>> apache/isis/viewer/wicket/ui/components/collectioncontents/a
> >>>> jaxtable/CollectionContentsSortableDataProvider.java#L163-L167
> >>>> It looks correct to me.
> >>>> Put a breakpoint and see what happens.
> >>>>
> >>>> Martin Grigorov
> >>>> Wicket Training and Consulting
> >>>> https://twitter.com/mtgrigorov
> >>>>
> >>>> On Tue, Sep 20, 2016 at 3:30 PM, Erik de Hair <e....@pocos.nl>
> >>>> wrote:
> >>>>
> >>>> Hi,
> >>>>
> >>>>> This might be a bit off topic but I hope Martin could answer this
> >>>>> question...
> >>>>>
> >>>>> When sorting a table on a column containing (joda LocalDate) null
> >>>>> values,
> >>>>> using the Wicket viewer by clicking the header of the column, it
> always
> >>>>> keeps the items with null on top even after reversing the sort order.
> >>>>> Is
> >>>>> there any way to change this behavior?
> >>>>>
> >>>>> Thanks,
> >>>>> Erik
> >>>>>
> >>>>>
> >>>>>
> >
>

Re: Sorting tables on columns with null values

Posted by Martin Grigorov <mg...@apache.org>.
Thank you, Erik!

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Wed, Sep 21, 2016 at 2:20 PM, Erik de Hair <e....@pocos.nl> wrote:

> raised an issue [1] and created a pull request
>
> [1] https://issues.apache.org/jira/browse/ISIS-1493
>
>
>
> On 09/21/2016 11:58 AM, Martin Grigorov wrote:
>
>> Good catch!
>>
>> Please create a Pull Request!
>>
>> Martin Grigorov
>> Wicket Training and Consulting
>> https://twitter.com/mtgrigorov
>>
>> On Wed, Sep 21, 2016 at 11:52 AM, Erik de Hair <e....@pocos.nl> wrote:
>>
>> Hi Martin,
>>>
>>> It looks like the code on [1] is messing things up.
>>>
>>> If you replace the method with something like below, it works:
>>>
>>>      private static Ordering<ObjectAdapter> orderingBy(final
>>> ObjectAssociation sortProperty, final boolean ascending) {
>>>          final Ordering<ObjectAdapter> ordering = new
>>> Ordering<ObjectAdapter>(){
>>>
>>>              @Override
>>>              public int compare(final ObjectAdapter p, final
>>> ObjectAdapter
>>> q) {
>>>                  final ObjectAdapter pSort = sortProperty.get(p,
>>> InteractionInitiatedBy.FRAMEWORK);
>>>                  final ObjectAdapter qSort = sortProperty.get(q,
>>> InteractionInitiatedBy.FRAMEWORK);
>>>                  Ordering<ObjectAdapter> naturalOrdering;
>>>                  if(ascending){
>>>                      naturalOrdering = ORDERING_BY_NATURAL.nullsFirst();
>>>                  } else {
>>>                      naturalOrdering = ORDERING_BY_NATURAL.reverse().
>>> nullsLast();
>>> // this is the important part to sort the null values correctly
>>>                  }
>>>                  return naturalOrdering.compare(pSort, qSort);
>>>              }
>>>          };
>>>          return ordering;
>>>      }
>>>
>>> Erik
>>>
>>> [1] https://github.com/apache/isis/blob/3dffc2d96e240982d16131d5
>>> 7d34fc8f54d1292c/core/viewer-wicket-ui/src/main/java/org/
>>> apache/isis/viewer/wicket/ui/components/collectioncontents/a
>>> jaxtable/CollectionContentsSortableDataProvider.java#L170
>>>
>>>
>>> On 09/20/2016 03:43 PM, Martin Grigorov wrote:
>>>
>>> Hi Erik,
>>>>
>>>> This should be handled by
>>>> https://github.com/apache/isis/blob/3dffc2d96e240982d16131d5
>>>> 7d34fc8f54d1292c/core/viewer-wicket-ui/src/main/java/org/
>>>> apache/isis/viewer/wicket/ui/components/collectioncontents/a
>>>> jaxtable/CollectionContentsSortableDataProvider.java#L163-L167
>>>> It looks correct to me.
>>>> Put a breakpoint and see what happens.
>>>>
>>>> Martin Grigorov
>>>> Wicket Training and Consulting
>>>> https://twitter.com/mtgrigorov
>>>>
>>>> On Tue, Sep 20, 2016 at 3:30 PM, Erik de Hair <e....@pocos.nl>
>>>> wrote:
>>>>
>>>> Hi,
>>>>
>>>>> This might be a bit off topic but I hope Martin could answer this
>>>>> question...
>>>>>
>>>>> When sorting a table on a column containing (joda LocalDate) null
>>>>> values,
>>>>> using the Wicket viewer by clicking the header of the column, it always
>>>>> keeps the items with null on top even after reversing the sort order.
>>>>> Is
>>>>> there any way to change this behavior?
>>>>>
>>>>> Thanks,
>>>>> Erik
>>>>>
>>>>>
>>>>>
>

Re: Sorting tables on columns with null values

Posted by Erik de Hair <e....@pocos.nl>.
raised an issue [1] and created a pull request

[1] https://issues.apache.org/jira/browse/ISIS-1493


On 09/21/2016 11:58 AM, Martin Grigorov wrote:
> Good catch!
>
> Please create a Pull Request!
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Wed, Sep 21, 2016 at 11:52 AM, Erik de Hair <e....@pocos.nl> wrote:
>
>> Hi Martin,
>>
>> It looks like the code on [1] is messing things up.
>>
>> If you replace the method with something like below, it works:
>>
>>      private static Ordering<ObjectAdapter> orderingBy(final
>> ObjectAssociation sortProperty, final boolean ascending) {
>>          final Ordering<ObjectAdapter> ordering = new
>> Ordering<ObjectAdapter>(){
>>
>>              @Override
>>              public int compare(final ObjectAdapter p, final ObjectAdapter
>> q) {
>>                  final ObjectAdapter pSort = sortProperty.get(p,
>> InteractionInitiatedBy.FRAMEWORK);
>>                  final ObjectAdapter qSort = sortProperty.get(q,
>> InteractionInitiatedBy.FRAMEWORK);
>>                  Ordering<ObjectAdapter> naturalOrdering;
>>                  if(ascending){
>>                      naturalOrdering = ORDERING_BY_NATURAL.nullsFirst();
>>                  } else {
>>                      naturalOrdering = ORDERING_BY_NATURAL.reverse().nullsLast();
>> // this is the important part to sort the null values correctly
>>                  }
>>                  return naturalOrdering.compare(pSort, qSort);
>>              }
>>          };
>>          return ordering;
>>      }
>>
>> Erik
>>
>> [1] https://github.com/apache/isis/blob/3dffc2d96e240982d16131d5
>> 7d34fc8f54d1292c/core/viewer-wicket-ui/src/main/java/org/
>> apache/isis/viewer/wicket/ui/components/collectioncontents/a
>> jaxtable/CollectionContentsSortableDataProvider.java#L170
>>
>>
>> On 09/20/2016 03:43 PM, Martin Grigorov wrote:
>>
>>> Hi Erik,
>>>
>>> This should be handled by
>>> https://github.com/apache/isis/blob/3dffc2d96e240982d16131d5
>>> 7d34fc8f54d1292c/core/viewer-wicket-ui/src/main/java/org/
>>> apache/isis/viewer/wicket/ui/components/collectioncontents/a
>>> jaxtable/CollectionContentsSortableDataProvider.java#L163-L167
>>> It looks correct to me.
>>> Put a breakpoint and see what happens.
>>>
>>> Martin Grigorov
>>> Wicket Training and Consulting
>>> https://twitter.com/mtgrigorov
>>>
>>> On Tue, Sep 20, 2016 at 3:30 PM, Erik de Hair <e....@pocos.nl> wrote:
>>>
>>> Hi,
>>>> This might be a bit off topic but I hope Martin could answer this
>>>> question...
>>>>
>>>> When sorting a table on a column containing (joda LocalDate) null values,
>>>> using the Wicket viewer by clicking the header of the column, it always
>>>> keeps the items with null on top even after reversing the sort order. Is
>>>> there any way to change this behavior?
>>>>
>>>> Thanks,
>>>> Erik
>>>>
>>>>


Re: Sorting tables on columns with null values

Posted by Martin Grigorov <mg...@apache.org>.
Good catch!

Please create a Pull Request!

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Wed, Sep 21, 2016 at 11:52 AM, Erik de Hair <e....@pocos.nl> wrote:

> Hi Martin,
>
> It looks like the code on [1] is messing things up.
>
> If you replace the method with something like below, it works:
>
>     private static Ordering<ObjectAdapter> orderingBy(final
> ObjectAssociation sortProperty, final boolean ascending) {
>         final Ordering<ObjectAdapter> ordering = new
> Ordering<ObjectAdapter>(){
>
>             @Override
>             public int compare(final ObjectAdapter p, final ObjectAdapter
> q) {
>                 final ObjectAdapter pSort = sortProperty.get(p,
> InteractionInitiatedBy.FRAMEWORK);
>                 final ObjectAdapter qSort = sortProperty.get(q,
> InteractionInitiatedBy.FRAMEWORK);
>                 Ordering<ObjectAdapter> naturalOrdering;
>                 if(ascending){
>                     naturalOrdering = ORDERING_BY_NATURAL.nullsFirst();
>                 } else {
>                     naturalOrdering = ORDERING_BY_NATURAL.reverse().nullsLast();
> // this is the important part to sort the null values correctly
>                 }
>                 return naturalOrdering.compare(pSort, qSort);
>             }
>         };
>         return ordering;
>     }
>
> Erik
>
> [1] https://github.com/apache/isis/blob/3dffc2d96e240982d16131d5
> 7d34fc8f54d1292c/core/viewer-wicket-ui/src/main/java/org/
> apache/isis/viewer/wicket/ui/components/collectioncontents/a
> jaxtable/CollectionContentsSortableDataProvider.java#L170
>
>
> On 09/20/2016 03:43 PM, Martin Grigorov wrote:
>
>> Hi Erik,
>>
>> This should be handled by
>> https://github.com/apache/isis/blob/3dffc2d96e240982d16131d5
>> 7d34fc8f54d1292c/core/viewer-wicket-ui/src/main/java/org/
>> apache/isis/viewer/wicket/ui/components/collectioncontents/a
>> jaxtable/CollectionContentsSortableDataProvider.java#L163-L167
>> It looks correct to me.
>> Put a breakpoint and see what happens.
>>
>> Martin Grigorov
>> Wicket Training and Consulting
>> https://twitter.com/mtgrigorov
>>
>> On Tue, Sep 20, 2016 at 3:30 PM, Erik de Hair <e....@pocos.nl> wrote:
>>
>> Hi,
>>>
>>> This might be a bit off topic but I hope Martin could answer this
>>> question...
>>>
>>> When sorting a table on a column containing (joda LocalDate) null values,
>>> using the Wicket viewer by clicking the header of the column, it always
>>> keeps the items with null on top even after reversing the sort order. Is
>>> there any way to change this behavior?
>>>
>>> Thanks,
>>> Erik
>>>
>>>
>

Re: Sorting tables on columns with null values

Posted by Erik de Hair <e....@pocos.nl>.
Hi Martin,

It looks like the code on [1] is messing things up.

If you replace the method with something like below, it works:

     private static Ordering<ObjectAdapter> orderingBy(final 
ObjectAssociation sortProperty, final boolean ascending) {
         final Ordering<ObjectAdapter> ordering = new 
Ordering<ObjectAdapter>(){

             @Override
             public int compare(final ObjectAdapter p, final 
ObjectAdapter q) {
                 final ObjectAdapter pSort = sortProperty.get(p, 
InteractionInitiatedBy.FRAMEWORK);
                 final ObjectAdapter qSort = sortProperty.get(q, 
InteractionInitiatedBy.FRAMEWORK);
                 Ordering<ObjectAdapter> naturalOrdering;
                 if(ascending){
                     naturalOrdering = ORDERING_BY_NATURAL.nullsFirst();
                 } else {
                     naturalOrdering = 
ORDERING_BY_NATURAL.reverse().nullsLast(); // this is the important part 
to sort the null values correctly
                 }
                 return naturalOrdering.compare(pSort, qSort);
             }
         };
         return ordering;
     }

Erik

[1] 
https://github.com/apache/isis/blob/3dffc2d96e240982d16131d57d34fc8f54d1292c/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsSortableDataProvider.java#L170

On 09/20/2016 03:43 PM, Martin Grigorov wrote:
> Hi Erik,
>
> This should be handled by
> https://github.com/apache/isis/blob/3dffc2d96e240982d16131d57d34fc8f54d1292c/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsSortableDataProvider.java#L163-L167
> It looks correct to me.
> Put a breakpoint and see what happens.
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Tue, Sep 20, 2016 at 3:30 PM, Erik de Hair <e....@pocos.nl> wrote:
>
>> Hi,
>>
>> This might be a bit off topic but I hope Martin could answer this
>> question...
>>
>> When sorting a table on a column containing (joda LocalDate) null values,
>> using the Wicket viewer by clicking the header of the column, it always
>> keeps the items with null on top even after reversing the sort order. Is
>> there any way to change this behavior?
>>
>> Thanks,
>> Erik
>>


Re: Sorting tables on columns with null values

Posted by Martin Grigorov <mg...@apache.org>.
Hi Erik,

This should be handled by
https://github.com/apache/isis/blob/3dffc2d96e240982d16131d57d34fc8f54d1292c/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsSortableDataProvider.java#L163-L167
It looks correct to me.
Put a breakpoint and see what happens.

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Tue, Sep 20, 2016 at 3:30 PM, Erik de Hair <e....@pocos.nl> wrote:

> Hi,
>
> This might be a bit off topic but I hope Martin could answer this
> question...
>
> When sorting a table on a column containing (joda LocalDate) null values,
> using the Wicket viewer by clicking the header of the column, it always
> keeps the items with null on top even after reversing the sort order. Is
> there any way to change this behavior?
>
> Thanks,
> Erik
>