package org.toobs.framework.transformpipeline.domain;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.util.Date;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerException;
import javax.xml.transform.URIResolver;
import javax.xml.transform.stream.StreamSource;
public class XslURIResolver_Main implements URIResolver {
public Source resolve(String href, String base) throws TransformerException {
StreamSource xslSource = null;
PrintWriter pw = null;
try {
File logFile = new File(System.getProperty("user.home") + "/uri-resolver.log");
pw = new PrintWriter(logFile);
pw.println("[" + new Date().toString() + "] ENTER XSLUriResolverImpl.resolve('" + href + "', '" + base + "');");
InputStreamReader reader = null;
String xslFile = href;
String libFile = base.substring(0, base.indexOf("src/xsl") + 8) + href;
libFile = libFile.replace("file:", "");
pw.println("[" + new Date().toString() + "] File path " + libFile);
File configFile = new File(libFile);
URL configFileURL = configFile.toURL();
// If the file exists, read it.
if (null != configFileURL) {
try {
reader = new InputStreamReader(configFileURL.openStream());
xslSource = new StreamSource(reader);
} catch (IOException e) {
pw.println("[" + new Date().toString() + "] XSL File " + xslFile + " had IOException " + e.getMessage());
if (reader != null) {
try {
reader.close();
} catch (IOException ignore) { }
}
throw new TransformerException("xsl " + xslFile + " cannot be loaded");
}
} else {
pw.println("[" + new Date().toString() + "] XSL File " + xslFile + " does not exist for component ");
throw new TransformerException("xsl " + xslFile + " does not exist");
}
System.out.println("EXIT XSLUriResolverImpl.resolve('" + href + "', '" + base + "');");
} catch (Exception e) {
throw new TransformerException(e.getMessage());
} finally {
if (pw != null) {
pw.close();
}
}
return xslSource;
}
}