package com.transmem.doc;
import java.util.logging.Logger;
import java.io.IOException;
/**
* Factory pattern class for creation of text handlers for various file format such as .txt, .html.
* The types are determined by file extension only.
*
* @author Ted Wen
* @date May, 2007
*
* <p>Supported file formats:</p>
* <ul>
* <li>Plain text file (.txt)</li>
* <li>HTML file (.htm, .html)</li>
* </ul>
*/
public class FileParserFactory
{
private static Logger log_ = Logger.getLogger("FileParserFactory");
public static IFileParser createFileParser(String filename) throws IOException
{
if (filename == null || filename.equals(""))
{
log_.severe(".createFileParser(null)");
throw new IOException("filename is null");
}
int n = filename.lastIndexOf('.');
if (n <= 0)
{
log_.warning("File type "+filename+" not supported");
throw new IOException("file type in "+filename+" not supported");
}
String ext = filename.substring(n).toLowerCase();
if (ext.endsWith(".txt"))
{
return new TextParser();
}
else if (ext.endsWith(".htm") || ext.endsWith(".html"))
{
return new HtmlParser();
}
else if (ext.endsWith(".pdf"))
{
return new PdfParser();
}
else if (ext.endsWith(".rtf"))
{
return new RtfParser();
}
else if (ext.endsWith(".doc"))
{
return new DocParser();
}
else
{
throw new IOException("Unsupported file format for "+filename);
}
}
}