📄 alphabeticpager.java
字号:
package com.component.pagination;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Vector;
/**
* Alphabetic pager.
*
* @author chetan_bh
*/
public class AlphabeticPager extends AbstractPager {
private String pagerName = PaginationConstants.ALPHABETIC_PAGER;
Pager subPager;
public AlphabeticPager(Vector<PageElement> data) {
super(data);
}
public AlphabeticPager(Vector<PageElement> data, int elementsPerPage) {
super(data, elementsPerPage);
}
/*
* TODO Non-Numeric pagers should consider calling subPage() method
* whenever the elements in that page exceeds the elementPerPage parameter.
* passing the page and the index probably.
*
*/
protected Map<String, Map<String, Vector<PageElement>>> page(Vector<PageElement> data)
{
Map<String,Map<String, Vector<PageElement>>> returner = new HashMap<String, Map<String, Vector<PageElement>>>();
Iterator<PageElement> elementsIter = data.iterator();
String currentPage = "";
while(elementsIter.hasNext())
{
PageElement pageElement = elementsIter.next();
String displayName = pageElement.getDisplayName();
char firstChar = displayName.charAt(0);
currentPage = Character.toString(firstChar);
// To take care of case insensitive categorization of data.
currentPage = currentPage.toUpperCase();
//System.out.println("returner "+returner);
Map<String, Vector<PageElement>> subPageMap = returner.get(currentPage);
Vector<PageElement> page = subPageMap.get(currentPage);
if(page == null)
{
page = new Vector<PageElement>();
page.add(pageElement); // call to subPage() should be made at the end of constructing the pageMap
// like in Numeric pager.
subPageMap = new HashMap<String, Vector<PageElement>>();
subPageMap.put(currentPage, page);
returner.put(currentPage, subPageMap);
pageIndices.add(currentPage);
}else // here check for numeric paging
{
page.add(pageElement);
}
numberOfPages = pageIndices.size();
}
// Alphabetic sorting of page indices Vector needed.
Collections.sort(pageIndices);
return returner;
}
public int getElementsPerPage()
{
return elementsPerPage;
}
// TODO Yet to implement this method fully.
// This will set elements per page for second level Numeric pager.
public void setElementsPerPage(int elementsPerPage)
{
this.elementsPerPage = elementsPerPage;
}
public String getPagerName()
{
return pagerName;
}
/**
* @param args
*/
public static void main(String[] args) {
Vector<PageElement> elements = new Vector<PageElement>();
String alphabets = "AbCDEfGHHJAsdGEWYVCBZXhSHhhasHqwHhHH";
for(int i = 0; i < alphabets.length(); i++)
{
PageElement element = new PageElementImpl();
element.setDisplayName(alphabets.charAt(i)+"-123");
elements.add(element);
}
AlphabeticPager alphaPager = new AlphabeticPager(elements);
System.out.println("pages "+alphaPager);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -