416 lines
11 KiB
Java
416 lines
11 KiB
Java
package net.sf.jasperreports.engine.base;
|
|
|
|
import java.io.Serializable;
|
|
import java.util.Arrays;
|
|
import java.util.HashSet;
|
|
import java.util.Set;
|
|
import net.sf.jasperreports.engine.JRBand;
|
|
import net.sf.jasperreports.engine.JRDataset;
|
|
import net.sf.jasperreports.engine.JRDefaultStyleProvider;
|
|
import net.sf.jasperreports.engine.JRExpressionCollector;
|
|
import net.sf.jasperreports.engine.JRField;
|
|
import net.sf.jasperreports.engine.JRGroup;
|
|
import net.sf.jasperreports.engine.JRParameter;
|
|
import net.sf.jasperreports.engine.JRPropertiesHolder;
|
|
import net.sf.jasperreports.engine.JRPropertiesMap;
|
|
import net.sf.jasperreports.engine.JRQuery;
|
|
import net.sf.jasperreports.engine.JRReport;
|
|
import net.sf.jasperreports.engine.JRReportFont;
|
|
import net.sf.jasperreports.engine.JRReportTemplate;
|
|
import net.sf.jasperreports.engine.JRSortField;
|
|
import net.sf.jasperreports.engine.JRStyle;
|
|
import net.sf.jasperreports.engine.JRVariable;
|
|
import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport;
|
|
import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport;
|
|
|
|
public class JRBaseReport implements JRReport, Serializable, JRChangeEventsSupport {
|
|
private static final long serialVersionUID = 10200L;
|
|
|
|
public static final String PROPERTY_WHEN_NO_DATA_TYPE = "whenNoDataType";
|
|
|
|
protected String name = null;
|
|
|
|
protected String language = "java";
|
|
|
|
protected int columnCount = 1;
|
|
|
|
protected byte printOrder = 1;
|
|
|
|
protected int pageWidth = 595;
|
|
|
|
protected int pageHeight = 842;
|
|
|
|
protected byte orientation = 1;
|
|
|
|
protected byte whenNoDataType = 1;
|
|
|
|
protected int columnWidth = 555;
|
|
|
|
protected int columnSpacing = 0;
|
|
|
|
protected int leftMargin = 20;
|
|
|
|
protected int rightMargin = 20;
|
|
|
|
protected int topMargin = 30;
|
|
|
|
protected int bottomMargin = 30;
|
|
|
|
protected boolean isTitleNewPage = false;
|
|
|
|
protected boolean isSummaryNewPage = false;
|
|
|
|
protected boolean isFloatColumnFooter = false;
|
|
|
|
protected boolean ignorePagination = false;
|
|
|
|
protected String formatFactoryClass = null;
|
|
|
|
protected Set importsSet = null;
|
|
|
|
protected JRReportTemplate[] templates;
|
|
|
|
protected JRReportFont defaultFont = null;
|
|
|
|
protected JRReportFont[] fonts = null;
|
|
|
|
protected JRStyle defaultStyle = null;
|
|
|
|
protected JRStyle[] styles = null;
|
|
|
|
protected JRDataset mainDataset;
|
|
|
|
protected JRDataset[] datasets;
|
|
|
|
protected JRBand background = null;
|
|
|
|
protected JRBand title = null;
|
|
|
|
protected JRBand pageHeader = null;
|
|
|
|
protected JRBand columnHeader = null;
|
|
|
|
protected JRBand detail = null;
|
|
|
|
protected JRBand columnFooter = null;
|
|
|
|
protected JRBand pageFooter = null;
|
|
|
|
protected JRBand lastPageFooter = null;
|
|
|
|
protected JRBand summary = null;
|
|
|
|
protected JRBand noData = null;
|
|
|
|
private transient JRPropertyChangeSupport eventSupport;
|
|
|
|
public JRBaseReport() {}
|
|
|
|
public JRBaseReport(JRReport report, JRExpressionCollector expressionCollector) {
|
|
this.name = report.getName();
|
|
this.language = report.getLanguage();
|
|
this.columnCount = report.getColumnCount();
|
|
this.printOrder = report.getPrintOrder();
|
|
this.pageWidth = report.getPageWidth();
|
|
this.pageHeight = report.getPageHeight();
|
|
this.orientation = report.getOrientation();
|
|
this.whenNoDataType = report.getWhenNoDataType();
|
|
this.columnWidth = report.getColumnWidth();
|
|
this.columnSpacing = report.getColumnSpacing();
|
|
this.leftMargin = report.getLeftMargin();
|
|
this.rightMargin = report.getRightMargin();
|
|
this.topMargin = report.getTopMargin();
|
|
this.bottomMargin = report.getBottomMargin();
|
|
this.isTitleNewPage = report.isTitleNewPage();
|
|
this.isSummaryNewPage = report.isSummaryNewPage();
|
|
this.isFloatColumnFooter = report.isFloatColumnFooter();
|
|
this.ignorePagination = report.isIgnorePagination();
|
|
this.formatFactoryClass = report.getFormatFactoryClass();
|
|
String[] imports = report.getImports();
|
|
if (imports != null && imports.length > 0) {
|
|
this.importsSet = new HashSet(imports.length);
|
|
this.importsSet.addAll(Arrays.asList(imports));
|
|
}
|
|
JRBaseObjectFactory factory = new JRBaseObjectFactory((JRDefaultStyleProvider)this, expressionCollector);
|
|
copyTemplates(report, factory);
|
|
this.defaultFont = factory.getReportFont(report.getDefaultFont());
|
|
JRReportFont[] jrFonts = report.getFonts();
|
|
if (jrFonts != null && jrFonts.length > 0) {
|
|
this.fonts = new JRReportFont[jrFonts.length];
|
|
for (int i = 0; i < this.fonts.length; i++)
|
|
this.fonts[i] = factory.getReportFont(jrFonts[i]);
|
|
}
|
|
this.defaultStyle = factory.getStyle(report.getDefaultStyle());
|
|
JRStyle[] jrStyles = report.getStyles();
|
|
if (jrStyles != null && jrStyles.length > 0) {
|
|
this.styles = new JRStyle[jrStyles.length];
|
|
for (int i = 0; i < this.styles.length; i++)
|
|
this.styles[i] = factory.getStyle(jrStyles[i]);
|
|
}
|
|
this.mainDataset = factory.getDataset(report.getMainDataset());
|
|
JRDataset[] datasetArray = report.getDatasets();
|
|
if (datasetArray != null && datasetArray.length > 0) {
|
|
this.datasets = new JRDataset[datasetArray.length];
|
|
for (int i = 0; i < this.datasets.length; i++)
|
|
this.datasets[i] = factory.getDataset(datasetArray[i]);
|
|
}
|
|
this.background = factory.getBand(report.getBackground());
|
|
this.title = factory.getBand(report.getTitle());
|
|
this.pageHeader = factory.getBand(report.getPageHeader());
|
|
this.columnHeader = factory.getBand(report.getColumnHeader());
|
|
this.detail = factory.getBand(report.getDetail());
|
|
this.columnFooter = factory.getBand(report.getColumnFooter());
|
|
this.pageFooter = factory.getBand(report.getPageFooter());
|
|
this.lastPageFooter = factory.getBand(report.getLastPageFooter());
|
|
this.summary = factory.getBand(report.getSummary());
|
|
this.noData = factory.getBand(report.getNoData());
|
|
}
|
|
|
|
protected void copyTemplates(JRReport report, JRBaseObjectFactory factory) {
|
|
JRReportTemplate[] reportTemplates = report.getTemplates();
|
|
if (reportTemplates == null || reportTemplates.length == 0) {
|
|
this.templates = null;
|
|
} else {
|
|
this.templates = new JRReportTemplate[reportTemplates.length];
|
|
for (int i = 0; i < reportTemplates.length; i++)
|
|
this.templates[i] = factory.getReportTemplate(reportTemplates[i]);
|
|
}
|
|
}
|
|
|
|
public JRBaseReport(JRReport report) {
|
|
this(report, null);
|
|
}
|
|
|
|
public String getName() {
|
|
return this.name;
|
|
}
|
|
|
|
public String getLanguage() {
|
|
return this.language;
|
|
}
|
|
|
|
public int getColumnCount() {
|
|
return this.columnCount;
|
|
}
|
|
|
|
public byte getPrintOrder() {
|
|
return this.printOrder;
|
|
}
|
|
|
|
public int getPageWidth() {
|
|
return this.pageWidth;
|
|
}
|
|
|
|
public int getPageHeight() {
|
|
return this.pageHeight;
|
|
}
|
|
|
|
public byte getOrientation() {
|
|
return this.orientation;
|
|
}
|
|
|
|
public byte getWhenNoDataType() {
|
|
return this.whenNoDataType;
|
|
}
|
|
|
|
public void setWhenNoDataType(byte whenNoDataType) {
|
|
byte old = getWhenNoDataType();
|
|
this.whenNoDataType = whenNoDataType;
|
|
getEventSupport().firePropertyChange("whenNoDataType", old, getWhenNoDataType());
|
|
}
|
|
|
|
public int getColumnWidth() {
|
|
return this.columnWidth;
|
|
}
|
|
|
|
public int getColumnSpacing() {
|
|
return this.columnSpacing;
|
|
}
|
|
|
|
public int getLeftMargin() {
|
|
return this.leftMargin;
|
|
}
|
|
|
|
public int getRightMargin() {
|
|
return this.rightMargin;
|
|
}
|
|
|
|
public int getTopMargin() {
|
|
return this.topMargin;
|
|
}
|
|
|
|
public int getBottomMargin() {
|
|
return this.bottomMargin;
|
|
}
|
|
|
|
public boolean isTitleNewPage() {
|
|
return this.isTitleNewPage;
|
|
}
|
|
|
|
public boolean isSummaryNewPage() {
|
|
return this.isSummaryNewPage;
|
|
}
|
|
|
|
public boolean isFloatColumnFooter() {
|
|
return this.isFloatColumnFooter;
|
|
}
|
|
|
|
public String getScriptletClass() {
|
|
return this.mainDataset.getScriptletClass();
|
|
}
|
|
|
|
public String getFormatFactoryClass() {
|
|
return this.formatFactoryClass;
|
|
}
|
|
|
|
public String getResourceBundle() {
|
|
return this.mainDataset.getResourceBundle();
|
|
}
|
|
|
|
public String[] getPropertyNames() {
|
|
return this.mainDataset.getPropertiesMap().getPropertyNames();
|
|
}
|
|
|
|
public String getProperty(String propName) {
|
|
return this.mainDataset.getPropertiesMap().getProperty(propName);
|
|
}
|
|
|
|
public void setProperty(String propName, String value) {
|
|
this.mainDataset.getPropertiesMap().setProperty(propName, value);
|
|
}
|
|
|
|
public void removeProperty(String propName) {
|
|
this.mainDataset.getPropertiesMap().removeProperty(propName);
|
|
}
|
|
|
|
public String[] getImports() {
|
|
if (this.importsSet != null)
|
|
return (String[])this.importsSet.toArray((Object[])new String[this.importsSet.size()]);
|
|
return null;
|
|
}
|
|
|
|
public JRReportFont getDefaultFont() {
|
|
return this.defaultFont;
|
|
}
|
|
|
|
public JRReportFont[] getFonts() {
|
|
return this.fonts;
|
|
}
|
|
|
|
public JRStyle getDefaultStyle() {
|
|
return this.defaultStyle;
|
|
}
|
|
|
|
public JRStyle[] getStyles() {
|
|
return this.styles;
|
|
}
|
|
|
|
public JRParameter[] getParameters() {
|
|
return this.mainDataset.getParameters();
|
|
}
|
|
|
|
public JRQuery getQuery() {
|
|
return this.mainDataset.getQuery();
|
|
}
|
|
|
|
public JRField[] getFields() {
|
|
return this.mainDataset.getFields();
|
|
}
|
|
|
|
public JRSortField[] getSortFields() {
|
|
return this.mainDataset.getSortFields();
|
|
}
|
|
|
|
public JRVariable[] getVariables() {
|
|
return this.mainDataset.getVariables();
|
|
}
|
|
|
|
public JRGroup[] getGroups() {
|
|
return this.mainDataset.getGroups();
|
|
}
|
|
|
|
public JRBand getBackground() {
|
|
return this.background;
|
|
}
|
|
|
|
public JRBand getTitle() {
|
|
return this.title;
|
|
}
|
|
|
|
public JRBand getPageHeader() {
|
|
return this.pageHeader;
|
|
}
|
|
|
|
public JRBand getColumnHeader() {
|
|
return this.columnHeader;
|
|
}
|
|
|
|
public JRBand getDetail() {
|
|
return this.detail;
|
|
}
|
|
|
|
public JRBand getColumnFooter() {
|
|
return this.columnFooter;
|
|
}
|
|
|
|
public JRBand getPageFooter() {
|
|
return this.pageFooter;
|
|
}
|
|
|
|
public JRBand getLastPageFooter() {
|
|
return this.lastPageFooter;
|
|
}
|
|
|
|
public JRBand getSummary() {
|
|
return this.summary;
|
|
}
|
|
|
|
public byte getWhenResourceMissingType() {
|
|
return this.mainDataset.getWhenResourceMissingType();
|
|
}
|
|
|
|
public void setWhenResourceMissingType(byte whenResourceMissingType) {
|
|
this.mainDataset.setWhenResourceMissingType(whenResourceMissingType);
|
|
}
|
|
|
|
public JRDataset getMainDataset() {
|
|
return this.mainDataset;
|
|
}
|
|
|
|
public JRDataset[] getDatasets() {
|
|
return this.datasets;
|
|
}
|
|
|
|
public boolean isIgnorePagination() {
|
|
return this.ignorePagination;
|
|
}
|
|
|
|
public boolean hasProperties() {
|
|
return this.mainDataset.hasProperties();
|
|
}
|
|
|
|
public JRPropertiesMap getPropertiesMap() {
|
|
return this.mainDataset.getPropertiesMap();
|
|
}
|
|
|
|
public JRPropertiesHolder getParentProperties() {
|
|
return null;
|
|
}
|
|
|
|
public JRReportTemplate[] getTemplates() {
|
|
return this.templates;
|
|
}
|
|
|
|
public JRBand getNoData() {
|
|
return this.noData;
|
|
}
|
|
|
|
public JRPropertyChangeSupport getEventSupport() {
|
|
synchronized (this) {
|
|
if (this.eventSupport == null)
|
|
this.eventSupport = new JRPropertyChangeSupport(this);
|
|
}
|
|
return this.eventSupport;
|
|
}
|
|
}
|