+
+ /*
+ * 2022-07-20 bsoares
+ * The new Uniprot API has a strange pagination process described at
+ * https://www.uniprot.org/help/pagination
+ * When a successful request returns results, with more results past the size
+ * limit, the response sends a "Link" header with a URL containing the a "cursor"
+ * parameter with an opaque string that refers to the next page of results.
+ * These are store as nextCursor in the UniProtFTSRestClient along with the currCursor.
+ * When navigation across pages occurs these should be swapped around.
+ */
+ @Override
+ public void refreshPaginatorState()
+ {
+ UniProtFTSRestClient c = UniProtFTSRestClient.getInstance();
+ setNextPageButtonEnabled(c.getNextCursor() != null);
+ setPrevPageButtonEnabled(c.getPrevCursor() != null);
+ }
+
+ @Override
+ public void prevPageAction()
+ {
+ updatePaginatorCart();
+ UniProtFTSRestClient c = UniProtFTSRestClient.getInstance();
+ String prevCursor = c.getPrevCursor();
+ if (prevCursor != null)
+ {
+ if (offSet >= pageLimit)
+ {
+ offSet -= pageLimit;
+ }
+ else
+ {
+ // not sure what's happening if we get here though it wouldn't surprise
+ // me
+ Console.warn(
+ "UniprotFTSPanel: prevCursor exists but offset < pageLimit. This probably shouldn't be happening.");
+ }
+ c.setPrevCursorPage();
+ searchAction(prevCursor, false);
+ }
+ else
+ {
+ refreshPaginatorState();
+ }
+ }
+
+ @Override
+ public void nextPageAction()
+ {
+ UniProtFTSRestClient c = UniProtFTSRestClient.getInstance();
+ String nextCursor = c.getNextCursor();
+ if (nextCursor != null)
+ {
+ offSet += pageLimit;
+ c.setNextCursorPage();
+ searchAction(nextCursor, false);
+ }
+ else
+ {
+ refreshPaginatorState();
+ }
+ }
+
+ public String getDbName()
+ {
+ return "UniProt";
+ }