first commit

This commit is contained in:
2025-07-28 13:56:49 +05:30
commit e9eb805edb
3438 changed files with 520990 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
package net.sf.jasperreports.engine.fill;
import java.io.File;
import java.io.InputStream;
import java.net.URL;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExpression;
import net.sf.jasperreports.engine.JRReportTemplate;
import net.sf.jasperreports.engine.JRRuntimeException;
import net.sf.jasperreports.engine.JRTemplate;
import net.sf.jasperreports.engine.xml.JRXmlTemplateLoader;
public class JRFillReportTemplate implements JRReportTemplate {
private final JRReportTemplate parent;
private final JRBaseFiller filler;
public JRFillReportTemplate(JRReportTemplate template, JRBaseFiller filler, JRFillObjectFactory factory) {
factory.put(template, this);
this.parent = template;
this.filler = filler;
}
public JRExpression getSourceExpression() {
return this.parent.getSourceExpression();
}
public JRTemplate evaluate() throws JRException {
JRTemplate template;
JRExpression sourceExpression = getSourceExpression();
Object source = this.filler.evaluateExpression(sourceExpression, (byte)3);
if (source == null) {
template = null;
} else {
Class sourceType = sourceExpression.getValueClass();
if (JRTemplate.class.isAssignableFrom(sourceType)) {
template = (JRTemplate)source;
} else {
template = loadTemplate(source, sourceType, this.filler.fillContext);
}
}
return template;
}
protected static JRTemplate loadTemplate(Object source, Class sourceType, JRFillContext fillContext) throws JRException {
JRTemplate template;
if (fillContext.hasLoadedTemplate(source)) {
template = fillContext.getLoadedTemplate(source);
} else {
if (String.class.equals(sourceType)) {
template = JRXmlTemplateLoader.load((String)source);
} else if (File.class.isAssignableFrom(sourceType)) {
template = JRXmlTemplateLoader.load((File)source);
} else if (URL.class.isAssignableFrom(sourceType)) {
template = JRXmlTemplateLoader.load((URL)source);
} else if (InputStream.class.isAssignableFrom(sourceType)) {
template = JRXmlTemplateLoader.load((InputStream)source);
} else {
throw new JRRuntimeException("Unknown template source class " + sourceType.getName());
}
fillContext.registerLoadedTemplate(source, template);
}
return template;
}
}