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.
 
 
 
 

242 lines
6.6 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.model;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.bstek.ureport.build.Context;
import com.bstek.ureport.build.paging.Page;
import com.bstek.ureport.build.paging.PagingBuilder;
import com.bstek.ureport.definition.Band;
import com.bstek.ureport.definition.ConditionPropertyItem;
import com.bstek.ureport.definition.HeaderFooterDefinition;
import com.bstek.ureport.definition.Paper;
/**
* @author Jacky.gao
* @since 2016年11月1日
*/
public class Report {
private Paper paper;
private HeaderFooterDefinition header;
private HeaderFooterDefinition footer;
private Cell rootCell;
private Context context;
private List<Row> rows;
private List<Row> headerRepeatRows=new ArrayList<Row>();
private List<Row> footerRepeatRows=new ArrayList<Row>();
private List<Row> titleRows=new ArrayList<Row>();
private List<Row> summaryRows=new ArrayList<Row>();
private int repeatHeaderRowHeight=0,repeatFooterRowHeight=0,titleRowsHeight=0,summaryRowsHeight=0;
private List<Column> columns;
private List<Page> pages;
private String reportFullName;
private List<Cell> lazyComputeCells=new ArrayList<Cell>();
private Map<Row,Map<Column,Cell>> rowColCellMap=new HashMap<Row,Map<Column,Cell>>();
private Map<String,List<Cell>> cellsMap=new HashMap<String,List<Cell>>();
public void insertRow(Row row,int rowNumber){
int pos=rowNumber-1;
rows.add(pos,row);
Band band=row.getBand();
if(band==null){
return;
}
}
public void insertRows(int firstRowIndex,List<Row> insertRows){
int pos=firstRowIndex-1;
rows.addAll(pos,insertRows);
}
public void insertColumn(Column column,int columnNumber){
int pos=columnNumber-1;
columns.add(pos,column);
}
public void insertColumns(int firstColumnIndex,List<Column> insertColumns){
int pos=firstColumnIndex-1;
columns.addAll(pos, insertColumns);
}
public Row getRow(int rowNumber){
if(rowNumber>rows.size()){
return null;
}
return rows.get(rowNumber-1);
}
public Column getColumn(int columnNumber){
if(columnNumber>columns.size()){
return null;
}
return columns.get(columnNumber-1);
}
public Cell getRootCell() {
return rootCell;
}
public void setRootCell(Cell rootCell) {
this.rootCell = rootCell;
}
public boolean addCell(Cell cell){
String cellName=cell.getName();
List<Cell> cells=null;
if(cellsMap.containsKey(cellName)){
cells=cellsMap.get(cellName);
}else{
cells=new ArrayList<Cell>();
cellsMap.put(cellName, cells);
}
cells.add(cell);
Row row=cell.getRow();
Column col=cell.getColumn();
Map<Column,Cell> colMap=null;
if(rowColCellMap.containsKey(row)){
colMap=rowColCellMap.get(row);
}else{
colMap=new HashMap<Column,Cell>();
rowColCellMap.put(row, colMap);
}
colMap.put(col, cell);
return addLazyCell(cell);
}
public boolean addLazyCell(Cell cell){
List<ConditionPropertyItem> conditionPropertyItems=cell.getConditionPropertyItems();
if(conditionPropertyItems!=null && conditionPropertyItems.size()>0){
lazyComputeCells.add(cell);
return true;
}
return false;
}
public Map<Row, Map<Column, Cell>> getRowColCellMap() {
return rowColCellMap;
}
public List<Page> getPages() {
if(pages==null){
pages=PagingBuilder.buildPages(this);
}
return pages;
}
public void setPages(List<Page> pages) {
this.pages = pages;
}
public void rePaging(Paper paper){
paper.setColumnCount(this.paper.getColumnCount());
paper.setColumnEnabled(this.paper.isColumnEnabled());
paper.setFixRows(this.paper.getFixRows());
paper.setPagingMode(this.paper.getPagingMode());
setPaper(paper);
pages=PagingBuilder.buildPages(this);
}
public Context getContext() {
return context;
}
public void setContext(Context context) {
this.context = context;
}
public String getReportFullName() {
return reportFullName;
}
public void setReportFullName(String reportFullName) {
this.reportFullName = reportFullName;
}
public Paper getPaper() {
return paper;
}
public void setPaper(Paper paper) {
this.paper = paper;
}
public Map<String, List<Cell>> getCellsMap() {
return cellsMap;
}
public List<Cell> getLazyComputeCells() {
return lazyComputeCells;
}
public List<Row> getRows() {
return rows;
}
public void setRows(List<Row> rows) {
this.rows = rows;
}
public List<Column> getColumns() {
return columns;
}
public void setColumns(List<Column> columns) {
this.columns = columns;
}
public List<Row> getHeaderRepeatRows() {
return headerRepeatRows;
}
public void setHeaderRepeatRows(List<Row> headerRepeatRows) {
this.headerRepeatRows = headerRepeatRows;
}
public List<Row> getFooterRepeatRows() {
return footerRepeatRows;
}
public void setFooterRepeatRows(List<Row> footerRepeatRows) {
this.footerRepeatRows = footerRepeatRows;
}
public List<Row> getTitleRows() {
return titleRows;
}
public List<Row> getSummaryRows() {
return summaryRows;
}
public int getRepeatHeaderRowHeight() {
return repeatHeaderRowHeight;
}
public void setRepeatHeaderRowHeight(int repeatHeaderRowHeight) {
this.repeatHeaderRowHeight = repeatHeaderRowHeight;
}
public int getRepeatFooterRowHeight() {
return repeatFooterRowHeight;
}
public void setRepeatFooterRowHeight(int repeatFooterRowHeight) {
this.repeatFooterRowHeight = repeatFooterRowHeight;
}
public int getTitleRowsHeight() {
return titleRowsHeight;
}
public void setTitleRowsHeight(int titleRowsHeight) {
this.titleRowsHeight = titleRowsHeight;
}
public int getSummaryRowsHeight() {
return summaryRowsHeight;
}
public void setSummaryRowsHeight(int summaryRowsHeight) {
this.summaryRowsHeight = summaryRowsHeight;
}
public HeaderFooterDefinition getHeader() {
return header;
}
public void setHeader(HeaderFooterDefinition header) {
this.header = header;
}
public HeaderFooterDefinition getFooter() {
return footer;
}
public void setFooter(HeaderFooterDefinition footer) {
this.footer = footer;
}
}