package com.opentravelsoft.util; import java.util.List; /** * 画面表示用のリストを管理するためのクラス. * @author nokami */ public class ListManager { // レコードのリスト private List recordList = null; // レコードの全件数 private int recordCount = 0; // フェッチする最大件数 private int maxResult = 0; // フェッチした件数 private int fetchCount = 0; // フェッチしたレコードの最初の番号 private int firstResult = -1; // フェッチしたレコードの最後の番号 private int lastResult = -1; // 前ページに戻る場合の最初のレコード番号 private int prevFirstResult = -1; // 次ページに進む場合の最初のレコード番号 private int nextFirstResult = -1; // 最後のページに進む場合のレコード番号 private int lastFirstResult = -1; /** * デフォルトコンストラクタ.使用不可. */ private ListManager() { } /** * コンストラクタ.<BR/> * * @param list リスト * @param recordCount レコードの全件数 * @param firstResult フェッチしたレコードの最初の番号 ( 0 オリジン ) * @param maxResult フェッチするレコードの最大件数 */ public ListManager(List list, int recordCount, int firstResult, int maxResult) { if ( list != null ) { // リストの保存 setRecordList(list); // レコードの全件数の保存 setRecordCount(recordCount); // フェッチしたレコードの最初の番号の保存 if ( list.size() != 0 ) { setFirstResult(firstResult); } // フェッチするレコードの最大件数の保存 setMaxResult(maxResult); // フェッチしたレコード件数を計算 setFetchCount(list.size()); // フェッチしたレコードの最後の番号を計算 setLastResult(firstResult + getFetchCount() - 1); // 前ページに戻る場合の最初のレコード番号を計算 ( 戻れない場合は -1 ) if ( firstResult > 0 ) { if ( firstResult - maxResult < 0 ) { setPrevFirstResult(0); } else { setPrevFirstResult(firstResult - maxResult); } } // 次ページに進む場合の最初のレコード番号 ( 進めない場合は -1 ) if ( firstResult + maxResult < recordCount ) { setNextFirstResult(firstResult + maxResult); } // 最後のページに進む場合のレコード番号 ( 進めない場合は -1 ) if ( getNextFirstResult() != -1 ) { setLastFirstResult(recordCount - maxResult); } } } private void setFetchCount(int fetchCount) { this.fetchCount = fetchCount; } private void setFirstResult(int firstResult) { this.firstResult = firstResult; } private void setLastResult(int lastResult) { this.lastResult = lastResult; } private void setLastFirstResult(int lastFirstResult) { this.lastFirstResult = lastFirstResult; } private void setMaxResult(int maxResult) { this.maxResult = maxResult; } private void setNextFirstResult(int nextFirstResult) { this.nextFirstResult = nextFirstResult; } private void setPrevFirstResult(int prevFirstResult) { this.prevFirstResult = prevFirstResult; } private void setRecordCount(int recordCount) { this.recordCount = recordCount; } private void setRecordList(List recordList) { this.recordList = recordList; } public int getFetchCount() { return fetchCount; } public int getFirstResult() { return firstResult; } public int getLastResult() { return lastResult; } public int getLastFirstResult() { return lastFirstResult; } public int getMaxResult() { return maxResult; } public int getNextFirstResult() { return nextFirstResult; } public int getPrevFirstResult() { return prevFirstResult; } public int getRecordCount() { return recordCount; } public List getRecordList() { return recordList; } }