package org.faceletslite.imp;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.faceletslite.ResourceReader;
public class FileResourceReader implements ResourceReader
{
private static final Logger log = Logger.getLogger(FileResourceReader.class.getName());
private final String rootDir;
private final String defaultExtension;
public FileResourceReader(String rootDir, String defaultExtension)
{
this.rootDir = rootDir;
if (!defaultExtension.startsWith(".")) {
defaultExtension = "." + defaultExtension;
}
this.defaultExtension = defaultExtension;
}
public String getRootDir()
{
return rootDir;
}
public String getDefaultExtension()
{
return defaultExtension;
}
/*
private String removeDots(String filename) {
filename = removeDots(filename, '/');
filename = removeDots(filename, '\\');
return filename;
}
private String removeDots(String filename, char pathSeparator)
{
}
*/
@Override
public InputStream read(String uri) throws IOException {
String extension = getDefaultExtension();
if (extension!=null && !uri.contains(".")) {
uri += extension;
}
String dir = getRootDir();
if (!dir.endsWith("/") && !uri.startsWith("/")) {
uri = "/"+uri;
}
String filename = dir+uri;
try
{
return new FileInputStream(filename);
}
catch (FileNotFoundException exc)
{
try
{
log.log(Level.SEVERE, "cannot find '"+filename+"', absolute path is "+new File(".").getAbsolutePath());
}
catch (Exception exc_) {
// ignore
}
throw exc;
}
}
}