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

74 lines
2.2 KiB
Java

package net.sf.jasperreports.engine.fill;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JRPrintImage;
import net.sf.jasperreports.engine.JRRenderable;
import net.sf.jasperreports.engine.JasperPrint;
import org.apache.commons.collections.ReferenceMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class JRVirtualizationContext implements Serializable {
private static final long serialVersionUID = 10200L;
private static final Log log = LogFactory.getLog(JRVirtualizationContext.class);
private static final ReferenceMap contexts = new ReferenceMap(2, 2);
private Map cachedRenderers = new HashMap();
private Map cachedTemplates = new HashMap();
private boolean readOnly;
public void cacheRenderer(JRPrintImage image) {
JRRenderable renderer = image.getRenderer();
if (renderer != null)
this.cachedRenderers.put(renderer.getId(), renderer);
}
public JRRenderable getCachedRenderer(String id) {
return (JRRenderable)this.cachedRenderers.get(id);
}
public boolean hasCachedRenderer(String id) {
return this.cachedRenderers.containsKey(id);
}
public boolean hasCachedTemplate(String id) {
return this.cachedTemplates.containsKey(id);
}
public void cacheTemplate(JRTemplateElement template) {
Object old = this.cachedTemplates.put(template.getId(), template);
if (old == null && log.isDebugEnabled())
log.debug("Cached template " + template + " having id " + template.getId());
}
public JRTemplateElement getCachedTemplate(String templateId) {
return (JRTemplateElement)this.cachedTemplates.get(templateId);
}
public boolean isReadOnly() {
return this.readOnly;
}
public void setReadOnly(boolean readOnly) {
this.readOnly = readOnly;
}
public static void register(JRVirtualizationContext context, JasperPrint print) {
synchronized (contexts) {
contexts.put(print, context);
}
}
public static JRVirtualizationContext getRegistered(JasperPrint print) {
synchronized (contexts) {
return (JRVirtualizationContext)contexts.get(print);
}
}
}