80 lines
2.4 KiB
Java
80 lines
2.4 KiB
Java
package net.sf.jasperreports.engine.xml;
|
|
|
|
import java.io.BufferedInputStream;
|
|
import java.io.ByteArrayInputStream;
|
|
import java.io.File;
|
|
import java.io.FileInputStream;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.net.URL;
|
|
import net.sf.jasperreports.engine.JRException;
|
|
import net.sf.jasperreports.engine.JRRuntimeException;
|
|
import net.sf.jasperreports.engine.JRTemplate;
|
|
import net.sf.jasperreports.engine.util.JRLoader;
|
|
import org.apache.commons.logging.Log;
|
|
import org.apache.commons.logging.LogFactory;
|
|
import org.xml.sax.SAXException;
|
|
|
|
public class JRXmlTemplateLoader {
|
|
private static final Log log = LogFactory.getLog(JRXmlTemplateLoader.class);
|
|
|
|
public static JRTemplate load(String location) throws JRException {
|
|
byte[] data = JRLoader.loadBytesFromLocation(location);
|
|
return load(new ByteArrayInputStream(data));
|
|
}
|
|
|
|
public static JRTemplate load(File file) {
|
|
BufferedInputStream fileIn;
|
|
try {
|
|
fileIn = new BufferedInputStream(new FileInputStream(file));
|
|
} catch (FileNotFoundException e) {
|
|
throw new JRRuntimeException("Template XML file not found", e);
|
|
}
|
|
try {
|
|
return load(fileIn);
|
|
} finally {
|
|
try {
|
|
fileIn.close();
|
|
} catch (IOException e) {
|
|
log.warn("Error closing XML file", e);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static JRTemplate load(URL url) {
|
|
InputStream input;
|
|
try {
|
|
input = url.openStream();
|
|
} catch (IOException e) {
|
|
throw new JRRuntimeException("Error opening connection to template URL " + url, e);
|
|
}
|
|
try {
|
|
return load(input);
|
|
} finally {
|
|
try {
|
|
input.close();
|
|
} catch (IOException e) {
|
|
log.warn("Error closing connection to template URL " + url, e);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static JRTemplate load(InputStream data) {
|
|
JRXmlTemplateLoader loader = new JRXmlTemplateLoader();
|
|
return loader.loadTemplate(data);
|
|
}
|
|
|
|
protected JRTemplate loadTemplate(InputStream data) {
|
|
JRXmlDigester digester = JRXmlTemplateDigesterFactory.instance().createDigester();
|
|
try {
|
|
JRTemplate template = (JRTemplate)digester.parse(data);
|
|
return template;
|
|
} catch (IOException e) {
|
|
throw new JRRuntimeException("Error reading template XML", e);
|
|
} catch (SAXException e) {
|
|
throw new JRRuntimeException("Error parsing template XML", e);
|
|
}
|
|
}
|
|
}
|