You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.2 KiB
61 lines
2.2 KiB
/*******************************************************************************
|
|
* Copyright 2017 Bstek
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
|
* use this file except in compliance with the License. You may obtain a copy
|
|
* of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
* License for the specific language governing permissions and limitations under
|
|
* the License.
|
|
******************************************************************************/
|
|
package com.bstek.ureport.build.paging;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import com.bstek.ureport.build.BindData;
|
|
import com.bstek.ureport.build.Context;
|
|
import com.bstek.ureport.definition.PagingMode;
|
|
import com.bstek.ureport.definition.Paper;
|
|
import com.bstek.ureport.model.Cell;
|
|
import com.bstek.ureport.model.Report;
|
|
|
|
/**
|
|
* @author Jacky.gao
|
|
* @since 2017年1月17日
|
|
*/
|
|
public class PagingBuilder {
|
|
private static Map<PagingMode,Pagination> paginationMap=new HashMap<PagingMode,Pagination>();
|
|
static{
|
|
paginationMap.put(PagingMode.fitpage, new FitPagePagination());
|
|
paginationMap.put(PagingMode.fixrows, new FixRowsPagination());
|
|
}
|
|
public static List<Page> buildPages(Report report){
|
|
Paper paper = report.getPaper();
|
|
Pagination pagination=paginationMap.get(paper.getPagingMode());
|
|
List<Page> pages=pagination.doPaging(report);
|
|
computeExistPageFunctionCells(report);
|
|
return pages;
|
|
}
|
|
public static void computeExistPageFunctionCells(Report report) {
|
|
Context context=report.getContext();
|
|
List<Cell> existPageFunctionCells=context.getExistPageFunctionCells();
|
|
for(Cell cell:existPageFunctionCells){
|
|
List<BindData> dataList=context.buildCellData(cell);
|
|
if(dataList==null || dataList.size()==0){
|
|
continue;
|
|
}
|
|
BindData bindData=dataList.get(0);
|
|
cell.setData(bindData.getValue());
|
|
cell.setBindData(bindData.getDataList());
|
|
cell.doFormat();
|
|
cell.doDataWrapCompute(context);
|
|
}
|
|
}
|
|
}
|
|
|