You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Christian Mühlethaler <ch...@freesurf.ch> on 2004/12/11 12:12:40 UTC

comparator in iTable column

Hi list,

has somebody knows how to compare dates in contrib:Table?
I can't make it run properly.

I have a table of objects of type Issue that has a date property:  
creationDate
the table does compare this date as String representation, as they are  
showed in the creationDate column.

So I added  a customized comparator to my simpleTableColumn.
But the comparator's compare throws a ClassCastException: the two  
arguments are of type String,
not as expected of the type "Issue".

It compares the columnValue of getColumnValue() rather than the object  
itself.

any ideas?
thank you,
Christian

>    ...
>      ITableColumn column1 = new SimpleTableColumn("creationDate",  
> "Erstellt",
>                 new ITableColumnEvaluator(){
>             public Object getColumnValue(ITableColumn objColumn,  
> Object objRow) {
>                 return  
> fh.helper.Util.format(((Issue)objRow).getCreationDate());
>             }
>
>         },true);
>          
> ((SimpleTableColumn)column1).setColumnComparator(this.getDAOFactory().g 
> etIssueDAO().getCreationDateComparator());
> ...

>     private class CreationDateComparator implements Comparator {
>
>          public int compare(Object o1, Object o2) {
>              log.warn("compare: " +o1.getClass().getName()+", value =  
> "+o1.toString());//<-- java.lang.String.
>              //Issue i1 = (Issue)o1; //<-- ClassCastException
>              //Issue i2 = (Issue)o2;
>              //return  
> i1.getCreationDate().compareTo(i2.getCreationDate());
>              return 0;
>        }
>
>     }


[Solved] Re: comparator in iTable column

Posted by Christian Mühlethaler <ch...@freesurf.ch>.
ok, the solution was obvious:
take AbstractTableColumn#setComparator(comparator). This comparator  
takes the objRow for comparing.
SimpleTableColumn#setColumnComparator(columnComparator) is for sorting  
the objColumn's value.

Sorry about the noise.
Christian

> Hi list,
>
> has somebody knows how to compare dates in contrib:Table?
> I can't make it run properly.
>
> I have a table of objects of type Issue that has a date property:  
> creationDate
> the table does compare this date as String representation, as they are  
> showed in the creationDate column.
>
> So I added  a customized comparator to my simpleTableColumn.
> But the comparator's compare throws a ClassCastException: the two  
> arguments are of type String,
> not as expected of the type "Issue".
>
> It compares the columnValue of getColumnValue() rather than the object  
> itself.
>
> any ideas?
> thank you,
> Christian
>
>>    ...
>>      ITableColumn column1 = new SimpleTableColumn("creationDate",  
>> "Erstellt",
>>                 new ITableColumnEvaluator(){
>>             public Object getColumnValue(ITableColumn objColumn,  
>> Object objRow) {
>>                 return  
>> fh.helper.Util.format(((Issue)objRow).getCreationDate());
>>             }
>>
>>         },true);
>>          
>> ((SimpleTableColumn)column1).setColumnComparator(this.getDAOFactory(). 
>> getIssueDAO().getCreationDateComparator());
>> ...
>
>>     private class CreationDateComparator implements Comparator {
>>
>>          public int compare(Object o1, Object o2) {
>>              log.warn("compare: " +o1.getClass().getName()+", value =  
>> "+o1.toString());//<-- java.lang.String.
>>              //Issue i1 = (Issue)o1; //<-- ClassCastException
>>              //Issue i2 = (Issue)o2;
>>              //return  
>> i1.getCreationDate().compareTo(i2.getCreationDate());
>>              return 0;
>>        }
>>
>>     }
>


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org