74 lines
2.2 KiB
Java
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);
|
|
}
|
|
}
|
|
}
|