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

356 lines
9.3 KiB
Java

package net.sf.jasperreports.engine;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class JasperPrint implements Serializable, JRPropertiesHolder {
public static final String PROPERTIES_PRINT_TRANSFER_PREFIX = "net.sf.jasperreports.print.transfer.";
private static final long serialVersionUID = 10200L;
private static class DefaultStyleProvider implements JRDefaultStyleProvider, Serializable {
private static final long serialVersionUID = 10200L;
private JRReportFont defaultFont;
private JRStyle defaultStyle;
DefaultStyleProvider(JRReportFont font, JRStyle style) {
this.defaultFont = font;
this.defaultStyle = style;
}
public JRReportFont getDefaultFont() {
return this.defaultFont;
}
void setDefaultFont(JRReportFont font) {
this.defaultFont = font;
}
public JRStyle getDefaultStyle() {
return this.defaultStyle;
}
void setDefaultStyle(JRStyle style) {
this.defaultStyle = style;
}
}
private String name = null;
private int pageWidth = 0;
private int pageHeight = 0;
private byte orientation = 1;
private Map fontsMap = new HashMap();
private List fontsList = new ArrayList();
private Map stylesMap = new HashMap();
private List stylesList = new ArrayList();
private Map originsMap = new HashMap();
private List originsList = new ArrayList();
private List pages = new ArrayList();
private transient Map anchorIndexes = null;
private DefaultStyleProvider defaultStyleProvider = null;
private String formatFactoryClass;
private String localeCode;
private String timeZoneId;
private JRPropertiesMap propertiesMap;
public JasperPrint() {
this.defaultStyleProvider = new DefaultStyleProvider(null, null);
this.propertiesMap = new JRPropertiesMap();
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getPageWidth() {
return this.pageWidth;
}
public void setPageWidth(int pageWidth) {
this.pageWidth = pageWidth;
}
public int getPageHeight() {
return this.pageHeight;
}
public void setPageHeight(int pageHeight) {
this.pageHeight = pageHeight;
}
public byte getOrientation() {
return this.orientation;
}
public void setOrientation(byte orientation) {
this.orientation = orientation;
}
public boolean hasProperties() {
return (this.propertiesMap != null && this.propertiesMap.hasProperties());
}
public JRPropertiesMap getPropertiesMap() {
return this.propertiesMap;
}
public JRPropertiesHolder getParentProperties() {
return null;
}
public String[] getPropertyNames() {
return this.propertiesMap.getPropertyNames();
}
public String getProperty(String propName) {
return this.propertiesMap.getProperty(propName);
}
public void setProperty(String propName, String value) {
this.propertiesMap.setProperty(propName, value);
}
public void removeProperty(String propName) {
this.propertiesMap.removeProperty(propName);
}
public JRReportFont getDefaultFont() {
return this.defaultStyleProvider.getDefaultFont();
}
public void setDefaultFont(JRReportFont font) {
this.defaultStyleProvider.setDefaultFont(font);
}
public JRDefaultFontProvider getDefaultFontProvider() {
return this.defaultStyleProvider;
}
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 synchronized void addFont(JRReportFont reportFont) throws JRException {
addFont(reportFont, false);
}
public synchronized void addFont(JRReportFont reportFont, boolean isIgnoreDuplicate) throws JRException {
if (this.fontsMap.containsKey(reportFont.getName())) {
if (!isIgnoreDuplicate)
throw new JRException("Duplicate declaration of report font : " + reportFont.getName());
} else {
this.fontsList.add(reportFont);
this.fontsMap.put(reportFont.getName(), reportFont);
if (reportFont.isDefault())
setDefaultFont(reportFont);
}
}
public synchronized JRReportFont removeFont(String fontName) {
return removeFont((JRReportFont)this.fontsMap.get(fontName));
}
public synchronized JRReportFont removeFont(JRReportFont reportFont) {
if (reportFont != null) {
if (reportFont.isDefault())
setDefaultFont(null);
this.fontsList.remove(reportFont);
this.fontsMap.remove(reportFont.getName());
}
return reportFont;
}
public JRStyle getDefaultStyle() {
return this.defaultStyleProvider.getDefaultStyle();
}
public synchronized void setDefaultStyle(JRStyle style) {
this.defaultStyleProvider.setDefaultStyle(style);
}
public JRDefaultStyleProvider getDefaultStyleProvider() {
return this.defaultStyleProvider;
}
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 synchronized void addStyle(JRStyle style) throws JRException {
addStyle(style, false);
}
public synchronized void addStyle(JRStyle style, boolean isIgnoreDuplicate) throws JRException {
if (this.stylesMap.containsKey(style.getName())) {
if (!isIgnoreDuplicate)
throw new JRException("Duplicate declaration of report style : " + style.getName());
} else {
this.stylesList.add(style);
this.stylesMap.put(style.getName(), style);
if (style.isDefault())
setDefaultStyle(style);
}
}
public synchronized JRStyle removeStyle(String styleName) {
return removeStyle((JRStyle)this.stylesMap.get(styleName));
}
public synchronized JRStyle removeStyle(JRStyle style) {
if (style != null) {
if (style.isDefault())
setDefaultStyle(null);
this.stylesList.remove(style);
this.stylesMap.remove(style.getName());
}
return style;
}
public JROrigin[] getOrigins() {
return (JROrigin[])this.originsList.toArray((Object[])new JROrigin[this.originsList.size()]);
}
public List getOriginsList() {
return this.originsList;
}
public Map getOriginsMap() {
return this.originsMap;
}
public synchronized void addOrigin(JROrigin origin) {
if (!this.originsMap.containsKey(origin)) {
this.originsList.add(origin);
this.originsMap.put(origin, new Integer(this.originsList.size() - 1));
}
}
public synchronized JROrigin removeOrigin(JROrigin origin) {
if (this.originsMap.containsKey(origin)) {
this.originsList.remove(origin);
this.originsMap = new HashMap();
for (int i = 0; i < this.originsList.size(); i++)
this.originsMap.put(this.originsList.get(i), new Integer(i));
}
return origin;
}
public List getPages() {
return this.pages;
}
public synchronized void addPage(JRPrintPage page) {
this.anchorIndexes = null;
this.pages.add(page);
}
public synchronized void addPage(int index, JRPrintPage page) {
this.anchorIndexes = null;
this.pages.add(index, page);
}
public synchronized JRPrintPage removePage(int index) {
this.anchorIndexes = null;
return this.pages.remove(index);
}
public synchronized Map getAnchorIndexes() {
if (this.anchorIndexes == null) {
this.anchorIndexes = new HashMap();
int i = 0;
for (Iterator itp = this.pages.iterator(); itp.hasNext(); i++) {
JRPrintPage page = itp.next();
Collection elements = page.getElements();
collectAnchors(elements, i, 0, 0);
}
}
return this.anchorIndexes;
}
protected void collectAnchors(Collection elements, int pageIndex, int offsetX, int offsetY) {
if (elements != null && elements.size() > 0) {
JRPrintElement element = null;
for (Iterator it = elements.iterator(); it.hasNext(); ) {
element = it.next();
if (element instanceof JRPrintAnchor)
this.anchorIndexes.put(((JRPrintAnchor)element).getAnchorName(), new JRPrintAnchorIndex(pageIndex, element, offsetX, offsetY));
if (element instanceof JRPrintFrame) {
JRPrintFrame frame = (JRPrintFrame)element;
collectAnchors(frame.getElements(), pageIndex, offsetX + frame.getX(), offsetY + frame.getY());
}
}
}
}
public String getFormatFactoryClass() {
return this.formatFactoryClass;
}
public void setFormatFactoryClass(String formatFactoryClass) {
this.formatFactoryClass = formatFactoryClass;
}
public String getLocaleCode() {
return this.localeCode;
}
public void setLocaleCode(String localeCode) {
this.localeCode = localeCode;
}
public String getTimeZoneId() {
return this.timeZoneId;
}
public void setTimeZoneId(String timeZoneId) {
this.timeZoneId = timeZoneId;
}
}