OSDN Git Service

"https://svn.sourceforge.jp/svnroot/ea2ddl" にプロジェクト "ea2ddl-dao" を共用
[ea2ddl/ea2ddl.git] / ea2ddl-dao / src / main / java / jp / sourceforge / ea2ddl / dao / allcommon / cbean / pagenavi / group / PageGroupBean.java
1 package jp.sourceforge.ea2ddl.dao.allcommon.cbean.pagenavi.group;\r
2 \r
3 import java.util.List;\r
4 import java.util.ArrayList;\r
5 import java.util.Iterator;\r
6 \r
7 import jp.sourceforge.ea2ddl.dao.allcommon.cbean.pagenavi.PageNumberLink;\r
8 import jp.sourceforge.ea2ddl.dao.allcommon.cbean.pagenavi.PageNumberLinkSetupper;\r
9 \r
10 /**\r
11  * The bean of page group.\r
12  * @author DBFlute(AutoGenerator)\r
13  */\r
14 public class PageGroupBean implements java.io.Serializable {\r
15 \r
16     // ===================================================================================\r
17     //                                                                          Definition\r
18     //                                                                          ==========\r
19     /** Serial version UID. (Default) */\r
20     private static final long serialVersionUID = 1L;\r
21 \r
22     // ===================================================================================\r
23     //                                                                           Attribute\r
24     //                                                                           =========\r
25     protected int _currentPageNumber;\r
26     protected int _allPageCount;\r
27     protected PageGroupOption _pageGroupOption;\r
28 \r
29     // ===================================================================================\r
30     //                                                                                Main\r
31     //                                                                                ====\r
32     /**\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
37      */\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
43         }\r
44         return pageNumberLinkList;\r
45     }\r
46 \r
47     /**\r
48      * Calculate start page number.\r
49      * @return Start page number.\r
50      */\r
51     public int calculateStartPageNumber() {\r
52         assertPageGroupValid();\r
53         final int pageGroupSize = _pageGroupOption.getPageGroupSize();\r
54         final int currentPageNumber = _currentPageNumber;\r
55 \r
56         int currentPageGroupNumber = (currentPageNumber / pageGroupSize);\r
57         if ((currentPageNumber % pageGroupSize) == 0)\r
58         {\r
59             currentPageGroupNumber--;\r
60         }\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
67         }\r
68         return currentPageGroupStartPageNumber;\r
69     }\r
70 \r
71     /**\r
72      * Create the list of page number.\r
73      * @return The list of page number. (NotNull)\r
74      */\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
84         }\r
85         final int nextPageGroupStartPageNumber = currentPageGroupStartPageNumber + pageGroupSize;\r
86 \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
90         }\r
91         return resultList;\r
92     }\r
93 \r
94     /**\r
95      * Create the array of page number.\r
96      * @return The array of page number. (NotNUll)\r
97      */\r
98     public int[] createPageNumberArray() {\r
99         assertPageGroupValid();\r
100         return convertListToIntArray(createPageNumberList());\r
101     }\r
102 \r
103     /**\r
104      * Is existing previous page-group?\r
105      * Using values are currentPageNumber and pageGroupSize.\r
106      * \r
107      * @return Determination.\r
108      */\r
109     public boolean isExistPrePageGroup() {\r
110         assertPageGroupValid();\r
111         return (_currentPageNumber > _pageGroupOption.getPageGroupSize());\r
112     }\r
113 \r
114     /**\r
115      * Is existing next page-group?\r
116      * Using values are currentPageNumber and pageGroupSize and allPageCount.\r
117      * \r
118      * @return Determination.\r
119      */\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
127         }\r
128         int nextPageGroupStartPageNumber = currentPageGroupStartPageNumber + _pageGroupOption.getPageGroupSize();\r
129         return (nextPageGroupStartPageNumber <= _allPageCount);\r
130     }\r
131 \r
132     // ===================================================================================\r
133     //                                                                       Assist Helper\r
134     //                                                                       =============\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
141             arrayIndex++;\r
142         }\r
143         return resultArray;\r
144     }\r
145 \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
150         }\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
155         }\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
160         }\r
161     }\r
162 \r
163     // ===================================================================================\r
164     //                                                                      Basic Override\r
165     //                                                                      ==============\r
166     /**\r
167      * @return The view string of all attribute values. (NotNull)\r
168      */\r
169         @Override\r
170     public String toString() {\r
171         final StringBuilder sb = new StringBuilder();\r
172 \r
173         sb.append(" currentPageNumber=").append(_currentPageNumber);\r
174         sb.append(" allPageCount=").append(_allPageCount);\r
175         sb.append(" pageGroupOption=").append(_pageGroupOption);\r
176 \r
177         return sb.toString();\r
178     }\r
179 \r
180     // ===================================================================================\r
181     //                                                                            Accessor\r
182     //                                                                            ========\r
183     public void setCurrentPageNumber(int currentPageNumber) {\r
184         this._currentPageNumber = currentPageNumber;\r
185     }\r
186     public void setAllPageCount(int allPageCount) {\r
187         this._allPageCount = allPageCount;\r
188     }\r
189     public void setPageGroupOption(PageGroupOption pageGroupOption) {\r
190         this._pageGroupOption = pageGroupOption;\r
191     }\r
192 }\r