Does anyone fancy exercising their little grey cells on this fine
Monday?

I have an entity with relevant fields declared as:

@PersistenceCapable(identityType = IdentityType.APPLICATION,
 detachable = "true")
public class Thing implements Serializable
{
  private static final long serialVersionUID = 1L;

  @PrimaryKey
  @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
  @Extension(vendorName="datanucleus", key="gae.encoded-pk",
value="true")
  private String sEncodedKey;

  @Persistent
  @Extension(vendorName="datanucleus", key="gae.pk-id", value="true")
  private Long loID;

  @Persistent
  private Date dtCreated;
}

I want to display pages of my persistent entity to the user, which
each page having, say, 20 items displayed. I want to use the class
JDOCursorHelper (and stick with JDO if possible). The GAE/J
documentation shows me how I can paginate forwards:

  ·  Query the first 21 entities and store in an ArrayList<Thing>.
  ·  If 21 are returned, set a "there are more entities" flag and
discard the 21st entity from the list, otherwise reset the flag.
  ·  Show the 20 entities.
  ·  Store the cursor as a web-safe string.
  ·  If the user hits "Next" (enabled if the flag is set) then:
    ·  retrieve the cursor from the web-safe string.
    ·  get the next 21 entities
    ·  etc.

The fun starts if I want to allow the user to paginate the previous
pages. One method that I can think of stores the web-safe string of
each cursor in a list kept in the user's session object. As "Next" is
hit, the cursor just generated can be pushed onto the list. To
traverse backwards, I pop (delete) the latest cursor string from the
session's list and then use the previous one (now the latest) to
produce the previous page's items.

Can anyone think of a smarter way to paginate backwards without
storing a list of web-safe cursor strings in a user's session?

(I could generate an additional persistent field which holds the
concatenated string values

  [dtCreated to milliseconds using Calendar] + "|" + sEncodedKey

but the GAE/J article for this says that this way is no longer
recommended.)

Regards,

Ian

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to