Files
HRMS/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseReport.java
2025-07-28 13:56:49 +05:30

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;
}
}