@@ -265,7 +265,7 @@ public String buildDownloadContext(VelocityPortlet portlet, Context context, Run
265
265
266
266
Calendar calendar = Calendar .getInstance ();
267
267
268
- //porcess the list. also get the hash for the file if it exists
268
+ //process the list. also get the hash for the file if it exists
269
269
for (File f : files ) {
270
270
271
271
String absolutePath = f .getAbsolutePath ();
@@ -311,8 +311,31 @@ public String buildDownloadContext(VelocityPortlet portlet, Context context, Run
311
311
312
312
zips .add (sf );
313
313
}
314
-
315
- context .put ("archives" , zips );
314
+
315
+ int totalItems = zips .size ();
316
+ int pageSize = state .getAttribute ("pagesize" ) != null ? ((Integer ) state .getAttribute ("pagesize" )).intValue () : 10 ;
317
+ int currentPage = state .getAttribute ("current-page" ) != null ? ((Integer ) state .getAttribute ("current-page" )).intValue () : 1 ;
318
+ int startIndex = (currentPage - 1 ) * pageSize ;
319
+ int endIndex = Math .min (startIndex + pageSize , totalItems );
320
+
321
+ context .put ("totalNumber" , totalItems );
322
+ context .put ("pagesize" , pageSize );
323
+ context .put ("numbers" , new Integer []{startIndex + 1 , endIndex , totalItems });
324
+ context .put ("goFPButton" , currentPage > 1 ? "true" : "false" );
325
+ context .put ("goPPButton" , currentPage > 1 ? "true" : "false" );
326
+ context .put ("goNPButton" , endIndex < totalItems ? "true" : "false" );
327
+ context .put ("goLPButton" , endIndex < totalItems ? "true" : "false" );
328
+
329
+ List <Integer []> sizeList = new ArrayList <>();
330
+ sizeList .add (new Integer []{10 });
331
+ sizeList .add (new Integer []{20 });
332
+ sizeList .add (new Integer []{50 });
333
+ sizeList .add (new Integer []{100 });
334
+ sizeList .add (new Integer []{200 });
335
+ context .put ("sizeList" , sizeList );
336
+
337
+ List <SparseFile > pagedZips = zips .subList (startIndex , endIndex );
338
+ context .put ("archives" , pagedZips );
316
339
317
340
return "-download" ;
318
341
}
@@ -589,10 +612,63 @@ public void doView_batch(RunData data){
589
612
* @param data RunData
590
613
*/
591
614
public void doView_download (RunData data ){
592
- SessionState state = ((JetspeedRunData ) data ).getPortletSessionState (((JetspeedRunData ) data ).getJs_peid ());
615
+ SessionState state = ((JetspeedRunData )data ).getPortletSessionState (((JetspeedRunData )data ).getJs_peid ());
593
616
state .setAttribute (STATE_MODE , DOWNLOAD_MODE );
594
617
}
595
618
619
+ /**
620
+ * Handle a request to change the page size
621
+ */
622
+ public void doChange_pagesize (RunData data ) {
623
+ SessionState state = ((JetspeedRunData )data ).getPortletSessionState (((JetspeedRunData )data ).getJs_peid ());
624
+ String newPageSize = data .getParameters ().getString ("selectPageSize" );
625
+ if (newPageSize != null ) {
626
+ state .setAttribute ("pagesize" , Integer .valueOf (newPageSize ));
627
+ state .setAttribute ("current-page" , Integer .valueOf (1 ));
628
+ }
629
+ }
630
+
631
+ /**
632
+ * Handle a request to go to the first page
633
+ */
634
+ public void doList_first (RunData data ) {
635
+ SessionState state = ((JetspeedRunData )data ).getPortletSessionState (((JetspeedRunData )data ).getJs_peid ());
636
+ state .setAttribute ("current-page" , Integer .valueOf (1 ));
637
+ }
638
+
639
+ /**
640
+ * Handle a request to go to the previous page
641
+ */
642
+ public void doList_prev (RunData data ) {
643
+ SessionState state = ((JetspeedRunData )data ).getPortletSessionState (((JetspeedRunData )data ).getJs_peid ());
644
+ Integer currentPage = (Integer ) state .getAttribute ("current-page" );
645
+ if (currentPage != null && currentPage > 1 ) {
646
+ state .setAttribute ("current-page" , Integer .valueOf (currentPage - 1 ));
647
+ }
648
+ }
649
+
650
+ /**
651
+ * Handle a request to go to the next page
652
+ */
653
+ public void doList_next (RunData data ) {
654
+ SessionState state = ((JetspeedRunData )data ).getPortletSessionState (((JetspeedRunData )data ).getJs_peid ());
655
+ Integer currentPage = (Integer ) state .getAttribute ("current-page" );
656
+ if (currentPage != null ) {
657
+ state .setAttribute ("current-page" , Integer .valueOf (currentPage + 1 ));
658
+ }
659
+ }
660
+
661
+ /**
662
+ * Handle a request to go to the last page
663
+ */
664
+ public void doList_last (RunData data ) {
665
+ SessionState state = ((JetspeedRunData )data ).getPortletSessionState (((JetspeedRunData )data ).getJs_peid ());
666
+ Integer pageSize = state .getAttribute ("pagesize" ) != null ? (Integer ) state .getAttribute ("pagesize" ) : 10 ;
667
+ Integer totalItems = state .getAttribute ("totalNumber" ) != null ? (Integer ) state .getAttribute ("totalNumber" ) : 0 ;
668
+ Integer lastPage = (totalItems + pageSize - 1 ) / pageSize ;
669
+ state .setAttribute ("current-page" , lastPage );
670
+ }
671
+
596
672
/**
597
673
* Process that archives the sites
598
674
* @param sites list of SparseSite
@@ -660,7 +736,6 @@ private void archiveSites(List<SparseSite> sites, String selectedTerm, Session c
660
736
}
661
737
662
738
663
-
664
739
}
665
740
666
741
//complete
0 commit comments