shikeying
2024-01-11 3b67e947e36133e2a40eb2737b15ea375e157ea0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package com.walker.db.page;
 
import com.walker.infrastructure.utils.StringUtils;
 
import java.io.Serializable;
import java.util.List;
 
/**
 * UI层使用的分页对象</p>
 * @author shikeying
 *
 * @param <T>
 */
public class PagerView<T> implements Serializable{
 
    /**
     * 
     */
    private static final long serialVersionUID = -7447015048488224271L;
 
    private List<T> datas;
    
    private int currentPage = Pager.DEFAULT_PAGE_INDEX;
    
    private int pageSize = Pager.DEFAULT_PAGE_SIZE;
    
    private int pageCount = Pager.DEFAULT_PAGE_COUNT;
    
    private long totalRows = Pager.DEFAULT_TOTAL_ROWS;
    
    /* 点击分页按钮执行的JS方法 */
    private String jsMethod;
    
    /* 本次分页的索引值,即:本页第一条记录索引值,从0开始计算 */
    private long index = 0;
    
    public PagerView(Pager pager, String jsMethod){
        if(StringUtils.isNotEmpty(jsMethod))
            this.jsMethod = jsMethod;
        setPager(pager);
    }
    
    public PagerView(String jsMethod){
//        if(currentPage > 0 )
//            this.currentPage = currentPage;
        if(StringUtils.isNotEmpty(jsMethod))
            this.jsMethod = jsMethod;
    }
    
    @SuppressWarnings("unchecked")
    public void setPager(Pager pager){
        if(pager == null)
            throw new IllegalArgumentException("Please use subclass of '" + Pager.class.getName() + "'.");
        
        setCurrentPage(pager.getPageIndex());
        setTotalRows(pager.getTotalRows());
        setPageSize(pager.getPageSize());
        setPageCount(pager.getPageCount());
        setIndex(pager.getFirstRowIndexInPage());
        
        if(pager instanceof GenericPager<?>){
            GenericPager<T> genericPager = (GenericPager<T>)pager;
            setDatas(genericPager.getDatas());
        } 
//        else if(pager instanceof MapPager){
//            MapPager mapPager = (MapPager)pager;
//            setDatas(mapPager.getDatas());
//        }
        else
            throw new IllegalArgumentException("unknown Pager: " + pager.getClass().getName());
    }
    
    public List<T> getDatas() {
        return datas;
    }
 
    public int getCurrentPage() {
        return currentPage;
    }
 
    public int getPageSize() {
        return pageSize;
    }
 
    public int getPageCount() {
        return pageCount;
    }
 
    public long getTotalRows() {
        return totalRows;
    }
 
    public String getJsMethod() {
        return jsMethod;
    }
    
    /**
     * 返回当前页第一条记录的索引值
     * @return
     */
    public long getIndex(){
        return index;
    }
 
    private void setCurrentPage(int currentPage){
        if(currentPage >= Pager.DEFAULT_PAGE_INDEX)
            this.currentPage = currentPage;
        else
            throw new IllegalArgumentException("currentPage should be >= " + Pager.DEFAULT_PAGE_INDEX);
    }
    
    private void setTotalRows(long totalRows){
        if(totalRows >= 0){
            this.totalRows = totalRows;
        } else
            throw new IllegalArgumentException("totalRows should be more than or equals '0'.");
    }
    
    private void setPageSize(int pageSize){
        if(pageSize >= Pager.DEFAULT_PAGE_SIZE){
            this.pageSize = pageSize;
        } else
            throw new IllegalArgumentException("pageSize should be >= " + Pager.DEFAULT_PAGE_SIZE);
    }
    private void setPageCount(int pageCount){
        if(pageCount >= Pager.DEFAULT_PAGE_COUNT){
            this.pageCount = pageCount;
        } else
            throw new IllegalArgumentException("pageCount should be >= " + Pager.DEFAULT_PAGE_COUNT);
    }
    
    private void setDatas(List<T> datas){
        this.datas = datas;
    }
    
    private void setIndex(long index){
        if(index > 0){
            this.index = index;
        }
    }
}