Re: listView sorting question

2008-01-24 Thread Thomas Kappler
On Jan 23, 2008 10:35 PM, Beyonder Unknown [EMAIL PROTECTED] wrote:
 The use case is that, I have a page that renders a listview, and I need to 
 add a link that sorts the list when clicked. My listView uses 
 LoadableDetachableModel that retrieves data using hibernate backend.

In my current app, I have a ListView with three different ways of
sorting, each using several fields (columns of the ListView).  The
user can choose the ordering from a DropDownChoice.  I implemented it
with databinder's HibernateListModel.

The sorting is encapsulated in ICriteriaBuilders, with one abstract
one containing the query itself, which is the always the same.

private abstract class FicheSort implements ICriteriaBuilder {
HibernateListModel list = new HibernateListModel(Fiche.class, 
this);
public void build(Criteria criteria) {
criteria.add( fichesForCurrentLemma() );   // the query 
itself
// ...
}
protected abstract String getDisplayName();
}
private class SortRenderer implements IChoiceRenderer {
public Object getDisplayValue(Object object) {
return ((FicheSort)object).getDisplayName();
}
public String getIdValue(Object object, int index) {
return String.valueOf(index);
}
}
private class AlphabeticalSort extends FicheSort {
@Override
public void build(Criteria criteria) {
super.build(criteria);
criteria.addOrder( Order.asc(entry) );
criteria.addOrder( Order.asc(siglumDate) );
criteria.addOrder( Order.asc(siglum) );
}
@Override
protected String getDisplayName() {
return Alphabetisch;
}
}
   // Two more like AlphabeticalSort
   // ...

With one of the sorting methods, I instantiate a databinder
HibernateListModel, which is the model for the ListView:

final HibernateListModel alphabeticalFicheList =
new HibernateListModel(Fiche.class, new 
AlphabeticalSort());

final FicheListView sortableFicheView = new
FicheListView(sortableFicheView,
alphabeticalFicheList); 

Changing the sorting method when the user selects another choice in
the DDC, whose model is a List of all the concrete ICriteriaBuilders,
is simply:

protected void onUpdate(AjaxRequestTarget target) {
FicheSort sort = (FicheSort) 
orderChoice.getModelObject();
sortableFicheView.setModel(sort.list);
target.addComponent(sortableFicheViewContainer);
}

The downside is that the data is retrieved from the DB each time,
although I'm not sure whether Hibernate or the DB itself recognize
that and cache accordingly.

Cheers,
Thomas

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: listView sorting question

2008-01-24 Thread Beyonder Unknown
Thanks Thomas. I used the SortableDataProvider and it solved my problem. I'm 
think hibernate caches it. But you can always use a filter to apply second 
level caching using OS Cache or any third party framework. (Although I'm sure 
you probably have this already).

Best,
Wen Tong
 
--
The only constant in life is change.

- Original Message 
From: Thomas Kappler [EMAIL PROTECTED]
To: users@wicket.apache.org
Sent: Thursday, January 24, 2008 12:47:35 AM
Subject: Re: listView sorting question


On Jan 23, 2008 10:35 PM, Beyonder Unknown [EMAIL PROTECTED]
 wrote:
 The use case is that, I have a page that renders a listview, and I
 need to add a link that sorts the list when clicked. My listView uses
 LoadableDetachableModel that retrieves data using hibernate backend.

In my current app, I have a ListView with three different ways of
sorting, each using several fields (columns of the ListView).  The
user can choose the ordering from a DropDownChoice.  I implemented it
with databinder's HibernateListModel.

The sorting is encapsulated in ICriteriaBuilders, with one abstract
one containing the query itself, which is the always the same.

private abstract class FicheSort implements ICriteriaBuilder {
HibernateListModel list = new HibernateListModel(Fiche.class,
 this);
public void build(Criteria criteria) {
criteria.add( fichesForCurrentLemma() );   // the query
 itself
// ...
}
protected abstract String getDisplayName();
}
private class SortRenderer implements IChoiceRenderer {
public Object getDisplayValue(Object object) {
return ((FicheSort)object).getDisplayName();
}
public String getIdValue(Object object, int index) {
return String.valueOf(index);
}
}
private class AlphabeticalSort extends FicheSort {
@Override
public void build(Criteria criteria) {
super.build(criteria);
criteria.addOrder( Order.asc(entry) );
criteria.addOrder( Order.asc(siglumDate) );
criteria.addOrder( Order.asc(siglum) );
}
@Override
protected String getDisplayName() {
return Alphabetisch;
}
}
   // Two more like AlphabeticalSort
   // ...

With one of the sorting methods, I instantiate a databinder
HibernateListModel, which is the model for the ListView:

final HibernateListModel alphabeticalFicheList =
new HibernateListModel(Fiche.class, new
 AlphabeticalSort());

final FicheListView sortableFicheView = new
FicheListView(sortableFicheView,
alphabeticalFicheList); 

Changing the sorting method when the user selects another choice in
the DDC, whose model is a List of all the concrete ICriteriaBuilders,
is simply:

protected void onUpdate(AjaxRequestTarget target) {
FicheSort sort = (FicheSort)
 orderChoice.getModelObject();
sortableFicheView.setModel(sort.list);
target.addComponent(sortableFicheViewContainer);
}

The downside is that the data is retrieved from the DB each time,
although I'm not sure whether Hibernate or the DB itself recognize
that and cache accordingly.

Cheers,
Thomas

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]






  

Never miss a thing.  Make Yahoo your home page. 
http://www.yahoo.com/r/hs

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



listView sorting question

2008-01-23 Thread Beyonder Unknown

Hi All,

I was wondering if there's a better way to sort a list view. The use case is 
that, I have a page that renders a listview, and I need to add a link that 
sorts the list when clicked. My listView uses LoadableDetachableModel that 
retrieves data using hibernate backend.

Any help will be greatly appreciated!

Thanks,
WenTong
 
--
The only constant in life is change.




  

Looking for last minute shopping deals?  
Find them fast with Yahoo! Search.  
http://tools.search.yahoo.com/newsearch/category.php?category=shopping

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: listView sorting question

2008-01-23 Thread Igor Vaynberg
there are sortable grids examples in wicket-examples under repeaters.

wicketstuff.org/wicket13/repeater

-igor


On Jan 23, 2008 1:35 PM, Beyonder Unknown [EMAIL PROTECTED] wrote:

 Hi All,

 I was wondering if there's a better way to sort a list view. The use case is 
 that, I have a page that renders a listview, and I need to add a link that 
 sorts the list when clicked. My listView uses LoadableDetachableModel that 
 retrieves data using hibernate backend.

 Any help will be greatly appreciated!

 Thanks,
 WenTong

 --
 The only constant in life is change.




   
 
 Looking for last minute shopping deals?
 Find them fast with Yahoo! Search.  
 http://tools.search.yahoo.com/newsearch/category.php?category=shopping

 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: listView sorting question

2008-01-23 Thread Beyonder Unknown
Thanks Igor! I appreciate it.

Regards,
Wen Tong
 
--
The only constant in life is change.

- Original Message 
From: Igor Vaynberg [EMAIL PROTECTED]
To: users@wicket.apache.org
Sent: Wednesday, January 23, 2008 1:43:06 PM
Subject: Re: listView sorting question


there are sortable grids examples in wicket-examples under repeaters.

wicketstuff.org/wicket13/repeater

-igor


On Jan 23, 2008 1:35 PM, Beyonder Unknown [EMAIL PROTECTED] wrote:

 Hi All,

 I was wondering if there's a better way to sort a list view. The use
 case is that, I have a page that renders a listview, and I need to add
 a link that sorts the list when clicked. My listView uses
 LoadableDetachableModel that retrieves data using hibernate backend.

 Any help will be greatly appreciated!

 Thanks,
 WenTong

 --
 The only constant in life is change.




  
 

 Looking for last minute shopping deals?
 Find them fast with Yahoo! Search.
  http://tools.search.yahoo.com/newsearch/category.php?category=shopping

 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]






  

Never miss a thing.  Make Yahoo your home page. 
http://www.yahoo.com/r/hs

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]