+++ /dev/null
-/* $Id: Pager.java 472 2011-08-20 13:34:00Z dobashi $\r
- * create: 2004/10/18\r
- * (c)2004 Lavans Networks Inc. All Rights Reserved.\r
- */\r
-package com.lavans.luz2.util;\r
-\r
-import java.io.Serializable;\r
-import java.util.ArrayList;\r
-import java.util.Arrays;\r
-import java.util.HashMap;\r
-import java.util.HashSet;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.Set;\r
-\r
-import com.lavans.luz2.commons.ArrayUtils;\r
-\r
-//import com.lavans.util.Logger;\r
-\r
-/**\r
- *\r
- * @author dobashi\r
- * @version 1.00\r
- */\r
-public class Pager<E> implements Serializable{\r
- /**\r
- *\r
- */\r
- private static final long serialVersionUID = 4429141113724792971L;\r
-\r
- /** Logger */\r
-// private static Logger logger = Logger.getInstance();\r
-\r
- /** ページ情報 */\r
- private PageInfo pageInfo = null;\r
-\r
- /** 全件数。 */\r
- private long totalCount;\r
- /** 全ページ数。 */\r
- private int totalPage;\r
-\r
- /** 次ページ制御用リンク先URL */\r
- private String linkUrl="";\r
- /** 次ページ制御用リンクパラメータ */\r
- private String linkParam="";\r
-\r
- /** 保持しているデータのリスト */\r
- private List<E> dataList;\r
-\r
- /** 属性格納用Map */\r
- private Map<String, Object> attributeMap = new HashMap<String, Object>();\r
-\r
- // 複数選択\r
- /** 前画面での全ID */\r
- public static final String ID_LIST = "id_list";\r
- /** 保存済みID */\r
- public static final String CHECKED_ID_LIST = "checked_id_list";\r
- /** 今回選択されたID */\r
- public static final String CHECKED_ID = "checked_id";\r
- /** 複数選択時の選択済みID一覧 */\r
- private Set<String> checkedIdList;\r
-\r
- /**\r
- * コンストラクタ。表示行数指定。\r
- */\r
- public Pager(PageInfo pageInfo) {\r
- this.pageInfo = pageInfo;\r
- dataList = new ArrayList<E>(pageInfo.getRows());\r
- checkedIdList = new HashSet<String>();\r
- }\r
-\r
- //----------------------------------------------------------\r
- // ページ制御情報設定\r
- //----------------------------------------------------------\r
- /**\r
- * 件数設定。\r
- * この件数を元にページ数や次ページ存在チェック等を行う。\r
- * DAOクラスで読込の際に使用する。\r
- *\r
- */\r
- public void setTotalCount(long x){\r
- totalCount = x;\r
- // 全ページ数\r
- totalPage = (int)(totalCount / pageInfo.getRows() -1);\r
- if(totalCount % pageInfo.getRows() != 0){\r
- totalPage++;\r
- }\r
- }\r
-\r
- /** 前のページがあるか。 */\r
- public boolean hasPrev(){\r
- return pageInfo.getPage()>0;\r
- }\r
- /** 次のページがあるか。 */\r
- public boolean hasNext(){\r
- return pageInfo.getPage() < totalPage;\r
- }\r
-// protected void setHasNext(boolean x){\r
-// hasNext = x;\r
-// }\r
- /** 全ページ数。 */\r
- public int getTotalPage(){\r
- return totalPage;\r
- }\r
-\r
- /**\r
- * 全件データから現在のページを表すpagerにする。\r
- * @param totalData\r
- */\r
- public void setTotalData(List<E> totalData){\r
- // 全件数\r
- setTotalCount(totalData.size());\r
-\r
- int start = pageInfo.getPage() * pageInfo.getRows();\r
- for(int i=start; i<start+pageInfo.getRows(); i++){\r
- if(i>=totalData.size()){\r
- break;\r
- }\r
- add(totalData.get(i));\r
- }\r
-\r
- }\r
-\r
-\r
- //----------------------------------------------------------\r
- // 複数選択処理\r
- //----------------------------------------------------------\r
- /**\r
- * 複数選択時の選択項目判別処理\r
- * 下記のようにパラメータを渡すと、選択/非選択の判定を行う。\r
- * pager.setCheckedParams(request.getParamegerMap());\r
- */\r
- public void setCheckedParams(Map<String, String[]> params){\r
- // 今回選択されたID\r
- String checkedId[] = null;\r
- if(params.containsKey(CHECKED_ID)){\r
- checkedId = params.get(CHECKED_ID);\r
- // 今回選択されたIDを保存\r
- checkedIdList.addAll(Arrays.asList(checkedId));\r
- }\r
- // 保存済みID\r
- if(params.containsKey(CHECKED_ID_LIST) && !params.get(CHECKED_ID_LIST)[0].equals("")){\r
- checkedIdList.addAll(Arrays.asList(params.get(CHECKED_ID_LIST)[0].split(",")));\r
- }\r
-\r
- // 前画面の分がなければここで終了\r
- if(!params.containsKey(ID_LIST)) return;\r
- // 前画面で表示していたすべてのid\r
- String idList[] = params.get(ID_LIST)[0].split(",");\r
- // 保存済みIDから、前回表示で選択されなかったIDを引く\r
- for(int i=0; i<idList.length; i++){\r
- if(!ArrayUtils.contains(checkedId, idList[i])){\r
- checkedIdList.remove(idList[i]);\r
- }\r
- }\r
- }\r
-\r
-\r
- /**\r
- * タイトル : ポジションデータ取得処理\r
- * 説明 :\r
- * @return List\r
- * @param なし\r
- * @throws なし\r
- */\r
- public E get(int i) {\r
- return dataList.get(i);\r
- }\r
-\r
- /**\r
- * タイトル : ポジションデータ取得処理\r
- * 説明 :\r
- * @return List\r
- * @param なし\r
- * @throws なし\r
- */\r
- public void add(E obj) {\r
- dataList.add(obj);\r
- }\r
-\r
- /**\r
- * タイトル : ポジションリスト取得処理\r
- * 説明 :\r
- * @return List\r
- * @param なし\r
- * @throws なし\r
- */\r
- public List<E> getList() {\r
- return dataList;\r
- }\r
-\r
- /**\r
- * タイトル : ポジションリストサイズ取得処理\r
- * 説明 :\r
- * @return int\r
- * @param なし\r
- * @throws なし\r
- */\r
- public int size() {\r
- return dataList.size();\r
- }\r
-\r
- /**\r
- * 表示開始番号。\r
- * @return\r
- */\r
- public int getStartNumber(){\r
- return pageInfo.getPage()*pageInfo.getRows()+1;\r
- }\r
-\r
- /**\r
- * 表示終了番号。\r
- * @return\r
- */\r
- public int getEndNumber(){\r
- return getStartNumber()+dataList.size()-1;\r
- }\r
-\r
- /**\r
- * @return totalCount を戻します。\r
- */\r
- public long getTotalCount() {\r
- return totalCount;\r
- }\r
- /**\r
- * @return linkParam を戻します。\r
- */\r
- public String getLinkParam() {\r
- // pageInfoのrowsも自動的に付加する。\r
- if(pageInfo!=null){\r
- return linkParam + PageInfo.ROWS +"="+pageInfo.getRows()+"&";\r
- }\r
- return linkParam;\r
- }\r
- /**\r
- * @param linkParam linkParam を設定。\r
- */\r
- public void setLinkParam(String linkParam) {\r
- this.linkParam = linkParam;\r
-// this.linkParam = StringUtil.encodeParameterValues(linkParam);\r
- }\r
- /**\r
- * @return linkUrl を戻します。\r
- */\r
- public String getLinkUrl() {\r
- return linkUrl;\r
- }\r
- /**\r
- * @param linkUrl linkUrl を設定。\r
- */\r
- public void setLinkUrl(String linkUrl) {\r
- this.linkUrl = linkUrl;\r
- }\r
- /**\r
- * @return pageInfo を戻します。\r
- */\r
- public PageInfo getPageInfo() {\r
- return pageInfo;\r
- }\r
-\r
- /**\r
- * 属性追加。\r
- * @param key\r
- * @param value\r
- */\r
- public void setAttribute(String key, Object value){\r
- attributeMap.put(key, value);\r
- }\r
- /**\r
- * 属性取得。\r
- * @param key\r
- * @param value\r
- */\r
- public Object getAttribute(String key){\r
- return attributeMap.get(key);\r
- }\r
-\r
- /**\r
- * @return the checkedIdList\r
- */\r
- public Set<String> getCheckedIdList() {\r
- return checkedIdList;\r
- }\r
-\r
- /**\r
- * @param checkedIdList the checkedIdList to set\r
- */\r
- public void setCheckedIdList(Set<String> checkedIdList) {\r
- this.checkedIdList = checkedIdList;\r
- }\r
-}\r