1 package jp.sourceforge.ea2ddl.dao.allcommon.cbean.pagenavi.group;
\r
3 import java.util.List;
\r
4 import java.util.ArrayList;
\r
5 import java.util.Iterator;
\r
7 import jp.sourceforge.ea2ddl.dao.allcommon.cbean.pagenavi.PageNumberLink;
\r
8 import jp.sourceforge.ea2ddl.dao.allcommon.cbean.pagenavi.PageNumberLinkSetupper;
\r
11 * The bean of page group.
\r
12 * @author DBFlute(AutoGenerator)
\r
14 public class PageGroupBean implements java.io.Serializable {
\r
16 // ===================================================================================
\r
19 /** Serial version UID. (Default) */
\r
20 private static final long serialVersionUID = 1L;
\r
22 // ===================================================================================
\r
25 protected int _currentPageNumber;
\r
26 protected int _allPageCount;
\r
27 protected PageGroupOption _pageGroupOption;
\r
29 // ===================================================================================
\r
33 * Build the list of page number link.
\r
34 * @param <LINK> The type of link.
\r
35 * @param pageNumberLinkSetupper Page number link setupper. (NotNull and Required LINK)
\r
36 * @return The list of Page number link. (NotNull)
\r
38 public <LINK extends PageNumberLink> List<LINK> buildPageNumberLinkList(PageNumberLinkSetupper<LINK> pageNumberLinkSetupper) {
\r
39 final List<Integer> pageNumberList = createPageNumberList();
\r
40 final List<LINK> pageNumberLinkList = new ArrayList<LINK>();
\r
41 for (Integer pageNumber: pageNumberList) {
\r
42 pageNumberLinkList.add(pageNumberLinkSetupper.setup(pageNumber, pageNumber.equals(_currentPageNumber)));
\r
44 return pageNumberLinkList;
\r
48 * Calculate start page number.
\r
49 * @return Start page number.
\r
51 public int calculateStartPageNumber() {
\r
52 assertPageGroupValid();
\r
53 final int pageGroupSize = _pageGroupOption.getPageGroupSize();
\r
54 final int currentPageNumber = _currentPageNumber;
\r
56 int currentPageGroupNumber = (currentPageNumber / pageGroupSize);
\r
57 if ((currentPageNumber % pageGroupSize) == 0)
\r
59 currentPageGroupNumber--;
\r
61 final int currentPageGroupStartPageNumber = (pageGroupSize * currentPageGroupNumber) + 1;
\r
62 if (!(currentPageNumber >= currentPageGroupStartPageNumber)) {
\r
63 String msg = "currentPageNumber should be greater equal currentPageGroupStartPageNumber. But:";
\r
64 msg = msg + " currentPageNumber=" + currentPageNumber;
\r
65 msg = msg + " currentPageGroupStartPageNumber=" + currentPageGroupStartPageNumber;
\r
66 throw new IllegalStateException(msg);
\r
68 return currentPageGroupStartPageNumber;
\r
72 * Create the list of page number.
\r
73 * @return The list of page number. (NotNull)
\r
75 public List<Integer> createPageNumberList() {
\r
76 assertPageGroupValid();
\r
77 final int pageGroupSize = _pageGroupOption.getPageGroupSize();
\r
78 final int allPageCount = _allPageCount;
\r
79 final int currentPageGroupStartPageNumber = calculateStartPageNumber();
\r
80 if (!(currentPageGroupStartPageNumber > 0)) {
\r
81 String msg = "currentPageGroupStartPageNumber should be greater than 0. {> 0} But:";
\r
82 msg = msg + " currentPageGroupStartPageNumber=" + currentPageGroupStartPageNumber;
\r
83 throw new IllegalStateException(msg);
\r
85 final int nextPageGroupStartPageNumber = currentPageGroupStartPageNumber + pageGroupSize;
\r
87 final List<Integer> resultList = new ArrayList<Integer>();
\r
88 for (int i=currentPageGroupStartPageNumber; i < nextPageGroupStartPageNumber && i <= allPageCount; i++) {
\r
89 resultList.add(new Integer(i));
\r
95 * Create the array of page number.
\r
96 * @return The array of page number. (NotNUll)
\r
98 public int[] createPageNumberArray() {
\r
99 assertPageGroupValid();
\r
100 return convertListToIntArray(createPageNumberList());
\r
104 * Is existing previous page-group?
\r
105 * Using values are currentPageNumber and pageGroupSize.
\r
107 * @return Determination.
\r
109 public boolean isExistPrePageGroup() {
\r
110 assertPageGroupValid();
\r
111 return (_currentPageNumber > _pageGroupOption.getPageGroupSize());
\r
115 * Is existing next page-group?
\r
116 * Using values are currentPageNumber and pageGroupSize and allPageCount.
\r
118 * @return Determination.
\r
120 public boolean isExistNextPageGroup() {
\r
121 assertPageGroupValid();
\r
122 int currentPageGroupStartPageNumber = calculateStartPageNumber();
\r
123 if (!(currentPageGroupStartPageNumber > 0)) {
\r
124 String msg = "currentPageGroupStartPageNumber should be greater than 0. {> 0} But:";
\r
125 msg = msg + " currentPageGroupStartPageNumber=" + currentPageGroupStartPageNumber;
\r
126 throw new IllegalStateException(msg);
\r
128 int nextPageGroupStartPageNumber = currentPageGroupStartPageNumber + _pageGroupOption.getPageGroupSize();
\r
129 return (nextPageGroupStartPageNumber <= _allPageCount);
\r
132 // ===================================================================================
\r
135 protected int[] convertListToIntArray(List<Integer> ls) {
\r
136 final int[] resultArray = new int[ls.size()];
\r
137 int arrayIndex = 0;
\r
138 for (Iterator<Integer> ite = ls.iterator(); ite.hasNext(); ) {
\r
139 final Integer tmpPageNumber = (Integer)ite.next();
\r
140 resultArray[arrayIndex] = tmpPageNumber.intValue();
\r
143 return resultArray;
\r
146 protected void assertPageGroupValid() {
\r
147 if (_pageGroupOption == null) {
\r
148 String msg = "The pageGroupOption should not be null. Please invoke setPageGroupOption().";
\r
149 throw new IllegalStateException(msg);
\r
151 if (_pageGroupOption.getPageGroupSize() == 0) {
\r
152 String msg = "The pageGroupSize should be greater than 1. But the value is zero.";
\r
153 msg = msg + " pageGroupSize=" + _pageGroupOption.getPageGroupSize();
\r
154 throw new IllegalStateException(msg);
\r
156 if (_pageGroupOption.getPageGroupSize() == 1) {
\r
157 String msg = "The pageGroupSize should be greater than 1. But the value is one.";
\r
158 msg = msg + " pageGroupSize=" + _pageGroupOption.getPageGroupSize();
\r
159 throw new IllegalStateException(msg);
\r
163 // ===================================================================================
\r
167 * @return The view string of all attribute values. (NotNull)
\r
170 public String toString() {
\r
171 final StringBuilder sb = new StringBuilder();
\r
173 sb.append(" currentPageNumber=").append(_currentPageNumber);
\r
174 sb.append(" allPageCount=").append(_allPageCount);
\r
175 sb.append(" pageGroupOption=").append(_pageGroupOption);
\r
177 return sb.toString();
\r
180 // ===================================================================================
\r
183 public void setCurrentPageNumber(int currentPageNumber) {
\r
184 this._currentPageNumber = currentPageNumber;
\r
186 public void setAllPageCount(int allPageCount) {
\r
187 this._allPageCount = allPageCount;
\r
189 public void setPageGroupOption(PageGroupOption pageGroupOption) {
\r
190 this._pageGroupOption = pageGroupOption;
\r