package org.nate; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import org.nate.encoder.Dom4jEncoder; import org.nate.encoder.Dom4jFragmentEncoder; import org.nate.encoder.HtmlEncoder; import org.nate.encoder.HtmlFragmentEncoder; import org.nate.exception.IONateException; import org.nate.internal.NateDocumentBackedEngine; public final class Nate { private Nate() { } private static Encoders encoders = new Encoders(); static { encoders.register(new HtmlEncoder()); encoders.register(new HtmlFragmentEncoder()); encoders.register(new Dom4jEncoder()); encoders.register(new Dom4jFragmentEncoder()); } public static Engine newWith(InputStream source, Encoder encoder) { return new NateDocumentBackedEngine(source, encoder); } public static Engine newWith(String source, Encoder encoder) { return new NateDocumentBackedEngine(source, encoder); } public static Engine newWith(String source) { return newWith(source, encoders.encoderFor("XMLF")); } public static NateDocumentBackedEngine newWith(File file) { InputStream inputStream = null; try { inputStream = new BufferedInputStream(new FileInputStream(file)); Encoder encoder = encoders.encoderFor(file); return new NateDocumentBackedEngine(inputStream, encoder); } catch (FileNotFoundException e) { throw new IONateException(e); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { throw new IONateException(e); } } } } public static Encoders encoders() { return encoders; } }