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

634 lines
20 KiB
Java

package net.sf.jasperreports.engine.design;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import net.sf.jasperreports.crosstabs.JRCrosstab;
import net.sf.jasperreports.crosstabs.design.JRDesignCrosstab;
import net.sf.jasperreports.engine.JRBand;
import net.sf.jasperreports.engine.JRDataset;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExpression;
import net.sf.jasperreports.engine.JRExpressionCollector;
import net.sf.jasperreports.engine.JRField;
import net.sf.jasperreports.engine.JRGroup;
import net.sf.jasperreports.engine.JROrigin;
import net.sf.jasperreports.engine.JRParameter;
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.JRVisitor;
import net.sf.jasperreports.engine.base.JRBaseReport;
import net.sf.jasperreports.engine.design.events.PropagationChangeListener;
import net.sf.jasperreports.engine.util.JRElementsVisitor;
import net.sf.jasperreports.engine.util.JRVisitorSupport;
public class JasperDesign extends JRBaseReport {
private static final long serialVersionUID = 10200L;
public static final String PROPERTY_BACKGROUND = "background";
public static final String PROPERTY_BOTTOM_MARGIN = "bottomMargin";
public static final String PROPERTY_COLUMN_COUNT = "columnCount";
public static final String PROPERTY_COLUMN_FOOTER = "columnFooter";
public static final String PROPERTY_COLUMN_HEADER = "columnHeader";
public static final String PROPERTY_COLUMN_SPACING = "columnSpacing";
public static final String PROPERTY_COLUMN_WIDTH = "columnWidth";
public static final String PROPERTY_DATASETS = "datasets";
public static final String PROPERTY_DEFAULT_FONT = "defaultFont";
public static final String PROPERTY_DEFAULT_STLYE = "defaultStyle";
public static final String PROPERTY_DETAIL = "detail";
public static final String PROPERTY_FLOAT_COLUMN_FOOTER = "floatColumnFooter";
public static final String PROPERTY_FONTS = "fonts";
public static final String PROPERTY_FORMAT_FACTORY_CLASS = "formatFactoryClass";
public static final String PROPERTY_IGNORE_PAGINATION = "ignorePagination";
public static final String PROPERTY_IMPORTS = "imports";
public static final String PROPERTY_LANGUAGE = "language";
public static final String PROPERTY_LAST_PAGE_FOOTER = "lastPageFooter";
public static final String PROPERTY_LEFT_MARGIN = "leftMargin";
public static final String PROPERTY_MAIN_DATASET = "mainDataset";
public static final String PROPERTY_NAME = "name";
public static final String PROPERTY_NO_DATA = "noData";
public static final String PROPERTY_ORIENTATION = "orientation";
public static final String PROPERTY_PAGE_FOOTER = "pageFooter";
public static final String PROPERTY_PAGE_HEADER = "pageHeader";
public static final String PROPERTY_PAGE_HEIGHT = "pageHeight";
public static final String PROPERTY_PAGE_WIDTH = "pageWidth";
public static final String PROPERTY_PRINT_ORDER = "printOrder";
public static final String PROPERTY_RIGHT_MARGIN = "rightMargin";
public static final String PROPERTY_STYLES = "styles";
public static final String PROPERTY_SUMMARY = "summary";
public static final String PROPERTY_SUMMARY_NEW_PAGE = "summaryNewPage";
public static final String PROPERTY_TEMPLATES = "templates";
public static final String PROPERTY_TITLE = "title";
public static final String PROPERTY_TITLE_NEW_PAGE = "titleNewPage";
public static final String PROPERTY_TOP_MARGIN = "topMargin";
private List templateList = new ArrayList();
private Map fontsMap = new HashMap();
private List fontsList = new ArrayList();
private Map stylesMap = new HashMap();
private List stylesList = new ArrayList();
private JRDesignDataset mainDesignDataset;
private Map datasetMap = new HashMap();
private List datasetList = new ArrayList();
public JasperDesign() {
setMainDataset(new JRDesignDataset(true));
}
public void setName(String name) {
Object old = this.name;
this.name = name;
this.mainDesignDataset.setName(name);
getEventSupport().firePropertyChange("name", old, this.name);
}
public void setLanguage(String language) {
Object old = this.language;
this.language = language;
getEventSupport().firePropertyChange("language", old, this.language);
}
public void setColumnCount(int columnCount) {
int old = this.columnCount;
this.columnCount = columnCount;
getEventSupport().firePropertyChange("columnCount", old, this.columnCount);
}
public void setPrintOrder(byte printOrder) {
int old = this.printOrder;
this.printOrder = printOrder;
getEventSupport().firePropertyChange("printOrder", old, this.printOrder);
}
public void setPageWidth(int pageWidth) {
int old = this.pageWidth;
this.pageWidth = pageWidth;
getEventSupport().firePropertyChange("pageWidth", old, this.pageWidth);
}
public void setPageHeight(int pageHeight) {
int old = this.pageHeight;
this.pageHeight = pageHeight;
getEventSupport().firePropertyChange("pageHeight", old, this.pageHeight);
}
public void setOrientation(byte orientation) {
int old = this.orientation;
this.orientation = orientation;
getEventSupport().firePropertyChange("orientation", old, this.orientation);
}
public void setColumnWidth(int columnWidth) {
int old = columnWidth;
this.columnWidth = columnWidth;
getEventSupport().firePropertyChange("columnWidth", old, this.columnWidth);
}
public void setColumnSpacing(int columnSpacing) {
int old = this.columnSpacing;
this.columnSpacing = columnSpacing;
getEventSupport().firePropertyChange("columnSpacing", old, this.columnSpacing);
}
public void setLeftMargin(int leftMargin) {
int old = this.leftMargin;
this.leftMargin = leftMargin;
getEventSupport().firePropertyChange("leftMargin", old, this.leftMargin);
}
public void setRightMargin(int rightMargin) {
int old = this.rightMargin;
this.rightMargin = rightMargin;
getEventSupport().firePropertyChange("rightMargin", old, this.rightMargin);
}
public void setTopMargin(int topMargin) {
int old = this.topMargin;
this.topMargin = topMargin;
getEventSupport().firePropertyChange("topMargin", old, this.topMargin);
}
public void setBottomMargin(int bottomMargin) {
int old = this.bottomMargin;
this.bottomMargin = bottomMargin;
getEventSupport().firePropertyChange("bottomMargin", old, this.bottomMargin);
}
public void setBackground(JRBand background) {
Object old = this.background;
this.background = background;
setBandOrigin(this.background, (byte)1);
getEventSupport().firePropertyChange("background", old, this.background);
}
public void setTitle(JRBand title) {
Object old = this.title;
this.title = title;
setBandOrigin(this.title, (byte)2);
getEventSupport().firePropertyChange("title", old, this.title);
}
public void setTitleNewPage(boolean isTitleNewPage) {
boolean old = this.isTitleNewPage;
this.isTitleNewPage = isTitleNewPage;
getEventSupport().firePropertyChange("titleNewPage", old, this.isTitleNewPage);
}
public void setSummary(JRBand summary) {
Object old = this.summary;
this.summary = summary;
setBandOrigin(this.summary, (byte)11);
getEventSupport().firePropertyChange("summary", old, this.summary);
}
public void setNoData(JRBand noData) {
Object old = this.noData;
this.noData = noData;
setBandOrigin(this.noData, (byte)12);
getEventSupport().firePropertyChange("noData", old, this.noData);
}
public void setSummaryNewPage(boolean isSummaryNewPage) {
boolean old = this.isSummaryNewPage;
this.isSummaryNewPage = isSummaryNewPage;
getEventSupport().firePropertyChange("summaryNewPage", old, this.isSummaryNewPage);
}
public void setFloatColumnFooter(boolean isFloatColumnFooter) {
boolean old = this.isFloatColumnFooter;
this.isFloatColumnFooter = isFloatColumnFooter;
getEventSupport().firePropertyChange("floatColumnFooter", old, this.isFloatColumnFooter);
}
public void setPageHeader(JRBand pageHeader) {
Object old = this.pageHeader;
this.pageHeader = pageHeader;
setBandOrigin(this.pageHeader, (byte)3);
getEventSupport().firePropertyChange("pageHeader", old, this.pageHeader);
}
public void setPageFooter(JRBand pageFooter) {
Object old = this.pageFooter;
this.pageFooter = pageFooter;
setBandOrigin(this.pageFooter, (byte)9);
getEventSupport().firePropertyChange("pageFooter", old, this.pageFooter);
}
public void setLastPageFooter(JRBand lastPageFooter) {
Object old = this.lastPageFooter;
this.lastPageFooter = lastPageFooter;
setBandOrigin(this.lastPageFooter, (byte)10);
getEventSupport().firePropertyChange("lastPageFooter", old, this.lastPageFooter);
}
public void setColumnHeader(JRBand columnHeader) {
Object old = this.columnHeader;
this.columnHeader = columnHeader;
setBandOrigin(this.columnHeader, (byte)4);
getEventSupport().firePropertyChange("columnHeader", old, this.columnHeader);
}
public void setColumnFooter(JRBand columnFooter) {
Object old = this.columnFooter;
this.columnFooter = columnFooter;
setBandOrigin(this.columnFooter, (byte)8);
getEventSupport().firePropertyChange("columnFooter", old, this.columnFooter);
}
public void setDetail(JRBand detail) {
Object old = this.detail;
this.detail = detail;
setBandOrigin(this.detail, (byte)6);
getEventSupport().firePropertyChange("detail", old, this.detail);
}
public void setScriptletClass(String scriptletClass) {
this.mainDesignDataset.setScriptletClass(scriptletClass);
}
public void setFormatFactoryClass(String formatFactoryClass) {
Object old = this.formatFactoryClass;
this.formatFactoryClass = formatFactoryClass;
getEventSupport().firePropertyChange("formatFactoryClass", old, this.formatFactoryClass);
}
public void setResourceBundle(String resourceBundle) {
this.mainDesignDataset.setResourceBundle(resourceBundle);
}
public void addImport(String value) {
if (this.importsSet == null)
this.importsSet = new HashSet();
if (this.importsSet.add(value))
getEventSupport().fireCollectionElementAddedEvent("imports", value, this.importsSet.size() - 1);
}
public void removeImport(String value) {
if (this.importsSet != null)
if (this.importsSet.remove(value))
getEventSupport().fireCollectionElementRemovedEvent("imports", value, -1);
}
public void setDefaultFont(JRReportFont font) {
Object old = this.defaultFont;
this.defaultFont = font;
getEventSupport().firePropertyChange("defaultFont", old, this.defaultFont);
}
public JRReportFont[] getFonts() {
JRReportFont[] fontsArray = new JRReportFont[this.fontsList.size()];
this.fontsList.toArray((Object[])fontsArray);
return fontsArray;
}
public List getFontsList() {
return this.fontsList;
}
public Map getFontsMap() {
return this.fontsMap;
}
public void addFont(JRReportFont reportFont) throws JRException {
if (this.fontsMap.containsKey(reportFont.getName()))
throw new JRException("Duplicate declaration of report font : " + reportFont.getName());
this.fontsList.add(reportFont);
this.fontsMap.put(reportFont.getName(), reportFont);
if (reportFont.isDefault())
setDefaultFont(reportFont);
getEventSupport().fireCollectionElementAddedEvent("fonts", reportFont, this.fontsList.size() - 1);
}
public JRReportFont removeFont(String propName) {
return removeFont((JRReportFont)this.fontsMap.get(propName));
}
public JRReportFont removeFont(JRReportFont reportFont) {
if (reportFont != null) {
if (reportFont.isDefault())
setDefaultFont((JRReportFont)null);
int idx = this.fontsList.indexOf(reportFont);
if (idx >= 0) {
this.fontsList.remove(idx);
this.fontsMap.remove(reportFont.getName());
getEventSupport().fireCollectionElementRemovedEvent("fonts", reportFont, idx);
}
}
return reportFont;
}
public void setDefaultStyle(JRStyle style) {
Object old = this.defaultStyle;
this.defaultStyle = style;
getEventSupport().firePropertyChange("defaultStyle", old, this.defaultStyle);
}
public JRStyle[] getStyles() {
JRStyle[] stylesArray = new JRStyle[this.stylesList.size()];
this.stylesList.toArray((Object[])stylesArray);
return stylesArray;
}
public List getStylesList() {
return this.stylesList;
}
public Map getStylesMap() {
return this.stylesMap;
}
public void addStyle(JRStyle style) throws JRException {
if (this.stylesMap.containsKey(style.getName()))
throw new JRException("Duplicate declaration of report style : " + style.getName());
this.stylesList.add(style);
this.stylesMap.put(style.getName(), style);
if (style.isDefault())
setDefaultStyle(style);
getEventSupport().fireCollectionElementAddedEvent("styles", style, this.stylesList.size() - 1);
}
public JRStyle removeStyle(String styleName) {
return removeStyle((JRStyle)this.stylesMap.get(styleName));
}
public JRStyle removeStyle(JRStyle style) {
if (style != null) {
if (style.isDefault())
setDefaultStyle((JRStyle)null);
int idx = this.stylesList.indexOf(style);
if (idx >= 0) {
this.stylesList.remove(idx);
this.stylesMap.remove(style.getName());
getEventSupport().fireCollectionElementRemovedEvent("styles", style, idx);
}
}
return style;
}
public List getParametersList() {
return this.mainDesignDataset.getParametersList();
}
public Map getParametersMap() {
return this.mainDesignDataset.getParametersMap();
}
public void addParameter(JRParameter parameter) throws JRException {
this.mainDesignDataset.addParameter(parameter);
}
public JRParameter removeParameter(String parameterName) {
return this.mainDesignDataset.removeParameter(parameterName);
}
public JRParameter removeParameter(JRParameter parameter) {
return this.mainDesignDataset.removeParameter(parameter);
}
public void setQuery(JRDesignQuery query) {
this.mainDesignDataset.setQuery(query);
}
public List getFieldsList() {
return this.mainDesignDataset.getFieldsList();
}
public Map getFieldsMap() {
return this.mainDesignDataset.getFieldsMap();
}
public void addField(JRField field) throws JRException {
this.mainDesignDataset.addField(field);
}
public JRField removeField(String fieldName) {
return this.mainDesignDataset.removeField(fieldName);
}
public JRField removeField(JRField field) {
return this.mainDesignDataset.removeField(field);
}
public List getSortFieldsList() {
return this.mainDesignDataset.getSortFieldsList();
}
public void addSortField(JRSortField sortField) throws JRException {
this.mainDesignDataset.addSortField(sortField);
}
public JRSortField removeSortField(String fieldName) {
return this.mainDesignDataset.removeSortField(fieldName);
}
public JRSortField removeSortField(JRSortField sortField) {
return this.mainDesignDataset.removeSortField(sortField);
}
public List getVariablesList() {
return this.mainDesignDataset.getVariablesList();
}
public Map getVariablesMap() {
return this.mainDesignDataset.getVariablesMap();
}
public void addVariable(JRDesignVariable variable) throws JRException {
this.mainDesignDataset.addVariable(variable);
}
public JRVariable removeVariable(String variableName) {
return this.mainDesignDataset.removeVariable(variableName);
}
public JRVariable removeVariable(JRVariable variable) {
return this.mainDesignDataset.removeVariable(variable);
}
public List getGroupsList() {
return this.mainDesignDataset.getGroupsList();
}
public Map getGroupsMap() {
return this.mainDesignDataset.getGroupsMap();
}
public void addGroup(JRDesignGroup group) throws JRException {
this.mainDesignDataset.addGroup(group);
}
public JRGroup removeGroup(String groupName) {
return this.mainDesignDataset.removeGroup(groupName);
}
public JRGroup removeGroup(JRGroup group) {
return this.mainDesignDataset.removeGroup(group);
}
public Collection getExpressions() {
return JRExpressionCollector.collectExpressions((JRReport)this);
}
public JRDataset[] getDatasets() {
JRDataset[] datasetArray = new JRDataset[this.datasetList.size()];
this.datasetList.toArray((Object[])datasetArray);
return datasetArray;
}
public List getDatasetsList() {
return this.datasetList;
}
public Map getDatasetMap() {
return this.datasetMap;
}
public void addDataset(JRDesignDataset dataset) throws JRException {
if (this.datasetMap.containsKey(dataset.getName()))
throw new JRException("Duplicate declaration of dataset : " + dataset.getName());
this.datasetList.add(dataset);
this.datasetMap.put(dataset.getName(), dataset);
getEventSupport().fireCollectionElementAddedEvent("datasets", dataset, this.datasetList.size() - 1);
}
public JRDataset removeDataset(String datasetName) {
return removeDataset((JRDataset)this.datasetMap.get(datasetName));
}
public JRDataset removeDataset(JRDataset dataset) {
if (dataset != null) {
int idx = this.datasetList.indexOf(dataset);
if (idx >= 0) {
this.datasetList.remove(idx);
this.datasetMap.remove(dataset.getName());
getEventSupport().fireCollectionElementRemovedEvent("datasets", dataset, idx);
}
}
return dataset;
}
public JRDesignDataset getMainDesignDataset() {
return this.mainDesignDataset;
}
public void setMainDataset(JRDesignDataset dataset) {
Object old = this.background;
this.mainDataset = (JRDataset)(this.mainDesignDataset = dataset);
this.mainDesignDataset.setName(getName());
this.mainDesignDataset.getEventSupport().addPropertyChangeListener((PropertyChangeListener)new PropagationChangeListener(getEventSupport()));
getEventSupport().firePropertyChange("mainDataset", old, this.mainDataset);
}
public void preprocess() {
for (Iterator it = getCrosstabs().iterator(); it.hasNext(); ) {
JRDesignCrosstab crosstab = it.next();
crosstab.preprocess();
}
}
protected List getCrosstabs() {
final List crosstabs = new ArrayList();
JRElementsVisitor.visitReport((JRReport)this, (JRVisitor)new JRVisitorSupport() {
private final List val$crosstabs;
private final JasperDesign this$0;
public void visitCrosstab(JRCrosstab crosstab) {
crosstabs.add(crosstab);
}
});
return crosstabs;
}
public void setIgnorePagination(boolean ignorePagination) {
boolean old = this.ignorePagination;
this.ignorePagination = ignorePagination;
getEventSupport().firePropertyChange("ignorePagination", old, this.ignorePagination);
}
public JRExpression getFilterExpression() {
return this.mainDesignDataset.getFilterExpression();
}
public void setFilterExpression(JRExpression expression) {
this.mainDesignDataset.setFilterExpression(expression);
}
public void addTemplate(JRReportTemplate template) {
this.templateList.add(template);
getEventSupport().fireCollectionElementAddedEvent("templates", template, this.templateList.size() - 1);
}
public boolean removeTemplate(JRReportTemplate template) {
int idx = this.templateList.indexOf(template);
if (idx >= 0) {
this.templateList.remove(idx);
getEventSupport().fireCollectionElementRemovedEvent("templates", template, idx);
return true;
}
return false;
}
public JRReportTemplate[] getTemplates() {
return (JRReportTemplate[])this.templateList.toArray((Object[])new JRReportTemplate[this.templateList.size()]);
}
protected void setBandOrigin(JRBand band, byte type) {
if (band instanceof JRDesignBand) {
JROrigin origin = new JROrigin(type);
((JRDesignBand)band).setOrigin(origin);
}
}
}