1 /* $Id: Pager.java 472 2011-08-20 13:34:00Z dobashi $
\r
3 * (c)2004 Lavans Networks Inc. All Rights Reserved.
\r
5 package com.lavans.luz2.util;
\r
7 import java.io.Serializable;
\r
8 import java.util.ArrayList;
\r
9 import java.util.Arrays;
\r
10 import java.util.HashMap;
\r
11 import java.util.HashSet;
\r
12 import java.util.List;
\r
13 import java.util.Map;
\r
14 import java.util.Set;
\r
16 import com.lavans.luz2.commons.ArrayUtils;
\r
18 //import com.lavans.util.Logger;
\r
25 public class Pager<E> implements Serializable{
\r
29 private static final long serialVersionUID = 4429141113724792971L;
\r
32 // private static Logger logger = Logger.getInstance();
\r
35 private PageInfo pageInfo = null;
\r
38 private long totalCount;
\r
40 private int totalPage;
\r
42 /** 次ページ制御用リンク先URL */
\r
43 private String linkUrl="";
\r
44 /** 次ページ制御用リンクパラメータ */
\r
45 private String linkParam="";
\r
47 /** 保持しているデータのリスト */
\r
48 private List<E> dataList;
\r
51 private Map<String, Object> attributeMap = new HashMap<String, Object>();
\r
55 public static final String ID_LIST = "id_list";
\r
57 public static final String CHECKED_ID_LIST = "checked_id_list";
\r
59 public static final String CHECKED_ID = "checked_id";
\r
60 /** 複数選択時の選択済みID一覧 */
\r
61 private Set<String> checkedIdList;
\r
66 public Pager(PageInfo pageInfo) {
\r
67 this.pageInfo = pageInfo;
\r
68 dataList = new ArrayList<E>(pageInfo.getRows());
\r
69 checkedIdList = new HashSet<String>();
\r
72 //----------------------------------------------------------
\r
74 //----------------------------------------------------------
\r
77 * この件数を元にページ数や次ページ存在チェック等を行う。
\r
81 public void setTotalCount(long x){
\r
84 totalPage = (int)(totalCount / pageInfo.getRows() -1);
\r
85 if(totalCount % pageInfo.getRows() != 0){
\r
91 public boolean hasPrev(){
\r
92 return pageInfo.getPage()>0;
\r
95 public boolean hasNext(){
\r
96 return pageInfo.getPage() < totalPage;
\r
98 // protected void setHasNext(boolean x){
\r
102 public int getTotalPage(){
\r
107 * 全件データから現在のページを表すpagerにする。
\r
110 public void setTotalData(List<E> totalData){
\r
112 setTotalCount(totalData.size());
\r
114 int start = pageInfo.getPage() * pageInfo.getRows();
\r
115 for(int i=start; i<start+pageInfo.getRows(); i++){
\r
116 if(i>=totalData.size()){
\r
119 add(totalData.get(i));
\r
125 //----------------------------------------------------------
\r
127 //----------------------------------------------------------
\r
130 * 下記のようにパラメータを渡すと、選択/非選択の判定を行う。
\r
131 * pager.setCheckedParams(request.getParamegerMap());
\r
133 public void setCheckedParams(Map<String, String[]> params){
\r
135 String checkedId[] = null;
\r
136 if(params.containsKey(CHECKED_ID)){
\r
137 checkedId = params.get(CHECKED_ID);
\r
139 checkedIdList.addAll(Arrays.asList(checkedId));
\r
142 if(params.containsKey(CHECKED_ID_LIST) && !params.get(CHECKED_ID_LIST)[0].equals("")){
\r
143 checkedIdList.addAll(Arrays.asList(params.get(CHECKED_ID_LIST)[0].split(",")));
\r
147 if(!params.containsKey(ID_LIST)) return;
\r
148 // 前画面で表示していたすべてのid
\r
149 String idList[] = params.get(ID_LIST)[0].split(",");
\r
150 // 保存済みIDから、前回表示で選択されなかったIDを引く
\r
151 for(int i=0; i<idList.length; i++){
\r
152 if(!ArrayUtils.contains(checkedId, idList[i])){
\r
153 checkedIdList.remove(idList[i]);
\r
160 * タイトル : ポジションデータ取得処理
\r
166 public E get(int i) {
\r
167 return dataList.get(i);
\r
171 * タイトル : ポジションデータ取得処理
\r
177 public void add(E obj) {
\r
182 * タイトル : ポジションリスト取得処理
\r
188 public List<E> getList() {
\r
193 * タイトル : ポジションリストサイズ取得処理
\r
199 public int size() {
\r
200 return dataList.size();
\r
207 public int getStartNumber(){
\r
208 return pageInfo.getPage()*pageInfo.getRows()+1;
\r
215 public int getEndNumber(){
\r
216 return getStartNumber()+dataList.size()-1;
\r
220 * @return totalCount を戻します。
\r
222 public long getTotalCount() {
\r
226 * @return linkParam を戻します。
\r
228 public String getLinkParam() {
\r
229 // pageInfoのrowsも自動的に付加する。
\r
230 if(pageInfo!=null){
\r
231 return linkParam + PageInfo.ROWS +"="+pageInfo.getRows()+"&";
\r
236 * @param linkParam linkParam を設定。
\r
238 public void setLinkParam(String linkParam) {
\r
239 this.linkParam = linkParam;
\r
240 // this.linkParam = StringUtil.encodeParameterValues(linkParam);
\r
243 * @return linkUrl を戻します。
\r
245 public String getLinkUrl() {
\r
249 * @param linkUrl linkUrl を設定。
\r
251 public void setLinkUrl(String linkUrl) {
\r
252 this.linkUrl = linkUrl;
\r
255 * @return pageInfo を戻します。
\r
257 public PageInfo getPageInfo() {
\r
266 public void setAttribute(String key, Object value){
\r
267 attributeMap.put(key, value);
\r
274 public Object getAttribute(String key){
\r
275 return attributeMap.get(key);
\r
279 * @return the checkedIdList
\r
281 public Set<String> getCheckedIdList() {
\r
282 return checkedIdList;
\r
286 * @param checkedIdList the checkedIdList to set
\r
288 public void setCheckedIdList(Set<String> checkedIdList) {
\r
289 this.checkedIdList = checkedIdList;
\r