]>
git.argeo.org Git - gpl/argeo-jcr.git/blob - swt/org.argeo.cms.jcr.ui/src/org/argeo/cms/jcr/swt/PagedJcrQueryTabularPart.java
1 package org
.argeo
.cms
.jcr
.swt
;
4 import javax
.jcr
.NodeIterator
;
5 import javax
.jcr
.RepositoryException
;
6 import javax
.jcr
.query
.Query
;
8 import org
.argeo
.cms
.ux
.widgets
.AbstractTabularPart
;
9 import org
.argeo
.jcr
.JcrException
;
11 public class PagedJcrQueryTabularPart
extends AbstractTabularPart
<Query
, Node
> {
12 private int pageSize
= 100;
13 private int cursor
= 0;
14 private int nextUpperBound
= pageSize
;
15 private NodeIterator nit
= null;
18 public int getItemCount() {
19 return (nextUpperBound
- pageSize
) + (int) nit
.getSize();
23 public Node
getData(int row
) {
24 // System.out.println("Row " + row);
27 Node res
= nit
.nextNode();
28 if (cursor
== nextUpperBound
) {
29 getInput().setOffset(cursor
);
30 nextUpperBound
= cursor
+ pageSize
;
32 nit
= getInput().execute().getNodes();
33 } catch (RepositoryException e
) {
34 throw new JcrException("Cannot refresh query", e
);
36 notifyItemCountChange();
45 public void refresh() {
46 getInput().setOffset(0);
47 getInput().setLimit(pageSize
);
49 nextUpperBound
= pageSize
;
51 nit
= getInput().execute().getNodes();
52 } catch (RepositoryException e
) {
53 throw new JcrException("Cannot refresh query", e
);