package com.akjava.lib.common.form.page;
import java.util.HashMap;
import java.util.Map;
import com.akjava.lib.common.tag.Tag;
public class PageMenuHtmlMaker {
private String pagesClass="menu_pages";
private String currentClass="menu_current";
private String pageKey="page";
private String baseQuery;
private String allDivClass="menu_all";
private String pageSpanClass="menu_page";
private String descriptionDivClass="menu_description";
//TODO something message
private String description="$start件目から$end件目を表示しています";
private String empty="該当データはありません";
private String baseUrl="";
public PageMenuHtmlMaker(String baseUrl,String basicQuery){
this.baseUrl=baseUrl;
this.baseQuery=basicQuery;
}
public String createPageMenuHtml(PagingInfo info){
Tag allDiv=new Tag("div");
//Div allDiv=new Div();
allDiv.setAttribute("class", allDivClass);
int start=(info.getCurrentPageNumber()-1)*info.getShowSizeInPage();
int end=start+info.getShowSizeInPage();
start++;
int maxPage=(int) (info.getCountItem()/info.getShowSizeInPage());
if(info.getCountItem()%info.getShowSizeInPage()>0){
maxPage++;
}
String des=description.replace("$start", ""+start);
long countItem=info.getCountItem();
des=des.replace("$end", ""+Math.min(end,info.getCountItem()));
if(countItem==0){
des=empty;
}
Tag desc=new Tag("div");
desc.setText(des);
desc.setAttribute("class", descriptionDivClass);
allDiv.addChild(desc);
Tag numdiv=new Tag("div");
numdiv.setAttribute("class",pagesClass);
allDiv.addChild(numdiv);
for(int i=1;i<=maxPage;i++){
if(i==info.getCurrentPageNumber()){
Tag span=new Tag("span");
span.setAttribute("class",currentClass);
span.setText("["+i+"]");
numdiv.addChild(span);
}else{
Map<String,String> replaced=new HashMap<String, String>();
replaced.put(pageKey,""+i+"");
String query=QueryUtils.replace(baseQuery, replaced);
Tag sp=new Tag("span");
sp.setAttribute("class",pageSpanClass);
Tag alink=new Tag("a");
alink.setAttribute("href", baseUrl+"?"+query);
alink.setText("["+i+"]");
sp.addChild(alink);
numdiv.addChild(sp);
}
}
return allDiv.toString();
}
}