package edu.sc.seis.sod.status;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import edu.sc.seis.sod.CommonAccess;
import edu.sc.seis.sod.SodUtil;
import edu.sc.seis.sod.Start;
public class TemplateFileLoader {
public static Element getTemplate(Element el) throws MalformedURLException,
IOException, SAXException, ParserConfigurationException {
Element templateEl = SodUtil.getElement(el, "template");
if(templateEl == null || SodUtil.getNestedText(templateEl).equals("")) { throw new IllegalArgumentException("Expected the passed in element '"
+ el.getNodeName()
+ "' to have a template element, but none found"); }
return getTemplate(CommonAccess.getLoader(),
SodUtil.getNestedText(templateEl));
}
public static Element getTemplate(ClassLoader cl, String loc)
throws MalformedURLException, SAXException,
ParserConfigurationException, IOException {
URL url = getUrl(cl, loc);
InputStream in = url.openStream();
Document doc = Start.createDoc(new InputSource(in), loc);
return (Element)doc.getFirstChild();
}
public static URL getUrl(ClassLoader cl, String loc)
throws MalformedURLException {
if(loc.startsWith("jar:")) {
return cl.getResource(loc.substring(4));
} else {
try {
return new URL(loc);
} catch(MalformedURLException e) {
return new File(loc).toURL();
}
}
}
}