Re: intro and explanation about DataTable and DetachableModel

2008-04-27 Thread Eyal Golan
Thanks Igor and Doug,
I'll check things out when the boss agrees
bbrrr ...

On Fri, Apr 25, 2008 at 12:39 AM, Doug Donohoe [EMAIL PROTECTED] wrote:


 This may help.  I am moving my DD Poker site to wicket and implemented an
 IDataProvider around my database service as follows:

 private class HistoryData implements IDataProvider
{
private static final long serialVersionUID = 42L;

private PokerUser user;
private int count;

private HistoryData(PokerUser user)
{
this.user = user;
count =
 histService.getAllTournamentHistoriesForProfileCount(user.getId());
}

@SuppressWarnings({RawUseOfParameterizedType})
public Iterator iterator(int first, int pagesize)
{
return
 histService.getAllTournamentHistoriesForProfile(user.getId(), count,
 first,
 pagesize).iterator();
}

public int size()
{
return count;
}

public boolean isEmpty()
{
return count == 0;
}

public IModel model(Object object)
{
return new CompoundPropertyModel(new EntityModel(object));
}

public void detach()
{
}
}

 Where EntityModel is:

 public class EntityModel extends CompoundPropertyModel
 {
private static final long serialVersionUID = 42L;

/**
 * Constructor
 *
 * @param object The model object, which may or may not implement
 IModel
 */
public EntityModel(Object object)
{
super(new NonLoadableDetachableModel(object));
}
 }

 and NonLoadableDetachableModel is

 public class NonLoadableDetachableModel extends LoadableDetachableModel
 {
private static final long serialVersionUID = 42L;

public NonLoadableDetachableModel(Object model)
{
super(model);
}

@Override
protected Object load()
{
throw new UnsupportedOperationException(load should never be
 called);
}
 }

 I created this last class because my pages are read-only and the result
 set
 is always fetched through the service.  I didn't want to have my (JPA
 based)
 entities being serialized.

 The HistoryData class worked great with the base DataView class in Wicket.

 Note that I drew a lot of inspiration from:

 http://wicketstuff.org/wicket13/repeater/

 and digging around in the source.

 I don't know if this will help you or not - hopefully so!

 -Doug


 Eyal Golan wrote:
 
  Hi,
  Can anyone give me an explanation about paging with DetachableModel?
 
  My problem:
  We have records in the DB that can be a-lot.
  We also filter them sometimes.
 
  someone in the company created a non-standard paging.
  He doesn't use the Wicket's paging.
 
  The iterator method of the DataProvider he created returns only the
 number
  of elements that should be displayed in the current page.
  Eg. suppose we decided we show 20 records per page.
  The DataProvider keeps track on which page we're at.
  Then he calculates the indexes of records.
  It's done in getVisibleTickets() method.
  int fromIndex = (currentPage - 1) * (ticketsPerPage);
  int toIndex = ticketsPerPage;
 
  And then he asks the DB for the records in this range (with the filter).
  This is the size() method:
  public int size() {
  if ((visibleTickets == null) || (update)) {
  getVisibleTickets();
  }
  return visibleTickets.size();
  }
 
  OK, I hope i was clear enough.
  I know that it might be done using Wicket's library.
  Can anyone explain?
 
  Thanks
  --
  Eyal Golan
  [EMAIL PROTECTED]
 
  Visit: http://jvdrums.sourceforge.net/
 
 

 --
 View this message in context:
 http://www.nabble.com/intro-and-explanation-about-DataTable-and-DetachableModel-tp16852272p16853277.html
 Sent from the Wicket - User mailing list archive at Nabble.com.


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




-- 
Eyal Golan
[EMAIL PROTECTED]

Visit: http://jvdrums.sourceforge.net/


Re: intro and explanation about DataTable and DetachableModel

2008-04-24 Thread Doug Donohoe

This may help.  I am moving my DD Poker site to wicket and implemented an
IDataProvider around my database service as follows:

private class HistoryData implements IDataProvider
{
private static final long serialVersionUID = 42L;

private PokerUser user;
private int count;

private HistoryData(PokerUser user)
{
this.user = user;
count =
histService.getAllTournamentHistoriesForProfileCount(user.getId());
}

@SuppressWarnings({RawUseOfParameterizedType})
public Iterator iterator(int first, int pagesize)
{
return
histService.getAllTournamentHistoriesForProfile(user.getId(), count, first,
pagesize).iterator();
}

public int size()
{
return count;
}

public boolean isEmpty()
{
return count == 0;
}

public IModel model(Object object)
{
return new CompoundPropertyModel(new EntityModel(object));
}

public void detach()
{
}
}

Where EntityModel is:

public class EntityModel extends CompoundPropertyModel
{
private static final long serialVersionUID = 42L;

/**
 * Constructor
 *
 * @param object The model object, which may or may not implement IModel
 */
public EntityModel(Object object)
{
super(new NonLoadableDetachableModel(object));
}
}

and NonLoadableDetachableModel is

public class NonLoadableDetachableModel extends LoadableDetachableModel
{
private static final long serialVersionUID = 42L;

public NonLoadableDetachableModel(Object model)
{
super(model);
}

@Override
protected Object load()
{
throw new UnsupportedOperationException(load should never be
called);
}
}

I created this last class because my pages are read-only and the result set
is always fetched through the service.  I didn't want to have my (JPA based)
entities being serialized.

The HistoryData class worked great with the base DataView class in Wicket.

Note that I drew a lot of inspiration from:

http://wicketstuff.org/wicket13/repeater/

and digging around in the source.

I don't know if this will help you or not - hopefully so!

-Doug


Eyal Golan wrote:
 
 Hi,
 Can anyone give me an explanation about paging with DetachableModel?
 
 My problem:
 We have records in the DB that can be a-lot.
 We also filter them sometimes.
 
 someone in the company created a non-standard paging.
 He doesn't use the Wicket's paging.
 
 The iterator method of the DataProvider he created returns only the number
 of elements that should be displayed in the current page.
 Eg. suppose we decided we show 20 records per page.
 The DataProvider keeps track on which page we're at.
 Then he calculates the indexes of records.
 It's done in getVisibleTickets() method.
 int fromIndex = (currentPage - 1) * (ticketsPerPage);
 int toIndex = ticketsPerPage;
 
 And then he asks the DB for the records in this range (with the filter).
 This is the size() method:
 public int size() {
 if ((visibleTickets == null) || (update)) {
 getVisibleTickets();
 }
 return visibleTickets.size();
 }
 
 OK, I hope i was clear enough.
 I know that it might be done using Wicket's library.
 Can anyone explain?
 
 Thanks
 -- 
 Eyal Golan
 [EMAIL PROTECTED]
 
 Visit: http://jvdrums.sourceforge.net/
 
 

-- 
View this message in context: 
http://www.nabble.com/intro-and-explanation-about-DataTable-and-DetachableModel-tp16852272p16853277.html
Sent from the Wicket - User mailing list archive at Nabble.com.


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



intro and explanation about DataTable and DetachableModel

2008-04-23 Thread Eyal Golan
Hi,
Can anyone give me an explanation about paging with DetachableModel?

My problem:
We have records in the DB that can be a-lot.
We also filter them sometimes.

someone in the company created a non-standard paging.
He doesn't use the Wicket's paging.

The iterator method of the DataProvider he created returns only the number
of elements that should be displayed in the current page.
Eg. suppose we decided we show 20 records per page.
The DataProvider keeps track on which page we're at.
Then he calculates the indexes of records.
It's done in getVisibleTickets() method.
int fromIndex = (currentPage - 1) * (ticketsPerPage);
int toIndex = ticketsPerPage;

And then he asks the DB for the records in this range (with the filter).
This is the size() method:
public int size() {
if ((visibleTickets == null) || (update)) {
getVisibleTickets();
}
return visibleTickets.size();
}

OK, I hope i was clear enough.
I know that it might be done using Wicket's library.
Can anyone explain?

Thanks
-- 
Eyal Golan
[EMAIL PROTECTED]

Visit: http://jvdrums.sourceforge.net/


Re: intro and explanation about DataTable and DetachableModel

2008-04-23 Thread Igor Vaynberg
see wicketstuff.org/wicket13/repeater especially the dataview
examples. they utilize wicket's IDataProvider interface which is
designed for paging/sorting of database data.

-igor


On Wed, Apr 23, 2008 at 2:43 AM, Eyal Golan [EMAIL PROTECTED] wrote:
 Hi,
  Can anyone give me an explanation about paging with DetachableModel?

  My problem:
  We have records in the DB that can be a-lot.
  We also filter them sometimes.

  someone in the company created a non-standard paging.
  He doesn't use the Wicket's paging.

  The iterator method of the DataProvider he created returns only the number
  of elements that should be displayed in the current page.
  Eg. suppose we decided we show 20 records per page.
  The DataProvider keeps track on which page we're at.
  Then he calculates the indexes of records.
  It's done in getVisibleTickets() method.
  int fromIndex = (currentPage - 1) * (ticketsPerPage);
  int toIndex = ticketsPerPage;

  And then he asks the DB for the records in this range (with the filter).
  This is the size() method:
 public int size() {
 if ((visibleTickets == null) || (update)) {
 getVisibleTickets();
 }
 return visibleTickets.size();
 }

  OK, I hope i was clear enough.
  I know that it might be done using Wicket's library.
  Can anyone explain?

  Thanks
  --
  Eyal Golan
  [EMAIL PROTECTED]

  Visit: http://jvdrums.sourceforge.net/


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