1   package com.atlassian.user.search.page;
2   
3   import java.util.ArrayList;
4   import java.util.Iterator;
5   import java.util.List;
6   import java.util.Arrays;
7   
8   public class PagerFactory
9   {
10      /**
11       * @return a merged pager composed of the two passed in
12       */
13      public static <T> Pager<T> getPager(Pager<T> pagerOne, Pager<T> pagerTwo)
14      {
15          return getPager(Arrays.asList(pagerOne, pagerTwo));
16      }
17  
18      public static <T> Pager<T> getPager(List<Pager<T>> pagers)
19      {
20          final List<Pager<T>> pagersCopy = new ArrayList<Pager<T>>(pagers); 
21          for (Iterator it = pagersCopy.iterator(); it.hasNext();)
22          {
23              Pager pager = (Pager) it.next();
24              if (pager == null || pager.isEmpty())
25                  it.remove();
26          }
27  
28          if (pagersCopy.size() == 0)
29              return DefaultPager.emptyPager();
30  
31          if (pagersCopy.size() == 1)
32              return pagersCopy.get(0);
33  
34          return new MergedListPager<T>(pagersCopy);
35      }
36  }